Laravelで作ったWebアプリをサーバにアップロード(デプロイ)する方法

Laravelでアプリを作った時、サーバにアップロードする方法が分からなかったので、同様に悩まれてる方向けに、書いています。

はじめに

はじめてLaravelでアプリを開発して、いざサーバへアップロードという時に、いつも通りFFFTPというソフトを使って、FTP経由でアップロードしようとしたところ、思った以上のファイル数にびっくり。まったくアップロードが終わる気配がありません。小一時間後やっと終わったが、途中送信エラーもいくつかあった。
それでも、サーバ上ではちゃんと動いてくれた。つまりファイルをすべてアップロードすれば、サーバ上でもちゃんと動くことがわかった。

しかし毎回これはしんどい。他にいい方法があるはずだと調べたところ、Gitを使ったアップロード方法が見つかった。実際にこちらの方法を使ってみた結果、とても速くて確実で更新作業も簡単だという事がわかりました。

しかし!初心者の自分には導入がとてつもなく大変だった。。。ので、同じような初心者の方向けと、自分用の備忘録として残しておく事にしました。
ここで紹介する方法は、Gitを扱える方なら、さほど大変ではないと思いますが、Gitから導入する場合は、かなり根気がいります。

データのアップロード

データのアップロードは、上記で書いたように、Gitを使って行います。
Gitを使ったアップロードは、Laravelに限らず、あらゆるアプリのアップロード時に使えるので、別記事で一度紹介しています。ですので、そちらを参考にやってみてください。

Gitを使ってホームページをレンタルサーバにアップロードする方法(エックスサーバー、さくらのレンタルサーバ)

別記事では、主に以下の事をしています。
・Gitの導入
・サーバとのSSH接続
・Gitでデータをアップロード

注意点

上記の方法は、一般的なホームページなどの場合を想定してますが、Laravelの場合は、データのアップロード先を、サーバの非公開ディレクトリにする事をおすすめします。

非公開ディレクトリにデータを置いて、公開ディレクトリからデータを参照させるように設定する必要があります。
設定方法は、下記の過去記事↓

【Laravel】エックスサーバで、ドメイン名でアクセスできるようにする

アップロード後にすること

データをすべてアップロードしたら、

・ライブラリインストール
・データベース作成(必要な場合)
・.envファイルの用意
・マイグレーション(必要な場合)

の順で、作業します。

ライブラリインストール

とりあえず最初にこれを実行しとく。

$ composer install

本当に魔法のコマンド♪
これだけで全て揃ってしまう。

composerはエックスサーバーには初めから入っていますが、さくらインターネットはインストールする必要があります。

さくらインターネットにcomposerをインストールする(初心者向け)

PHPのバージョンが一致しない事が原因で、エラーが出る場合があります。そんな時の対応策は、こちら↓

composer install でエラー、PHPのバージョンの違い(エックスサーバ)

データベースの作成

こちらは、必要な場合のみ。(たいてい必要ですかね)
具体的な手順は省略します。
各サーバのマニュアルにそって作成してください。

.envファイルの用意

ローカルで作成したものは、Gitでは除外されていますので、サーバにはアップロードされていないと思います。
なので、サーバ用に新しく用意します。

プロジェクトディレクトリ直下に、.env.exampleというテンプレートファイルが用意されていると思いますので、そちらをコピー、またはリネームして、.envファイルを作ります。

そして、何箇所か編集します。

APP_NAME=Laravel ←アプリ名
APP_ENV=local
APP_KEY= ←KEYを入れる
APP_DEBUG=true
APP_URL=http://localhost ←アプリのURL

APP_KEYは、以下のコマンドで自動的に入力されます。

$ php artisan key:generate

その他に、データベースを使う場合は、

DB_CONNECTION=mysql ←管理システムを指定
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel ←作成したデータベース名
DB_USERNAME=root ←ユーザー名
DB_PASSWORD= ←接続パスワード

それぞれ入力します。
他、必要な箇所があれば編集します。

編集後、忘れがちなのが、

$ php artisan config:cache

編集しても編集しても反映されない現象に遭遇する人も多いのではないでしょうか?(はい。私です)

マイグレーション

データベースを使う場合は、テーブルも作成します。

$ php artisan migrate

マイグレーションファイルの作成や、マイグレーションの詳細は、過去記事をご覧ください。

【Laravel6.0】データベースへのアクセスから操作方法まで(マイグレーションなど)

まとめ

以上で、ローカルで作ったLaravelアプリがサーバでも動くようになったと思います。

大半、特にデータのアップロード部分を、過去記事で紹介していますが、けっこう作業数が多くて大変ですね。一度覚えてしまえば、それほどでもないのですが、しばらくやってないと忘れるので、自分用も兼ねてご紹介させていただきました。