概要
EC2にてよく使うアプリケーションサーバーの構築手順を紹介します。(未来の私のためにw)
各種設定は、Laravelを動かすイメージです。
不定期ですが、更新します。
環境
- Amazon Linux 2023
- nginx 1.24.0
- PHP 8.2.18
- Composer 2.7.7
- Laravel 11系
手順
1. システム設定
EC2 サーバー構築(基本設定)に詳細手順を記載しています。
2. Nginx
インストール
インストール可能なパッケージの一覧を表示
$ sudo dnf list --available nginx
メタデータの期限切れの最終確認: 0:15:49 時間前の 2024年06月14日 10時45分23秒 に実施しました。
利用可能なパッケージ
nginx.x86_64 1:1.24.0-1.amzn2023.0.2 amazonlinux
インストール
$ sudo dnf -y install nginx
バージョン確認
$ nginx -v
nginx version: nginx/1.24.0
起動設定
#起動
$ sudo systemctl start nginx.service
#自動起動
$ sudo systemctl enable nginx.service
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
#自動起動確認
$ sudo systemctl is-enabled nginx.service
enabled
#状態確認
$ sudo systemctl status nginx.service
Active: active (running)
# 権限付与
$ sudo chmod 777 -R /var/log/nginx
conf設定
sudo vi /etc/nginx/conf.d/app.conf
app.conf
server {
listen 80;
listen [::]:80;
server_name example.com;
root /srv/example.com/public;
server_tokens off;
etag off;
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
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:/var/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_hide_header X-Powered-By;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
server_name
:
サーバ名は、server_name ディレクティブで定義することができ、指定されたリクエストにどのserverブロックが使われるかを決定する。
- ドメインを設定する場合:
develop.test.com
- IPアドレスを設定する場合:
XX.XXX.XXX.XX
- 複数指定する場合:
www.test.com test.com
server_tokens: off;
:
nginxのバージョンを表示しないようにする。
add_header X-XSS-Protection "1; mode=block";
クロスサイト・スクリプティングの潜在的な脆弱性対策として有効なブラウザの機能を有効にするレスポンスヘッダを返す。
チェックと再起動
$ sudo nginx -t
$ sudo systemctl restart nginx.service
確認
$ curl 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
3. PHP
インストール
$ sudo dnf install -y php-fpm php-mysqli php-json php php-devel
バージョン確認
$ php -v
PHP 8.2.18 (cli) (built: Apr 9 2024 18:46:23) (NTS gcc aarch64)
Copyright (c) The PHP Group
Zend Engine v4.2.18, Copyright (c) Zend Technologies
with Zend OPcache v8.2.18, Copyright (c), by Zend Technologies
$ php-fpm -v
PHP 8.2.18 (fpm-fcgi) (built: Apr 9 2024 18:46:23)
Copyright (c) The PHP Group
Zend Engine v4.2.18, Copyright (c) Zend Technologies
with Zend OPcache v8.2.18, Copyright (c), by Zend Technologies
php設定
php.ini
この辺はお好みでどうぞ(笑)
$ sudo vi /etc/php.ini
/etc/php.ini
expose_php = Off
memory_limit = 256M
date.timezone = Asia/Tokyo
mbstring.language = Japanese
userとgroupの値をnginxに変更
sudo vi /etc/php-fpm.d/www.conf
/etc/php-fpm.d/www.conf
user = apache
group = apache
↓
user = nginx
group = nginx
PHP拡張インストール
この辺もお好みでどうぞ~
$ sudo dnf -y install php-gd php-zip
PHP Intlを入れる場合
ICUを先に入れる必要があります。
$ sudo dnf -y install icu
$ sudo dnf -y install php-intl
php-fpmとnginxを再起動
$ sudo systemctl restart php-fpm.service
$ sudo systemctl restart nginx.service
4. composer インストール
composerも入れておきまーす。
$ cd /home/ec2-user
$ sudo curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
$ composer -v
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.7.7 2024-06-10 22:11:12