我在 Linode 上安装了 LEMP,使用他们提供的堆栈脚本之一。我实际上并没有在启动时运行它,而是手动输入命令,因为它似乎没有正确安装所有内容。
无论如何,在安装完所有东西并启动服务器和 php-fpm 且没有错误后,我phpinfo();
在默认 nginx 位置 ( /var/www/index.php
) 上创建了一个页面。问题是它没有执行脚本,而是显示为静态文件。有人知道我该如何解决这个问题吗?
答案1
让我向您发布我的“nginx-php-fpm-php-apc-postgres”教程的一些相关摘录,希望对您有所帮助。
首先安装所需的软件包:
apt-get install nginx php5-fpm php5-pgsql php5-gd php5-curl php-apc postgresql imagemagick
我假设您已经安装了相关的软件包,例如 php5-fpm。
现在配置“vhost”:
vim /etc/nginx/sites-available/www.domain.tld
下面将显示我的示例配置:
server {
listen 80;
server_name domain.tld www.domain.tld;
access_log /var/log/nginx/domain.access_log;
error_log /var/log/nginx/domain.error_log;
root /var/www/www.domain.tld;
index index.php index.htm index.html;
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/www.domain.tld$fastcgi_script_name;
include fastcgi_params;
try_files $uri =404;
}
}
确保随后运行正确的进程:
/etc/init.d/php5-fpm restart
/etc/init.d/nginx start
我猜您的 vhost 配置文件缺少我上面发布的一些部分或者 php5-fpm 没有运行。
答案2
嗯,在 nginx 中使用 PHP 相当简单,您只需要对 PHP 使用 FastCGI。
我正在使用以下代码启动 PHP 的 FastCGI 运行时:spawn-fcgi:
spawn-fcgi -C 3 -u www-data -s /var/run/php-fcgi.sock -P /var/run/php-fcgi.pid -- /usr/bin/php5-cgi
确保所有权限正确。
然后,这将转到我的 nginx 配置:
upstream php-fcgi { server unix:/var/run/php-fcgi.sock; }
这是背景的一部分
http
。在定义虚拟主机的上下文中
server
,情况如下:location ~ \.php$ { fastcgi_pass php-fcgi; include /etc/nginx/fastcgi.conf; }
注意这个
/etc/nginx/fastcgi.conf
文件。这个文件应该存在于我目前见过的每个 nginx 包中,如果没有,请谷歌搜索。你会在任何地方找到它。
使用 lighttpd 的一部分 spawn-fcgi 似乎不合常规,但这是 nginx 人员推荐的解决方案。