使用AWS的EC2,在Amazon Linux上搭建环境(包括nginx和php7.1-fpm)

以下是Amazon Linux的初始设置文章链接。

现在让我们继续在之前创建的Amazon Linux上设置nginx和php-fpm环境。

开发环境

    • Mac OS X(El Capitan) 10.11.6

 

    • Amazon Linux AMI 2017.09.1 (HVM), SSD Volume Type – ami-33c25b55

nginx version: nginx/1.12.1
PHP 7.1.11 (cli)
php71-fpm-7.1.11-1.29.amzn1.x86_64

需要事先准备的东西

    • 接続先EC2のパブリックDNS

 

    • 作業ユーザ(Amazon Linuxの場合デフォルトはec2-user)

 

    EC2からダウンロードした秘密鍵(デフォルトは****.pem)

使用SSH连接到AWS的EC2

SSH连接

执行以下命令以在AWS的EC2上进行SSH连接。

$ ssh -i ~/.ssh/秘密鍵名.pem ユーザ名@パブリックDNS

登陆完成

当您看到以下内容时,表示登录已完成。

Last login: Mon Jan 15 17:27:41 2018 from ***.***.***.***

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2017.09-release-notes/

安装Nginx

安装Nginx。

执行以下命令来安装nginx。

# nginxをインストール
$ sudo yum install nginx -y

# インストール確認
$ nginx -v

nginx的启动配置

执行以下命令以启动nginx。

# 起動
$ sudo service nginx start

# 自動起動設定確認
$ sudo chkconfig --list nginx

# 自動起動有効化設定
$ sudo chkconfig nginx on

# ステータス確認
$ sudo service nginx status

# ブラウザ確認
$ パブリックDNS

安装php-fpm

安装php-fpm

执行以下命令以安装php-fpm。

# phpをインストール
$ sudo yum install php71 php71-fpm -y

# インストール確認
$ php -v

# パッケージバージョン確認
$ rpm -qa | grep php

php71-json-7.1.11-1.29.amzn1.x86_64
php71-cli-7.1.11-1.29.amzn1.x86_64
php71-xml-7.1.11-1.29.amzn1.x86_64
php71-common-7.1.11-1.29.amzn1.x86_64
php71-fpm-7.1.11-1.29.amzn1.x86_64
php71-process-7.1.11-1.29.amzn1.x86_64
php71-7.1.11-1.29.amzn1.x86_64

php-fpm的启动配置

运行以下命令以启动php-fpm。

# 起動
$ sudo service php-fpm start

# 自動起動設定確認
$ sudo chkconfig --list php-fpm

# 自動起動有効化設定
$ sudo chkconfig php-fpm on

# ステータス確認
$ sudo service php-fpm status

php-fpmとnginxの接続設定

编辑www.conf

执行以下命令,将www.conf文件中的【user】和【group】从【apache】更改为【nginx】。

# www.confファイルがあるディレクトリへ移動
$ cd /etc/php-fpm-7.1.d

# オリジナルファイルのバックアップを作成
$ sudo cp www.conf www.conf.org

# www.confの編集
$ sudo vi www.conf
# php-fpmでのnginx実行ユーザー指定 
 - user = apache
 + user = nginx
 - group = apache
 + group = nginx

nginx.confの編集

执行以下命令,修改nginx.conf文件中的【server】区块。

# default.confファイルがあるディレクトリへ移動
$ cd /etc/nginx

# オリジナルファイルのバックアップを作成
$ sudo cp nginx.conf nginx.conf.org

# nginx.confの編集
$ sudo vi nginx.conf
# インデックスファイル指定
 - index index.html index.htm;
 + index index.html index.htm index.php;

# try_filesディレクティブ設定
 - location / {
 - }

 + location / {
 +     try_files $uri $uri/ /index.php$is_args$args;
 + } 

# nginxでのphpスクリプト実行設定
 - #location ~ \.php$ {
 - #    root           html;
 - #    fastcgi_pass   127.0.0.1:9000;
 - #    fastcgi_index  index.php;
 - #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
 - #    include        fastcgi_params;
 - #}

 + location ~ \.php$ {
 +      fastcgi_pass  127.0.0.1:9000;
 +      fastcgi_index index.php;
 +      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 +      include       fastcgi_params;
 + }

php-fpmとnginxの接続確認

在文档根目录添加一个名为phpinfo.php的测试文件。

执行以下命令,以确认是否在文档根目录中可以执行PHP:

# スーパーユーザーに切り替え
$ sudo su

# テスト用phpファイルの作成
$ echo '<?php phpinfo();' > /usr/share/nginx/html/phpinfo.php

重新启动nginx和php-fpm

执行以下命令,重新启动nginx和php-fpm以应用配置。

# nginxの再起動
$ sudo service nginx restart

# php-fpmの再起動
$ sudo service php-fpm restart

# ブラウザ確認
パブリックDNS/phpinfo.php

Nginx错误!请进行适当处理。

如果在重新启动php-fpm时出现ACL警告,

Starting php-fpm-7.1: 
[16-Jan-2018 11:04:52] WARNING: [pool www] ACL set, listen.owner = 'nginx' is ignored
[16-Jan-2018 11:04:52] WARNING: [pool www] ACL set, listen.group = 'nginx' is ignored

如果在重启php-fpm时出现ACL警告,需要将www.conf文件中的【listen.acl_users】注释掉。

- listen.acl_users = apache,nginx
+ ;listen.acl_users = apache,nginx

我会在浏览器上重新确认一下,但是又出现了【nginx错误!】,所以我会检查一下nginx的【error.log】。

文件路径:/var/log/nginx/error.log

只需一种中文翻译选项:参考一下,php-fpm的【error.log】文件被输出到/var/log/php-fpm/7.1/error.log。

# スーパーユーザーに切り替え
$ sudo su

# error.logの確認
$ less /var/log/nginx/error.log

## lessコマンドオプション
Shift + f (更新監視モードを実行)
Ctrl + c (更新監視モードを終了)
q (終了)

# エラー内容
2018/01/16 12:20:40 [crit] 32408#0: *13 connect() to unix:/var/run/php-fpm/www.sock failed (2: No such file or directory) while connecting to upstream, client: 111.107.157.137, server: localhost, request: "GET /phpinfo.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/www.sock:", host: "13.231.12.47"

无法连接到 unix:/var/run/php-fpm/www.sock 的修复

连接到unix:/var/run/php-fpm/www.sock失败(2:没有此文件或目录),导致与上游的连接中断。

由于缺少上述错误中的【www.sock】文件,因此需要设置UNIX域套接字并重新启动php-fpm以创建【.sock】文件。

在那个时候,通过nginx.conf中的【include /etc/nginx/conf.d/*.conf;】设置,会加载/conf.d/php-fpm.conf文件,并且使用【unix:/var/run/php-fpm/www.sock;】作为UNIX域套接字配置,所以请根据这里的设置来使用UNIX域套接字配置。

UNIX域套接字配置

请确认php-fpm的UNIX域套接字操作。

您可以执行以下命令,以确认是否在php-fpm中使用UNIX域套接字。

# php-fpmのUNIXドメインソケット動作確認
$ netstat -al --protocol=unix |egrep "Proto|fpm"

Proto RefCnt Flags       Type       State         I-Node   Path

编辑www.conf

执行以下命令,更改www.conf文件中的【listen】、【listen.owner】和【listen.group】的设定。

# www.confの編集
$ sudo vi /etc/php-fpm-7.1.d/www.conf
# listenの内容を変更
- listen = 127.0.0.1:9000

- ;listen.owner = nobody
- ;listen.group = nobody

+ listen = /var/run/php-fpm/www.sock

+ listen.owner = nginx
+ listen.group = nginx

编辑nginx.conf文件

执行以下命令,将nginx.conf文件中的【fastcgi_pass】进行更改。

# nginx.confの編集
$ sudo vi /etc/nginx/nginx.conf
# fastcgi_passの変更
- fastcgi_pass  127.0.0.1:9000;
+ fastcgi_pass  unix:/var/run/php-fpm/www.sock;

重新启动nginx和php-fpm

执行以下命令,重新启动nginx和php-fpm并应用设置。

# nginxの再起動
$ sudo service nginx restart

# php-fpmの再起動
$ sudo service php-fpm restart

# php-fpmのUNIXドメインソケット動作確認
$ netstat -al --protocol=unix |egrep "Proto|fpm"

Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     54424  /var/run/php-fpm/www.sock

请再次确认浏览器

请从下面的路径重新确认浏览器。已成功显示。

パブリックDNS/phpinfo.php

這是一篇部落格文章的轉載。

广告
将在 10 秒后关闭
bannerAds