[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

無事に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にアクセス
phpmyadmin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です