概要
サーバにインストールしたUbuntu 22.04環境で本番向けのLaravelアプリケーションを動かします。
nginxはhttpのウェブサーバで、php-fpmとはPHPのCGI(ウェブサーバでスクリプトを実行して、動的コンテンツを生成する仕組み)です。
今回はnginxをウェブサーバとして動かして、php-fpmと連携させることでLaravelのアプリケーションが動作するようにしていきます。
今回は、dockerなどのコンテナは使用せずに、ubuntu上に直接必要なソフトウェアをインストールしていきます。
必要なパッケージのインストール
nginxのインストール
$ sudo apt update
$ sudo apt install nginx
PHPのインストール
$ sudo apt update
$ sudo apt install php
PHPはデフォルトだと、8.1のバージョンがインストールされます。
$ php --version
PHP 8.1.2 (cli) (built: Aug 8 2022 07:28:23) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies
PHP-fpmのインストール
$ sudo apt install php-fpm
composerのインストール
Laravelアプリの構築に必要になります。
$ curl -sS https://getcomposer.org/installer | php
$ mv ./composer.phar /usr/local/bin/composer
$ composer --version
Composer version 2.4.3 2022-10-14 16:56:41
nodejsのインストール
$ sudo apt install nodejs npm
$ node --version
v12.22.9
設定
nginxとphp-fpmの連携の設定
default.confを修正する
$ sudo vim /etc/nginx/sites-available/default
server {
listen 80;
root /app/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php$query_string;
}
location = /favicon.ico {
access_log off;
log_not_found off;
}
location = /robots.txt {
access_log off;
log_not_found off;
}
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
設定変更後はnginxを再起動する
$ sudo systemctl restart nginx
Laravelアプリを配置する
何らかの方法でサーバにソースを配置してプロジェクトに移動する。
PHPの必要なパッケージをインストール
$ sudo apt install php-dom php-curl php-mbstring
unzipがないとワーニングが出るのでインストール
$ sudo apt install unzip
composerで必要なパッケージをインストール
$ composer update
viewをビルドする
$ npm install
$ npm run prod
Laravelのアプリケーションの構築
ドキュメントルートにLaravelのプロジェクトを配置する。
今回の場合は /app
$ sudo mv <prodject> /app
$ cd /app
本番用の .envを生成する
$ sudo cp .env.example .env.prod
$ sudo php artisan key:generate
キャッシュを生成する
$ sudo php artisan config:cache --env=prod
$ sudo php artisan route:cache --env=prod
$ sudo php artisan view:cache --env=prod
コピーしたenvファイルを環境に合わせて修正する。
ストレージにnginxのユーザ(www-data)でアクセスできるようにする。
$ sudo chown www-data:www-data /app
おわり
ユーザの権限など細かいところは端折ってますが、とりあえずここまでやるとnginxとphp-fpmを使ってLaravelのアプリケーションを動かせるようになります。