手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

Installing PHP 5.3, Nginx And PHP-fpm On Ubuntu/Debian

首页 > Linux >

Since Apache is most of the time a memory hungy process, people started to look for different ways to host their website. Apache is clearly not the only webserver available. A few good examples are lighttpd and nginx. In this tutorial I will show you how to install it on your Ubuntu server. This tutorial also applies to Debian, though. There is only a very small difference.

Ready? Let's begin shall we.

Step 0 - Preliminary Notes

In order to complete this tutorial, I assume you have installed a base system of Debian or Ubuntu. How this can be done, can be read in different tutorials. This tutorial only focusses on getting nginx+php running without much hassle.

Step 1 - Nginx

Installing nginx is the first step we have to do. This can be easily done by downloading it from the repository.

XML/HTML代码
  1. sudo apt-get install nginx  

The default vhost has to be changed in order to work properly.

XML/HTML代码
  1. sudo vim /etc/nginx/sites-available/default  

A nice starting point for your config is:

XML/HTML代码
  1. server {  
  2.     listen   80;  
  3.     server_name  localhost;  
  4.     access_log  /var/log/nginx/localhost.access.log;  
  5.   
  6. ## Default location  
  7.     location / {  
  8.         root   /var/www;  
  9.         index  index.php;  
  10.     }  
  11.   
  12. ## Images and static content is treated different  
  13.     location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {  
  14.       access_log        off;  
  15.       expires           30d;  
  16.       root /var/www;  
  17.     }  
  18.   
  19. ## Parse all .php file in the /var/www directory  
  20.     location ~ .php$ {  
  21.         fastcgi_split_path_info ^(.+\.php)(.*)$;  
  22.         fastcgi_pass   backend;  
  23.         fastcgi_index  index.php;  
  24.         fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;  
  25.         include fastcgi_params;  
  26.         fastcgi_param  QUERY_STRING     $query_string;  
  27.         fastcgi_param  REQUEST_METHOD   $request_method;  
  28.         fastcgi_param  CONTENT_TYPE     $content_type;  
  29.         fastcgi_param  CONTENT_LENGTH   $content_length;  
  30.         fastcgi_intercept_errors        on;  
  31.         fastcgi_ignore_client_abort     off;  
  32.         fastcgi_connect_timeout 60;  
  33.         fastcgi_send_timeout 180;  
  34.         fastcgi_read_timeout 180;  
  35.         fastcgi_buffer_size 128k;  
  36.         fastcgi_buffers 4 256k;  
  37.         fastcgi_busy_buffers_size 256k;  
  38.         fastcgi_temp_file_write_size 256k;  
  39.     }  
  40.   
  41. ## Disable viewing .htaccess & .htpassword  
  42.     location ~ /\.ht {  
  43.         deny  all;  
  44.     }  
  45. }  
  46. upstream backend {  
  47.         server 127.0.0.1:9000;  
  48. }  
k, we're done here. Now we'll install the needed files for PHP.

 

Step 2 - Installing PHP

Many sites rely on PHP for providing them dynamic content, whether this is a wiki, forum software, weblog or something entirely different.

If you are running Ubuntu, we first have to resolve two dependencies required for the dotdeb packages. If you are running the amd64 version, you should replace i386 with amd64.

For Debian you won't have to do this!

XML/HTML代码
  1. cd /tmp  
  2.   
  3. wget http://us.archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb53_1.6.dfsg.4~beta1-5ubuntu2_i386.deb  
  4.   
  5. wget http://us.archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu38_3.8-6ubuntu0.2_i386.deb  
  6.   
  7. sudo dpkg -i *.deb  

Again, this is only required if you're on Ubuntu.

The rest of the tutorial applies to both Ubuntu & Debian.

 

 

 

 

We'll have to add the dotdeb repository to the APT sources, so we can use their packaged PHP 5.3 and php-fpm:

XML/HTML代码
  1. sudo echo "deb http://php53.dotdeb.org stable all" >> /etc/apt/sources.list  

Update apt:

XML/HTML代码
  1. sudo apt-get update  

The resulting text should include dotdeb.

Now we'll install PHP (part 1):

XML/HTML代码
  1. sudo apt-get install php5-cli php5-common php5-suhosin  

We have to install the cli before the rest, because this will cause problems later on.

XML/HTML代码
  1. sudo apt-get install php5-fpm php5-cgi  

If you are planning to use a database or require specific modules (mcrypt, ldap, snmp etc) you can install them as well.

Ok, so now we have nginx and PHP.

One minor remark: If you are using "php short tags" (<?) you should enable them in your php.ini files (for both fpm and cli). If you do not change this, you will see your code in plain text!

Step 3 - Finalizing

Restart nginx in order to catch up with the config changes we made earlier.

XML/HTML代码
  1. sudo /etc/init.d/nginx restart  

The restart should have gone without any problems.

After installing php5-fpm, it should have been started. If you did change your php.ini files, you have to restart php5-fpm.

XML/HTML代码
  1. sudo /etc/init.d/php5-fpm restart  

All right. They should now both be running.

Step 4 - Testing

In order to test if the execution of PHP is working, create an index.php file in /var/www with the following content:

PHP代码
  1. <?php phpinfo(); ?>  

 

 

 

 

Visit your webserver and you should be able to see the generated phpinfo. If not, something went wrong.

Step 5 - Troubleshooting & Final notes

If  you did not see the phpinfo, there might be something wrong. In order to track down what went wrong, you can check the nginx error log:

XML/HTML代码
  1. sudo tail /var/log/nginx/error.log  

Remember, if you did change your php.ini you have to restart php5-fpm. Restarting nginx isn't' necessary.

In my example config I've enabled the fastcgi error interception. If a serious error occurs (for instance a "cannot redeclare class xyz"), nginx can catch this page and show a "nice" error page that something went wrong. This way, there is less information given out in case something is going seriously wrong.

If you do not like this, you can turn it off.

If php5-fpm is not running, your PHP files cannot be parsed and nginx will show the user an error page.

Well, I guess we're done and you are now able to serve PHP with your new nginx based webserver. Nginx is pretty nice and you can configure a lot. If you need rewrites, be aware that nginx does not work with .htaccess files. You will need to change your vhost settings in order for the rewrites to work.

原文地址为:http://www.howtoforge.com/installing-php-5.3-nginx-and-php-fpm-on-ubuntu-debian

事实上,如果你真的按照本文所说的去安装,好象是不能成功的。好象默认nginx不在ubuntu的包里。

原文中还有三篇相关文章,如果有兴趣,可以看一下:

有些东西还是可以看看的,但如果是纯操作没有讲解,其实意义不大,终究只是知其然不知其所以然

 

 

 




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

« 上一篇 | 下一篇 »

1条记录访客评论

事实上 这么配置后 Nginx根本起不来
我的Nginx是 apt-get来的 0.6版本

Post by zecoo on 2010, December 2, 5:12 PM 引用此文发表评论 #1


发表评论

评论内容 (必填):