EC2サーバー構築共通
概要
AWSのEC2を利用して、Webサーバーを構築したときの手順をご紹介します。
環境
- nginx 1.16.1
- PHP 7.4.3
- git 2.23.1
手順
1. システム
# yumのパッケージ更新
$ sudo yum update
# タイムゾーン確認
$ timedatectl status
# タイムゾーンを日本時間に設定
$ sudo timedatectl set-timezone Asia/Tokyo
# ロケール確認
$ localectl status
# ロケール変更
$ sudo localectl set-locale LANG=ja_JP.UTF-8
2. ニックネーム設定
ホスト名に影響を与えずにシェルプロンプトを変更する
参考
- 環境変数定義
$ sudo sh -c 'echo "export NICKNAME={ニックネーム}" > /etc/profile.d/prompt.sh'
例
$ sudo sh -c 'echo "export NICKNAME=staging" > /etc/profile.d/prompt.sh'
- シェルプロンプトの設定編集
$ sudo vi /etc/bashrc
\h (hostname を表す記号) を NICKNAME 変数の値に変更
/etc/bashrc
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
↓
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\$NICKNAME \W]\\$ "
- シェルウィンドウのタイトルを新しいニックネームに設定
# ファイル作成
sudo touch /etc/sysconfig/bash-prompt-xterm
# 実行権限付与
$ sudo chmod +x /etc/sysconfig/bash-prompt-xterm
# ファイル編集
$ sudo vi /etc/sysconfig/bash-prompt-xterm
/etc/sysconfig/bash-prompt-xterm
echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
3. 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.16.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
nginx.conf
sudo vi /etc/nginx/nginx.conf
以下を追加
サーバー名の長さ調整
server_names_hash_bucket_size 128;
タイムアウト設定
keepalive_timeout 300;
独自の設定ファイル作成
sudo vi /etc/nginx/conf.d/web.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;
}
}
サーバー名の例:
test.com
123.11.111.11
ドキュメントルートの例:
/srv/public
チェックと再起動
$ sudo nginx -t
$ sudo systemctl restart nginx.service
4. 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 ]
$ amazon-linux-extras info php7.4
$ sudo amazon-linux-extras install php7.4
$ php -v
PHP 7.4.3 (cli) (built: Mar 2 2020 21:05:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
$ php-fpm -v
PHP 7.4.3 (fpm-fcgi) (built: Mar 2 2020 21:06:23)
Copyright (c) The PHP Group
Zend Engine v3.4.0, 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-cli php-json php-process php-common php-fpm php-zip php-mysqlnd
php-fpmとnginxを再起動
$ sudo systemctl restart php-fpm.service
$ sudo systemctl restart nginx.service
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 1.10.5 2020-04-10 11:44:22
5. git
インストール
$ sudo yum install git
$ git version
git version 2.23.1
秘密鍵の登録
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096
$ cat ~/.ssh/id_rsa.pub
コピーしてgithubに公開鍵を登録する
$ ssh -T git@github.com
$ cd ~/.ssh
$ vi id_rsa
$ chmod 600 id_rsa
clone
$ cd /home/ec2-user
$ git init
$ git clone git@github.com:{リポジトリ名}