首页 文章

如何在Amazon EC2 AMI实例上使用nginx一致地设置PHP-FPM 5.6

提问于
浏览
8

我找不到从头开始在Amazon AMI EC2实例上的nginx上设置php-fpm的方法 . 我知道这不应该那么困难,但根据* nix版本找到不同的答案令人困惑 .

以下是我认为可行的浓缩步骤,但不是 . 有没有人有一套步骤可以在Amazon AMI EC2实例中使用nginx可靠地设置php-fpm?

我故意从这篇文章中遗漏了nginx.conf等,因为它们是来自默认yum存储库的“库存”安装 .

nginx版本:1.6.2

有没有人有可靠的步骤在nginx中为Amazon AMI EC2实例设置php-fpm?我更愿意设置自己,而不是在亚马逊市场上使用AMI来收取此设置费用 .

谢谢

# install packages
yum install -y nginx
yum install -y php56-fpm.x86_64

# enable php in nginx.conf
vi /etc/nginx/nginx.conf
# add index.php at the beginning of index
  index   index.php index.html index.htm;

# uncomment the php block in nginx.conf
    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;
    }

# tell php-fpm to run as same account as nginx
vi /etc/php-fpm-5.6.d/www.conf
- change user and group apache to nginx

# allow nginx user to read website files since they are typically owned by root
cd /usr/share/nginx
chown -R nginx:nginx html

# check to see if php works - doesn't with these steps
echo "<?php phpinfo(); ?>" > /usr/share/nginx/info.php

# restart services since we changed things
service nginx restart
service php-fpm-5.6 restart

# verify root path exists and is owned by nginx as we said above
# ls -l /usr/share/nginx/html
-rw-r--r-- 1 nginx nginx 3696 Mar  6 03:53 404.html
-rw-r--r-- 1 nginx nginx 3738 Mar  6 03:53 50x.html
-rw-r--r-- 1 nginx nginx 3770 Mar  6 03:53 index.html
-rw-r--r-- 1 nginx nginx   20 Apr 14 14:01 index.php

# I also verified php-fpm is listening on port 9000 and nginx is setup that way in the nginx.conf
# port 9000 usage is the default and I left it as-is for this question, but I would prefer to use sock once I get this working.

编辑

这是我在nginx错误日志中看到的

2015/04/14 17:08:25 [error] 916#0: *9 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, 
client: 12.34.56.78, server: localhost, request: "GET /index.php HTTP/1.1", 
upstream: "fastcgi://127.0.0.1:9000", host: "12.34.56.90"

2 回答

  • 0

    您在nginx错误日志(/var/log/nginx/errors.log)中看到了什么?

    提供额外信息(日志)后添加:

    对我来说它看起来应该是服务器部分而不是位置 .

    server {
     ...
        root   /usr/share/nginx/html;
        ...
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
    
  • 1

    你的index.php文件在哪里?如果它在这里:

    /usr/share/nginx/html/index.php
    

    然后改变这一行

    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    

    至:

    fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
    

相关问题