ラムネグから一言:寝る前に読むとくだらなすぎて逆に寝れると好評なすごい適当なブログをこっちではじめてます.
コアサーバーにlaravelを入れる
laravelってプロジェクトの作り方とかは公式マニュアルにもちゃんと載ってるのに、いざ本番サーバーに移動させようとするといきなり説明がなくなって困っちゃいますよね。
という事で、ここではコアサーバーにローカルで作ったlaravelプロジェクトを入れる方法を簡単に紹介します。
なんでそのコマンドが必要なの?とかなんでこんなのインストールしないといけないの?などなど、考え方ややってることの細かな説明は別途違う記事でしようと思っています。
- コアサーバーにlaravelを入れる
- 1.まずはssh接続
- 2.注意点
- 3.composerのインストール
- 4.git clone
- 5.composer installの実行
- 6.「.env」をアップロード
- 7.migrateの実行
- 8.API KEY作成
- 9.エイリアスを切る
- 接続チェック
- まとめ
- おまけ
1.まずはssh接続
まずはssh(自分のパソコンからコアサーバーを操作できる)でコアサーバーに接続していきます。まずはコアサーバーの管理画面で「SSH接続IP許可」をクリック。5分くらい待つように言われるので待つ。その後、ウィンドウズの場合だと「cmd」で、
ssh -l コアサーバーのユーザー名 コアサーバーのドメイン名
で、その後コアサーバーの管理画面にあるftpのパスワードを入力するとログインできます。
2.注意点
コアサーバーではコマンドラインで「php」と普通にたたくとcgi版の方が動く。でもcgi版ではできる事が少ない(コマンドオプションが少ない)ようなので明示的に「/usr/local/bin/php71cli」としてcli版phpを叩く。
下みたいな感じ。
/usr/local/bin/php71cli -v
3.composerのインストール
レンタルサーバーにインストールって聞くと他の人に影響しないかドキドキしちゃいますが、インストールと言ってもただフォルダができるだけなので大丈夫(なはず)。
やり方はcomposerの公式サイト「getting started」のやり方で。
途中crcチェック(ファイルに欠損がないかのチェック)みたいなことをしている(長ったらしい数字が並んでるとこ)ので、必ずcomposerの公式サイトのコマンドをコピペして実行してくださいね。
ちなみに公式サイトでは「php」と書いていますが、「/usr/local/bin/php71cli」とか「/usr/local/bin/php72cli」にするのでしたね。
4.git clone
githubとかbitbucketなどに入れてある自分のlaravelプロジェクトをまるまるクローン。
5.composer installの実行
「composer install」はcomposerをインストールするコマンドじゃないです(もうすでに③の手順でcomposerのインストールは済んでるのでした)。laravelプロジェクトにvendorフォルダを作成するためのコマンドです。今は「フーン。あっそ」で進んでください。
ssh上でlaravelプロジェクトに移動して、
/usr/local/bin/php71cli ../composer.phar install
composer.pharは手順3でインストールしたcomposerです。場所は各自、自分の環境に合わせてくださいね。
- 追記:2023/11/01
-
サービスプロバイダー(ViewServiceProvider.phpなど)で共通変数を設定している場合で、かつ、その共通変数をデータベースから取得してる場合、このinstallでエラーが出ます。
こんなエラーが出る
SQLSTATE[HY000] [1045] Access denied for ~ Script @php artisan package:discover –ansi handling the post-autoload-dump event returned with error code 1これはデータベースに接続できてないよ!って怒ってるので、先に手順⑥でenvファイルをアップロードし、データベースとの接続を済ませておけば無事通ります。
また、データベースと接続していても今度はテーブルがないので、エラーが出ますが、こちらはそもそもサービスプロバイダー内で、SQLを発行する前にテーブルの存在チェックを行い、テーブルがあればSQLを発行するようにすれば防げます。
例:カテゴリ一覧を共通変数として持たせる場合
if (Schema::hasTable('categories')) { View::share('categories', Category::all()); }
ちなみにSchemaは通常useされてないので、ファイル冒頭で「use Illuminate\Support\Facades\Schema;」を追加しておいてくださいね。
6.「.env」をアップロード
「.env」にデータベース名などローカルとは違ってくる部分を編集してからコアサーバーにアップロードします。
これはブラウザ上からやっちゃいましょう。
7.migrateの実行
laravelプロジェクトがデータベースを使うものだったのなら、migrateを行ってテーブルを作成します。
コアサーバーの管理パネルで空のデータベースを作成した後、下記コマンドをssh上で実行。
/usr/local/bin/php71cli artisan migrate
8.API KEY作成
しなくてもいいのかもしれませんが、API KEYを新しく作り直します。API KEYというのはログイン処理の時とかに使ってるものでバレたらダメなやつらしいので作り直してます。
/usr/local/bin/php71cli artisan key:generate
9.エイリアスを切る
さあラストです!
コアサーバーではpublic_html内の各ドメイン名のフォルダがブラウザで表示されるので、まずはpublic_htmlに自動で作成されるドメイン名のフォルダを削除します。
cd public_html
rm -d ドメイン名
そのあと、消したフォルダ名と同じ名前でシンボリックリンクを張ります。
こうするとブラウザ上からlaravelが表示されるようになります。
ln -s /virtual/ユーザー名/laravelプロジェクト名/public/ ドメイン名
※このときlaravelプロジェクトの方は「public」を指定すること。さらに絶対パス「virtualから」で指定すること。
接続チェック
これで後はURLに接続すると…自分の作ったlaravelプロジェクトがちゃんと表示されるはずです。
他のレンタルサーバーとの違いでいうと、phpを明示的に呼ぶところと、シンボリックリンクの張り方くらいだと思います。
まとめ
laravelは開発の手引きはとても手厚いのですが実際に本番環境に移すときが一番しんどい気がします。
このやり方でコアサーバーに移行できますし、ほかのレンタルサーバーでもほとんどやり方は同じだと思います。参考にしてみてくださいね。
おまけ
- doctrine/dbalを入れる
-
/usr/local/bin/php71cli ../../composer.phar require doctrine/dbal
- intervention/imageを入れる
-
/usr/local/bin/php71cli ../../composer.phar require intervention/image
いずれにしても普通に「composer require 〇〇」じゃダメ
【おしらせ、というか完全なる宣伝】
文体がもうぜんぜん適当すぎてあれだけどものすごい自由に書いてるブログ「檸檬だくだく」もよろしく.寝る前に読める恐ろしくくだらないやつです.
こんなにも一ミリも目を引かれないタイトルを取り扱ってます: ココア20g / ハイチュウとかってさ / なぜ米と小麦を食べようと思ったのかの謎 /