在EC2上构建PHP环境 ① Nginx + PHP 5.6 + PHP 5.6-FPM + 虚拟主机
总括
因为我没有太多服务器搭建经验,所以我总结了这次尝试的步骤。
目录
-
- nginxインストール
-
- php及びphp-fpmインストール
- バーチャル環境構築
# EC2 的 IP 地址(临时)
52.111.111.111
安装nginx
登录到EC2
[hoge@local ~]$ ssh -i "XXX.pem" ec2-user@52.111.111.111
确认nginx信息
[ec2-user@ip-172-31-4-XXX ~]$ yum info nginx
2. 安装nginx
[ec2-user@ip-172-31-4-XXX ~]$ sudo yum install nginx -y
3. 安装确认
[ec2-user@ip-172-31-4-XXX ~]$ which nginx
/usr/sbin/nginx
4. Nginx正在运行。
[ec2-user@ip-172-31-4-XXX ~]$ sudo service nginx start
Starting nginx: [ OK ]
[ec2-user@ip-172-31-4-XXX ~]$ ps -ef | grep nginx
root 1563 1 0 09:06 ? 00:00:00 nginx: master process nginx
nginx 1564 1563 0 09:06 ? 00:00:00 nginx: worker process
ec2-user 1566 1385 0 09:06 pts/0 00:00:00 grep nginx
5. 确认对浏览器的访问

将服务设置为自动运行
[ec2-user@ip-172-31-4-XXX ~]$ sudo chkconfig nginx on
7. 确认对nginx的日志目录的访问。
[ec2-user@ip-172-31-4-XXX ~]$ tail -f /var/log/nginx/access.log
tail: `/var/log/nginx/access.log' を 読み込み用に開くことが出来ません: 許可がありません
[ec2-user@ip-172-31-4-XXX ~]$ ls -ald /var/log/nginx
drwx------ 2 nginx nginx 4096 9月 20 08:26 /var/log/nginx
8. 更改对日志目录的访问权限
[ec2-user@ip-172-31-4-XXX ~]$ sudo chmod 755 /var/log/nginx/
[ec2-user@ip-172-31-4-XXX ~]$ ls -ald /var/log/nginx
drwxr-xr-x 2 nginx nginx 4096 9月 20 08:26 /var/log/nginx
[ec2-user@ip-172-31-4-XXX ~]$ tail -f /var/log/nginx/access.log
XXX.XXX.XX.XXX - - [20/Sep/2015:08:29:09 +0000] ...
XXX.XXX.XX.XXX - - [20/Sep/2015:08:30:01 +0000] ...
安装php-fpm
安装php5.6和php-fpm。
[ec2-user@ip-172-31-4-XXX ~]$ sudo yum install php56 php56-fpm -y
2. 制作用于确认的PHP文件
<?php
phpinfo();
3. 更改php-fpm的配置
将用户和组从Apache更改为Nginx。
- user = apache
+ user = nginx
- group = apache
+ group = nginx
4. 更改nginx的设置 nginx de
http {
- index index.html index.htm;
+ index index.php index.html index.htm;
server {
root /usr/share/nginx/html;
- #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$ {
+ root html;
+ fastcgi_pass 127.0.0.1:9000;
+ fastcgi_index index.php;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ include fastcgi_params;
+ }
5. php-fpm的运行和自动运行设置
[ec2-user@ip-172-31-4-XXX ~]$ sudo service php-fpm start
[ec2-user@ip-172-31-4-XXX ~]$ sudo chkconfig php-fpm on
6. 重新启动nginx
[ec2-user@ip-172-31-4-XXX ~]$ sudo service nginx restart
7. 确认更改设置
[ec2-user@ip-172-31-4-XXX ~]$ curl -s http://localhost/phpinfo.php |grep "PHP Version"
<tr><td class="e">PHP Version </td><td class="v">5.6.8 </td></tr>
将nginx和php-fpm的连接设置为socket连接。
更改php-fpm的设置
- listen = 127.0.0.1:9000
+ listen = /var/run/php-fpm/php-fpm.sock
- ;listen.owner = nobody
- ;listen.group = nobody
+ listen.owner = nginx
+ listen.group = nginx
修改Nginx配置
- fastcgi_pass 127.0.0.1:9000;
+ fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
重新启动服务
[ec2-user@ip-172-31-4-XXX ~]$ sudo service php-fpm restart
[ec2-user@ip-172-31-4-XXX ~]$ sudo service nginx restart
请确认PHP的执行是否有问题。
[ec2-user@ip-172-31-4-XXX ~]$ curl -s http://localhost/phpinfo.php |grep "PHP Version"
创建虚拟环境(feature1-develop.com)
将php-fpm进行配置。
[feature1-develop]
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm-feature1-develop.sock
listen.owner = nginx
listen.group = nginx
php_admin_value[disable_functions] = exec,passthru,shell_exec,system
php_admin_flag[allow_url_fopen] = off
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /
2. nginx的虚拟.conf配置
server {
listen 80;
server_name feature1-develop.com;
access_log /var/log/nginx/feature1-develop.access.log main;
error_log /var/log/nginx/feature1-develop.error.log;
root /var/www/feature1;
index index.php;
location ~ \.php$ {
root /var/www/feature1;
fastcgi_pass unix:/var/run/php-fpm/php-fpm-feature1-develop.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
3. 创建文档根目录
[ec2-user@ip-172-31-4-XXX ~]$ sudo mkdir -p /var/www/feature1
请创建index.php文件。
<?php
phpinfo();
5. 重新启动php-fpm和nginx
[ec2-user@ip-172-31-4-XXX ~]$ sudo service php-fpm restart
[ec2-user@ip-172-31-4-XXX ~]$ sudo service nginx restart
6. 检查添加sock文件
[ec2-user@ip-172-31-4-XXX ~]$ ls -al /var/run/php-fpm/php-fpm-feature1-develop.sock
srw-rw---- 1 nginx nginx 0 9月 20 08:54 /var/run/php-fpm/php-fpm-feature1-develop.sock
7. 在我的电脑上进行虚拟主机的访问设置。
[hoge@local ~]$ sudo -- sh -c "echo 52.111.111.111 feature1-develop.com >> /etc/hosts"
8. 确认访问
在Shell上进行确认
# アクセス確認
[hoge@local ~]$ curl -s http://feature1-develop.com/phpinfo.php | grep "PHP Version"
<tr><td class="e">PHP Version </td><td class="v">5.6.12 </td></tr>
# 「DOCUMENT_ROOT」確認
[hoge@local ~]$ curl -s http://feature1-develop.com/phpinfo.php | grep "DOCUMENT_ROOT"
<tr><td class="e">_SERVER["DOCUMENT_ROOT"]</td><td class="v">/var/www/feature1</td></tr>
在浏览器上进行确认

接下来做的事情
在EC2上搭建PHP环境,包括搭建Git服务器、安装Altax和创建部署命令。