AWSでNginxとPHP7.0の環境を用意する
はじめに
AWSでRDBを用いた簡易なアプリを作成しろと大学の課題として出されたので、課題の前の環境設定についてまとめようと思いました。 Ubuntuでの設定のブログなり記事が見当たらなかった(日本語で)のでやってることは他のOSと変わらないんですがまとめておきます。 AWSのインスタンス作成までは公式のページ参照してください。
AWSでNginxとPHPの設定をする
Nginxのインストール
$ ssh -i ~/.ssh/*******.pem ubuntu@[インスタンス名] $ sudo apt-get update $ sudo apt-get install nginx $ sudo service nginx start
nginxをapt-getでインストールする前にapt-getのupdateを済ませないと最新版がふってきません。 これでnginxのインストールは終わりです。
Nginxの設定
ディレクトリの作成
サービスを公開するディレクトリを先に作ります。
「www」や「mysite」は適宜自分のディレクトリと読みかえて下さい。
最後にパーミッションを変更しておきます。
$ sudo mkdir www $ cd www $ sudo mkdir mysite $ cd mysite $ sudo vim index.html $ cd $ sudo chmod -R 755 www
Nginxのサーバ設定
Nginxの設定ファイルですが/etc/nginx/sites-availableにあります。
既にdefaultというファイルがありますが、これを直接いじるのではなくコピーして使用していきます。
$ cd /etc/nginx/sites-available $ sudo cp default mysite
mysiteの設定ファイルを書き換えます rootのところはOSとしてUbuntuを指定した場合はubuntuになります。Ubuntu以外は適宜書き換えて下さい。 server_nameはAWSのパブリックDNSを参照してください。
$ sudo vim mysite server { listen 80; listen [::]:80; root /home/ubuntu/www/mysite; index index.html index.htm; # Make site accessible from http://localhost/ server_name *.amazonaws.com; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } }
sites-availablesの設定内容を反映させるために、sites-enabledにシンボリックリンクを作ります。
$ cd .. $ cd sites-enabled $ sudo ln -s /etc/nginx/sites-available/mysite mysite
最後にnginx.serviceをリスタートします
$ sudo service nginx restart もしくは $ sudo systemctl restart nginx
エラーが出た場合
nginxのrestart時にエラーが出た場合
$ sudo service nginx restart Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
このような感じが出ると思います。
この時は/var/log/nginx/error.logを見るといいです。
$ less /var/log/nginx/error.log 2016/11/14 14:20:14 [emerg] 27680#27680: invalid number of arguments in "root" directive in /etc/nginx/sites-enabled/bulletin_board:41
となっていた場合構文エラーです。セミコロンがなかったりします。
$ less /var/log/nginx/error.log 2016/11/14 14:27:39 [emerg] 27786#27786: could not build server_names_hash, you should increase server_names_hash_bucket_size: 64
となっていた場合サーバの名前の長さが長すぎるということなので
$ sudo vim /etc/nginx/nginx.conf -- server_names_hash_bucket_size: 64 ++ server_names_hash_bucket_size:128
上のような感じで適当な長さに編集すればエラー解決できます。
PHP7.0の設定
php7.0の導入
PHP7.0の導入についてです。
PHP7が公開されてからしばらくたつので、特に指定しなくてもphp70をapt-getで入手できます。
$ sudo apt-get install php
指定してやる方法は下の方法でいいはずです。
$ sudo apt-get install php70 $ sudo apt-get install php7.0-fpm
php7.0をnginxで使えるようにする
/etc/nginx/sites-available/mysiteを上で編集しましたが、それに追加します。 デフォルトだとコメントアウトされています。
$ sudo vim /etc/nginx/sites-available/mysite location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } # 上がnginxの設定で書いた部分 # ここから下がphp7のための設定 location ~ \.php$ { fastcgi_pass unix:run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include fastcgi_params; # include snippets/fastcgi-php.conf; # # # With php7.0-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php7.0-fpm: # fastcgi_pass unix:/run/php/php7.0-fpm.sock; }
このように設定したら、nginxをリスタートします
$ sudo service nginx restart
$ cd $ cd www/mysite $ sudo vim index.php <?php phpinfo(); ?>
アクセスしてphpinfoが表示されれば完成です。