1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

(Amazon Linux 2023)AWS EC2にデプロイする③ Nginxをインストールする〜php-fpmとNginxを連携する

Posted at

はじめに

前回からの続きです。

前提

  • インスタンス作成時に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

おおまかな流れについて

おおまかな流れは下記のとおりです。

  1. AWSでEC2のインスタンスを起動する(①で説明済)
  2. 起動したインスタンスにElastic IP(固定IP)を関連付ける(①で説明済)
  3. EC2サーバの初期設定を行う(②で説明済)
  4. PHPと拡張モジュールをインストールする(②で説明済)
  5. Composerをインストールする(②で説明済)
  6. mariaDBをインストールする(②で説明済)
  7. Nginxをインストールする
  8. php-fpmとNginxを連携する
  9. GitHubとSSH接続する
  10. GitHubからmainブランチのコードをクローンする
  11. Laravelの初期設定を行う
  12. RDSと連携する
  13. 独自ドメインを設定する
  14. 独自ドメインのSSL認証を行う
  15. 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アドレスに記載されているアドレスをコピーして、ブラウザのアドレスバーで検索します。

01_A22-16_01_GML.png

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

下記のとおり変更します。

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;となります。

nginx.conf
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アドレスに記載されているアドレスをコピーして、ブラウザのアドレスバーで検索します。

01_A22-16_01_GML.png

最後に、表示確認用に作成したファイルとディレクトリを削除します。

ターミナル
sudo rm -rf /var/www/your_project_name/

これで、php-fpmとNginxの連携設定は完了です。

おわりに

今回は、Nginxをインストールするところからphp-fpmとNginxを連携するところまで記事化しました。次回は、GitHubとSSH接続するところから記事化したいと思います。

間違っている点や補足情報等ありましたら、ご教授いただけますと幸いです!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?