はじめに
前回からの続きです。
前提
- インスタンス作成時にAmazon マシンイメージ (AMI)でAmazon Linux 2023を選択された方向けです
- Amazon Linux2を選択された方も手順は同じですが、Linuxコマンドが異なります
- AMIの調べ方は、EC2サーバーにSSH接続をし、下記のコマンドを入力すると確認できます
cat /etc/os-release
環境
- PHP 8.2
- Laravel 11
- mariaDB 10.5.23
- Nginx 1.24.0
- GitHub
おおまかな流れについて
おおまかな流れは下記のとおりです。
-
AWSでEC2のインスタンスを起動する(①で説明済) -
起動したインスタンスにElastic IP(固定IP)を関連付ける(①で説明済) -
EC2サーバの初期設定を行う(②で説明済) -
PHPと拡張モジュールをインストールする(②で説明済) -
Composerをインストールする(②で説明済) -
mariaDBをインストールする(②で説明済) - Nginxをインストールする
- php-fpmとNginxを連携する
- GitHubとSSH接続する
- GitHubからmainブランチのコードをクローンする
- Laravelの初期設定を行う
- RDSと連携する
- 独自ドメインを設定する
- 独自ドメインのSSL認証を行う
- 2回目以降のデプロイについて
Nginxをインストールする
下記のコマンドでインストール可能なパッケージを確認できます。
sudo dnf list --available nginx
下記のコマンドを実行することで、最新バージョンがインストールされます。
sudo dnf -y install nginx
バージョンを指定してインストールしたい場合
バージョン1.20.2をインストールする
sudo dnf install nginx-1.20.2
インストールが完了したら、インストールされたNginxのバージョンを確認します。
nginx -v
Nginxを起動します。
sudo systemctl status nginx.service
起動されているか確認します。
sudo systemctl status nginx.service
Nginxが自動で起動されるよう設定します。
sudo systemctl enable nginx.service
自動起動設定がされているか確認します。
sudo systemctl is-enabled nginx.service
最後に動作確認を行います。
まずは、curlコマンドで確認します。
curl -s http://localhost | grep title
次に、ブラウザで確認します。
パブリック IPv4アドレスに記載されているアドレスをコピーして、ブラウザのアドレスバーで検索します。
Nginx のトップページが表示されブラウザから正常に表示されていることが確認できれば、完了です。
php-fpmとNginxを連携する
php-fpmの設定を行う
まずは、php-fpmを起動します。
sudo systemctl start php-fpm.service
起動確認を行います。
sudo systemctl status php-fpm.service
php-fpmの自動起動を有効にします。
sudo systemctl enable php-fpm.service
自動起動設定が有効になっているか確認します。
sudo systemctl is-enabled php-fpm.service
続いて、php-fpmの設定ファイルであるwww.confファイルを修正します。
まずは、修正権限のあるルートユーザーにスイッチします。
sudo su -
修正前に念の為バックアップを作成します。www.confファイルのあるディレクトリに移動します。
cd /etc/php-fpm.d/
コピーを作成します。
sudo cp www.conf www.conf_bk_yyyyMMdd
コピー作成後、vimを使って、編集します。
vim www.conf
下記のとおり変更します。
# 24行目あたり
# 変更前
user = apache
# 変更後
user = nginx
# 26行目あたり
# 変更前
group = apache
# 変更後
group = nginx
# 48行目あたり
# 変更前
;listen.owner = nobody
# 変更後
listen.owner = nginx
# 49行目あたり
# 変更前
;listen.group = nobody
# 変更後
listen.group = nginx
# 50行目あたり
# 変更前
;listen.mode = 0660
# 変更後
listen.mode = 0660
vimエディターの操作方法がわからない場合は、下記の記事が参考になります。
https://zenn.dev/masatotezuka/articles/vim_command_220225
変更後、php-fpmを再起動します。
sudo systemctl restart php-fpm.service
起動確認を行います。
sudo systemctl status php-fpm.service
これで、php-fpmの設定は終了です。
Nginxの設定を行う
まずは、Nginxが起動されているか確認します。
sudo systemctl status nginx.service
Nginxの設定ファイルであるnginx.confを修正する前に念の為、バックアップ作成します。
nginx.confファイルがあるディレクトリに移動します。
cd /etc/nginx/
コピーを作成します。
sudo cp nginx.conf nginx.conf_bk_yyyyMMdd
コピー作成後、vimを使って、編集します。
sudo vim nginx.conf
http配列の中のserver配列の中身を変更します。
your_project_nameの部分は、GitHubのディレクトリ構成に応じて変更が必要です。
私の構成では、/var/www/app/laravel/public;となります。
server {
listen 80;
listen [::]:80;
server_name _;
root /var/www/your_project_name/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 ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
}
保存後、構文チェックを行います。
sudo nginx -t
結果が下記のとおりであれば問題ないです。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
次に、Nginxを再起動します。
sudo systemctl restart nginx
起動確認を行います。
sudo systemctl status nginx.service
設定が有効か確認するため、nginx.conf変更時に指定したドキュメントルートを作成し、htmlファイルを作成し、表示できることを確認します。
sudo mkdir -p /var/www/your_project_name/public
cd /var/www/your_project_name/public
sudo touch index.html
sudo vim index.html
ブラウザで表示確認を行います。
パブリック IPv4アドレスに記載されているアドレスをコピーして、ブラウザのアドレスバーで検索します。
最後に、表示確認用に作成したファイルとディレクトリを削除します。
sudo rm -rf /var/www/your_project_name/
これで、php-fpmとNginxの連携設定は完了です。
おわりに
今回は、Nginxをインストールするところからphp-fpmとNginxを連携するところまで記事化しました。次回は、GitHubとSSH接続するところから記事化したいと思います。
間違っている点や補足情報等ありましたら、ご教授いただけますと幸いです!