Laravel のプロジェクトをデプロイする

Posted on
Laravel Composer Ubuntu Nginx PHP

Laravel 5.5 でお問い合わせフォームを作りました。 デプロイについて書きます。

作ったもの

お問い合わせフォーム

確認画面なく、送信ボタンを押したらすぐ送信なので注意。 Laravelでお問い合わせフォームを作ってみる をおおいに参考にして作りました。

デプロイ

公式ドキュメント Deployment にデプロイについて書いてあるのですが、そもそも環境構築からやらなければいけなかったので、そのあたりを書きます。

Composer のインストール

Installation - Linux / Unix / OSX を見て、VPS に Composer をインストールします。私はグローバルにインストールしました。

PHP の設定

ローカルで開発したソースコードを Git でクローンしてきて、

composer update --no-scripts
composer install --optimize-autoloader

で依存パッケージを入れます。

私はここで PHP に足りない拡張がありインストールできなかったので入れました。

sudo apt install php7.1-mbstring
sudo apt install php7.1-xml

さらに

PHP Warning:  PHP Startup: Unable to load dynamic library 'php_mbstring.dll'

みたいなエラーが出るときは、PHP.ini の設定が間違っています。~.dll は Windows 用のファイルなので、Ubuntu では読み込めないです。

php -i | grep php.ini

とコマンドを叩き、php.ini の場所を探します。 見つけたファイルを開き、エラーで言われている dll を読み込もうとしている部分をコメントアウトします。

アプリケーションキーを設定

ソースを Git からクローンしてきたときは

php artisan key:generate

でキーを設定します。 その他、production 用の設定を済ませます。

MySQL の設定

php artisan migrate

したときに ‘could not find driver’ みたいなエラーが出ました。これも PHP の拡張が足りないです。

sudo apt install php7.1-mysql

でドライバをインストールします。

Nginx の設定

公式のデプロイガイドに従って Nginx の設定をしたのですが、PHP が動いてくれませんでした。 結論を述べると、公式のデプロイガイドに書いてある設定に追記する必要がありました。

location ~ \.php$ で始まるブロックに、下記の4行目 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; を追加したら動くようになりました。

location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/run/php/php7.1-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
}

今後

とりあえず動くようにはなったのですが、本当はメインの静的サイト https://84b9cb.info に組み込みたいという気持ちがあり、ちょっと模索するかもしれません。