在nginx上启用PHP的最简单方法是什么?


130

在Ubuntu 12.04的nginx上启用PHP的最简单方法是什么?

最好的解决方案是需要最少工作的解决方案,理想情况下只需安装软件包即可:)

Answers:


141

以下方法将使您在Ubuntu 12.04上快速入门:

安装依赖项:

sudo apt-get install php5-common php5-cli php5-fpm

安装nginx:

sudo apt-get install nginx

启动nginx:

sudo service nginx start

测试它是否正常工作(应该看到“欢迎使用nginx!”)

sudo service nginx stop

在您的nginx站点配置(/ etc / nginx / sites-available / default)中,修改服务器{}部分中的行

index index.html index.htmindex index.php index.html index.htm

取消注释服务器{}部分中以下列开头的行

listen 对于ipv4 / ipv6都适用。

向下滚动到显示“ location〜.php {”和取消注释行的位置,如下所示:

location ~ \.php$ {
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  include fastcgi_params;
}

sudo service php5-fpm restart sudo service nginx restart

您的默认Web根目录位于/ usr / share / nginx / www(根据配置文件)。(看到root /usr/share/nginx/www;

(注:为Ubuntu 12.10或更新版本,您将需要更换fastcgi_pass 127.0.0.1:9000;这一行,使其工作:fastcgi_pass unix:/var/run/php5-fpm.sock;


1
作为后期说明,您可以通过/etc/php5/fpm/pool.d/www.conf将侦听行更改为listen = /var/run/php5-fpm.sock,然后使用@ThomasW 行,使12.04像12.10+一样使用UNIX套接字。提到。
Powerlord 2014年

@Powerlord NGINX的默认设置包含两行,并解释了两者之间的区别,而不必更改PHP的运行方式,您可以更快地更改NGINX中的配置行,并且一切正常。
托马斯·沃德

@ThomasW。NGINX默认设置的两行描述在12.04中也是错误的。由于在12.04中如何配置php5-fpm,因此php5-fpm需要第一种方法。直到12.10才更改为第二种方法。为了使php5-fpm与nginx一起使用,如您所记录的,您必须修改fpm的www.conf,如我之前的消息中所述。
Powerlord 2014年

@Powerlord是的,这是一个问题,可以通过更改默认配置文件中的文档来解决此问题。请参阅我在此问题上创建的此错误。我还没有机会提出错误修正。
托马斯·沃德

1
在Ubuntu 14.04上,这对我不起作用。nginx说“发生错误,找不到您要查找的页面”,该怎么办?
user3459110 2014年

46

编辑:正如马特·布朗Matt Browne)指出的那样,您可能对此较新的帖子感兴趣:
如何在Ubuntu 16.04中安装Linux,Nginx,MySQL,PHP(LEMP堆栈)


papashou的回答是老的Ubuntu 12.04是正确的。从Ubuntu 12.10开始,配置有所不同。这是我所做的:

安装

sudo apt-get install nginx php5-fpm

启用PHP

在配置文件中取消注释以下行 /etc/nginx/sites-available/default

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

#   # With php5-cgi alone:
#   fastcgi_pass 127.0.0.1:9000;
    # With php5-fpm:
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

开始(或重新启动)

sudo service php5-fpm restart
sudo service nginx restart

测试 nginx

打开此链接http://localhost应显示“欢迎使用nginx!”。

测试 php

创建一个PHP文件:

  • 目标路径是

    awk -F' |;' '/^[^#]*root/ {print $2}' /etc/nginx/sites-available/default
    

    例如 /usr/share/nginx/www

  • 用以下命令编写info.php文件:

    echo '<?php phpinfo(); ?>' | \
        sudo tee /usr/share/nginx/www/info.php
    

    或单线

    echo '<?php phpinfo(); ?>' | \
        sudo tee "$(awk -F' |;' '/^[^#]*root/ {print $2}' /etc/nginx/sites-available/default)/info.php"
    

打开后http://localhost/info.php应显示PHP信息页面。


3
谢谢你 这是另一个有用的链接:digitalocean.com/community/tutorials/…。请注意,如果您要安装MySQL,则还需要运行apt-get install php5-mysql(除了安装MySQL本身)。
马特·布朗

1
:有上述文章中的Ubuntu 16的新版本digitalocean.com/community/tutorials/...
马特·布朗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.