如何使用Nginx,APC和PostgreSQL设置PHP?


9

我使用Ubuntu Server 10.10,我想使用NginX,PHP 5.3.3,PostgreSQL以及最好使用APC和PHP Suhosin 来设置Web服务器环境。

我已经用设置了PostgreSQL apt-get install postgresql和Nginx apt-get install nginx

但是如何为这些设置PHP?我可以使用apt-get install还是必须下载源代码并进行编译?我更愿意使用apt-get

我想为Nginx 使用PHP-FPM。我在Internet上找到的大多数教程都是较旧的并且可以编译PHP,但是不建议将其用于生产服务器。

如何最简单地使用Nginx,APC和PostgreSQL设置PHP?或至少PHP-FPM + Nginx?


更新

现在我已经安装了一个新的Ubuntu服务器10.10和执行命令彼得建议php5-suhosin加。在Nginx工作正常之后,我将生成的配置文件编辑如下。重新加载新的配置文件后,Nginx使用index.html文件仍然可以正常工作,但是当我添加index.php文件时,它停止工作。我想这与PHP-FPM,APC或与PHP相关的东西有关。但这也可能是PHP-FPM的配置文件。

这是我正在使用的Nginx的配置文件,其中大多数是默认生成的。我跳过了评论。

server {

    listen 80;
    listen [::]:80 default ipv6only=on;

    server_name localhost;

    access_log /var/log/nginx/localhost.access.log;

    location /favicon.ico {
        empty_gif;
    }

    location / {
        root     /var/www;
        index    index.php index.html index.htm;
    }

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

}

请将此答案作为答案,然后接受它,这样我们就可以将两者一起投票作为组合解决方案。
豪尔赫·卡斯特罗

@Jorge:这不是答案,我只是显示我的配置文件不起作用。彼得·史密特(Peter Smit)发布了正确的解决方案并附有评论,我已经接受了它作为答案。
乔纳斯(Jonas)2010年

啊,我的错,继续前进!
豪尔赫·卡斯特罗

Answers:


8

从Ubuntu 10.10开始,这与新的php5-fpm包无关紧要

以下软件包可满足您的所有需求

  • nginx -网络服务器
  • php5-fpm -快速CGI php服务器
  • php-apc -用于PHP的APC软件包
  • php5-pgsql -PHP的PostgreSQL模块
  • postgresql -PostgreSQL数据库服务器

全部一起 sudo apt-get install nginx php5-fpm php-apc php5-pgsql postgresql

另外我建议检查是否安装了apache2。如果是这样,请使用删除它,sudo apt-get remove apache2以避免apache和nginx争用端口80。

还要注意,xdebug标准也希望使用端口9000,就像php5-fpm一样。因此,如果您使用xdebug,请将该端口更改为9001

作为奖励,还有一个示例nginx配置(将其放置在/ etc / nginx / sites-available并将其符号链接到/ etc / nginx / sites-enabled)

server {
  listen 80;
  server_name site.com;
  access_log /data/log/www/site.com/access.log;
  error_log /data/log/www/site.com/error.log;

  root /data/www_data/site.com/public;
  index index.php;

  location = /favicon.ico {
    empty_gif;
    #return 204;
  }

  location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
  }
}

我现在已经完成了此操作,并创建了一个简单的test.php文件,但是它不起作用。我的浏览器显示“链接断开”,并且在Nginx错误日志中,只有关于“ favicon.ico”的条目。我猜我的配置文件里有些东西,但是我真的不知道,很难找到错误。
乔纳斯(Jonas)2010年

@Jonas可能是nginx和php5-fpm尚未启动。在这种情况下,sudo service nginx startsudo service php5-fpm start应该做的工作。当然,要注意他们可能给的任何错误。
彼得·史密斯

@Jonas您的错误日志中不应包含favicon.ico,至少如果您从我的解决方案中复制了empty_gif部分,则该错误日志不应包含favicon.ico。另外,不要忘记在更改后总是重新启动(sudo service nginx reload)。如果其他所有方法均失败,则可以将配置文件添加到问题中。
彼得·史密斯

我已经用Nginx的配置文件更新了该问题,PHP设置似乎有问题。在将有关favicon的行添加到我的配置文件后,我在Nginx错误日志中不再遇到任何错误。Nginx适用于.html文件,但不适用于.php文件。
乔纳斯(Jonas)2010年

1
@Jonas可以帮助我制作“干净的”配置文件的页面是wiki.nginx.org/Pitfalls,但是请不要忽略关于实施您不了解的更改的警告。
Peter Smit
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.