[AWS] AWS Amazon LinuxでNginx+PHP+MySQL環境を構築する(プラスphpmyadmin)
目次
AWS Amazon LinuxでNginx+PHP+MySQL環境を構築する
AWS上でWordpressを構築するには、公式AMIである網元を利用するほうがサーバの設定などが不要でいきなりWordpressを利用できるので便利なのだが、
サーバスペックを上げると網元の利用料金も上がるので、Nginx+PHP+MySQL環境を網元なしで構築してみた。
AWSでサーバ起動
AWS上でAmazon Linuxを起動させる、セキュリティポリシーは80と22を開けておくこと
Nginx+MySQL+PHPのインストール
yumをアップデートしておく
sudo yum update -y
Nginx+MySQL+PHPのインストール
sudo yum install nginx php56 php56-fpm mysql56-server php56-mysqlnd -y
Nginxの起動・設定
Nginxの起動
sudo service nginx start
Nginxの起動確認
ブラウザからサーバのアドレスにアクセス
https://xxx.xxx.xxx.xxx
無事にNginxのページが表示されればOK
Nginxランレベル設定
sudo chkconfig nginx on
ランレベル確認
chkconfig --list nginx
2,3,5がonになっていればOK
/var/wwwのディレクトリ設定
ec2-userでもwwwディレクトリに書き込みできるように設定する
wwwグループの追加
sudo groupadd www
wwwグループにec2-userを追加
sudo usermod -a -G www ec2-user
一旦ログアウトしてAWSサーバに再接続する
グループ確認
groups
/var/wwwの所有権をwwwグループに変更
sudo chown -R root:www /var/www
/var/wwwフォルダの書き込み権限変更
sudo chmod 2775 /var/www
/var/wwwフォルダのサブディレクトリにグループIDを追加
find /var/www -type d -exec sudo chmod 2775 {} +
/var/wwwフォルダ配下にグループの書き込み許可を追加
find /var/www -type f -exec sudo chmod 0664 {} +
PHP設定
Nginxの設定を変更
sudo vi /etc/nginx/nginx.conf
変更内容
/var/www/html配下にphpファイルを配置することを想定
index index.html index.htm index.php; server { listen 80; server_name localhost; root /var/www/html; location ~ \.php$ { root /var/www/html; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; include fastcgi_params; }
php-fpmの設定を変更
sudo vi /etc/php-fpm.d/www.conf
*php-fpmのバージョンによってはフォルダの場所が異なることあり
user = nginx group = nginx
*デフォルトではapacheになっているので、nginxに変更
php-fpmのランレベル変更
sudo chkconfig php-fpm on
Nginxとphp-fpmを再起動
service nginx restart service php-fpm start
テスト用phpファイルを作成
echo "
https://xxx.xxx.xxx.xxx/phpinfo.phpにアクセス
phpinfoページが表示されればOK
MySQLの設定
MySQLの起動
sudo service mysqld start
MySQLのセキュリティ設定
sudo mysql_secure_installation
Rootのパスワード入力→まだ設定されていないので、そのままEnter
Set root password? [Y/n] Y
→パスワードを入力
Remove anonymous users? [Y/n] Y
→匿名アカウントの削除YES
Disallow root login remotely? [Y/n] Y
→Rootのリモートログインを不許可YES
Remove test database and access to it? [Y/n] Y
→TestDBを削除YES
Reload privilege tables now? [Y/n] Y
→権限TableをリロードYES
MySQLのランレベル設定
sudo chkconfig mysqld on
phpMyAdminのインストール・設定
GUIでMySQLを管理したかったのでphpMyAdminをインストール
EPELリポジトリを有効化
sudo yum-config-manager --enable epel
phpMyAdminをインストール
sudo yum install phpMyAdmin -y
Nginxの設定
sudo vi /etc/nginx/nginx.conf
変更内容
/var/www/html配下にphpファイルを配置することを想定
index index.html index.htm index.php; server { listen 80; server_name localhost; root /var/www/html; ####追加 location /phpMyAdmin { alias /usr/share/phpMyAdmin; index index.php index.html; #allow 127.0.0.1; #deny all; } ####追加 location ~ /phpMyAdmin/.*\.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME /usr/share/$uri; include fastcgi_params; } location ~ \.php$ { root /var/www/html; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; include fastcgi_params; }
Nginxとphp-fpmを再起動
service nginx restart service php-fpm restart
https://xxx.xxx.xxx.xxx/phpMyAdminにアクセス