3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS EC2 サーバー構築(nginx, PHP, Composer編)

Last updated at Posted at 2021-06-18

概要

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

参考

3
6
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
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?