在Ubuntu / Debian上安装PHP 5.3,Nginx和PHP-fpm
版本1.1
在推特上关注我
由于Apache大部分时间都是内存空闲的过程,所以人们开始寻找不同的方式来托管他们的网站。 Apache显然不是唯一可用的网络服务器。 一些很好的例子是lighttpd和nginx。 在本教程中,我将向您展示如何在Ubuntu服务器上安装它。 但是本教程也适用于Debian。 只有很小的差异。
准备? 我们开始吧
步骤0 - 初步说明
为了完成本教程,我假设您已经安装了Debian或Ubuntu的基本系统。 如何做到这一点,可以在不同的教程中阅读。 本教程只集中在使nginx + php运行没有太多麻烦。
第1步 - Nginx
安装nginx是我们必须做的第一步。 这可以通过从存储库下载来轻松完成。
sudo apt-get install nginx
为了正常工作,必须更改默认的vhost。
sudo vim /etc/nginx/sites-available/default
你的配置的一个很好的起点是:
server { listen 80; server_name localhost; access_log /var/log/nginx/localhost.access.log; ## Default location location / { root /var/www; index index.php; } ## Images and static content is treated different location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ { access_log off; expires 30d; root /var/www; } ## Parse all .php file in the /var/www directory location ~ .php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass backend; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } ## Disable viewing .htaccess & .htpassword location ~ /\.ht { deny all; } }
upstream backend {
server 127.0.0.1:9000;
}
好的,我们在这里完成 现在我们将为PHP安装所需的文件。
第2步 - 安装PHP
许多网站依靠PHP为他们提供动态内容,无论这是一个维基,论坛软件,博客或完全不同的东西。
如果您正在运行Ubuntu,我们首先必须解决dotdeb包所需的两个依赖关系。 如果您正在运行amd64版本,您应该使用amd64
替换i386
。
对于Debian,您不必这样做!
cd /tmp
wget http://us.archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb53_1.6.dfsg.4~beta1-5ubuntu2_i386.deb
wget http://us.archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu38_3.8-6ubuntu0.2_i386.deb
sudo dpkg -i *.deb
再次, 只有在Ubuntu上才需要这样做。
本教程的其余部分适用于Ubuntu和Debian。
我们必须将dotdeb存储库添加到APT源,所以我们可以使用他们打包的PHP 5.3和php-fpm:
sudo echo "deb http://php53.dotdeb.org stable all" >> /etc/apt/sources.list
更新apt:
sudo apt-get update
生成的文本应包括dotdeb。
现在我们将安装PHP(第1部分):
sudo apt-get install php5-cli php5-common php5-suhosin
我们必须在其余的时间之前安装cli,因为以后会导致问题。
sudo apt-get install php5-fpm php5-cgi
如果您打算使用数据库或需要特定的模块(mcrypt,ldap,snmp等),那么也可以安装它们。
好的,所以现在我们有了nginx和PHP。
一个小问题:如果您使用“php短标签”( <?
),您应该在php.ini
文件(对于fpm和cli)中启用它们。 如果你不改变这个,你会看到你的代码纯文本!
第3步 - 敲定
重新启动nginx以赶上我们之前做的配置更改。
sudo /etc/init.d/nginx restart
重启应该没有任何问题。
安装php5-fpm后,应该已经开始了。 如果您更改了php.ini
文件,则必须重新启动php5-fpm。
sudo /etc/init.d/php5-fpm restart
好吧。 他们现在应该都跑了。
第4步 - 测试
为了测试PHP的执行情况是否正常,请在/ var / www
中创建一个index.php
文件,内容如下:
<?php phpinfo(); ?>
访问您的网络服务器,您应该可以看到生成的phpinfo。 如果没有,出现问题。
第5步 - 疑难解答和最终注释
如果您没有看到phpinfo,可能会有问题。 为了跟踪出了什么问题,你可以检查nginx错误日志:
sudo tail /var/log/nginx/error.log
记住,如果你改变了php.ini,
你必须重新启动php5-fpm。 重新启动nginx不是必需的。
在我的示例配置中,我启用了fastcgi错误拦截。 如果发生严重错误(例如“不能重新声明类xyz”),nginx可以捕获此页面并显示出错的页面。 这样一来,如果发生了严重的错误,那么给出的信息较少。
如果你不喜欢这个,你可以把它关掉。
如果php5-fpm未运行,您的PHP文件将无法解析,并且nginx会向用户显示错误页面。
嗯,我想我们已经完成了,现在你可以使用新的基于nginx的网络服务器来为PHP服务。 Nginx很漂亮,你可以配置很多。 如果需要重写,请注意,nginx不支持.htaccess
文件。 您将需要更改您的vhost设置,以便重写工作。