LoginSignup
3
6

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-06-18

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

概要

EC2にてよく使うアプリケーションサーバーの構築手順を紹介します。(未来の私のためにw)
各種設定は、AWSのロードバランサーとEC2を使って、Laravelを動かすイメージです。
そのイメージの方はほぼそのまま使ってもらえると思いますー。

環境

  • Amazon Linux2
  • nginx 1.12.1
  • PHP 8.0.6
  • Composer 2.1.3

手順

1. システム設定

EC2 サーバー構築(基本設定)に詳細手順を記載しています。

2. Nginx

インストール

# nginxのトピックを確認
$ amazon-linux-extras list | grep nginx
38  nginx1                   available    [ =stable ]

$ amazon-linux-extras info nginx1
nginx1 recommends nginx                      # yum install nginx

$ sudo amazon-linux-extras install nginx1.12

$ nginx -v
nginx version: nginx/1.12.1

起動設定

#起動
$ sudo systemctl start nginx.service

#自動起動
$ sudo systemctl enable nginx.service

#自動起動確認
$ sudo systemctl is-enabled nginx.service
enabled

#状態確認
$ sudo systemctl status nginx.service
Active: active (running)

# 権限付与
$ sudo chmod 777 -R /var/log/nginx

サーバー名の長さ調整(DNSが長い場合など)

sudo vi /etc/nginx/nginx.conf

httpブロックのkeealive_timeouttypes_hash_max_sizeの間くらいにserver_names_hash_bucket_sizeを追記します。

/etc/nginx/nginx.conf
keepalive_timeout   65;
server_names_hash_bucket_size 128;
types_hash_max_size 2048;

タイムアウト設定

sudo vi /etc/nginx/nginx.conf
/etc/nginx/nginx.conf
keepalive_timeout   65;

keepalive_timeout   300;

独自の設定ファイル作成

sudo vi /etc/nginx/conf.d/app.conf
app.conf
server {
    listen       80;
    server_name  {サーバー名};
    index        index.php;
    root         {ドキュメントルート};
    charset      utf-8;
    etag         off;
    add_header   X-Content-Type-Options nosniff;
    add_header   X-XSS-Protection "1; mode=block";

    location / {
        try_files $uri $uri/ /index.php?$query_string;
        index  index.html index.php;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.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;
    }
}

サーバー名の例:

  • ドメインを設定する場合: develop.test.com
  • ロードバランサーを設定する場合: test-internal-1111111111.ap-northeast-1.elb.amazonaws.com

チェックと再起動

$ sudo nginx -t
$ sudo systemctl restart nginx.service

3. PHP

インストール

# nginxのトピックを確認
$ amazon-linux-extras list | grep php
 15  php7.2                   available    \
 17  lamp-mariadb10.2-php7.2  available    \
 31  php7.3                   available    \
 42  php7.4                   available    [ =stable ]
 51  php8.0                   available    [ =stable ]

$ amazon-linux-extras info php8.0
php8.0 recommends php-cli                    # yum install php-cli
php8.0 recommends php-pdo                    # yum install php-pdo
php8.0 recommends php-fpm                    # yum install php-fpm
php8.0 recommends php-mysqlnd                # yum install php-mysqlnd

$ sudo amazon-linux-extras install php8.0

$ php -v
PHP 8.0.6 (cli) (built: May 13 2021 22:35:54) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.6, Copyright (c) Zend Technologies

$ php-fpm -v
PHP 8.0.6 (fpm-fcgi) (built: May 13 2021 22:37:48)
Copyright (c) The PHP Group
Zend Engine v4.0.6, Copyright (c) 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 yum install php-mbstring php-pecl-memcached php-gd php-apcu php-xml php-process php-fpm php-zip
PHP Intlを入れる場合

ICUを先に入れる必要があります。

$ sudo yum -y install icu
$ sudo yum -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.1.3 2021-06-09 16:31:20

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