首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

nginx 上部署 wordpress

作者:  时间: 2011-05-17

自己有个 vps,web 服务器安装 nginx。现在帮同事搞个 blog(自己的 blog 还没挂到 vps 上呢)。要支持 php,还不知道 wordpress rewrite 规则,所以自己的blog没搬过去就是因为这个原因。

vps 上也装有 lighttpd,搞了一个晚上 lighttpd 还没安装上 wordpress 放弃。改用 nginx(反正 lighttpd 支持的 php 也是通过 nginx 代理过去,干脆用nginx 支持php 行了 )。

php 安装参数如:

  1. ./configure --prefix=/usr/local/php --enable-fastcgi --with-mysql=/usr/local/mysql --enable-zend-multibyte --with-config-file-path=/usr/local/php/conf --enable-discard-path --enable-force-cgi-redirect  

启动php-cgi:

  1. /usr/local/php/bin/php-cgi -b 127.0.0.1:9000 &  

nginx fastcgi 配置:/usr/local/nginx/conf/fastcgi_params

  1. fastcgi_param  QUERY_STRING       $query_string;  
  2. fastcgi_param  REQUEST_METHOD     $request_method;  
  3. fastcgi_param  CONTENT_TYPE       $content_type;  
  4. fastcgi_param  CONTENT_LENGTH     $content_length;  
  5.   
  6. fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;  
  7. fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;  
  8. fastcgi_param  REQUEST_URI        $request_uri;  
  9. fastcgi_param  DOCUMENT_URI       $document_uri;  
  10. fastcgi_param  DOCUMENT_ROOT      $document_root;  
  11. fastcgi_param  SERVER_PROTOCOL    $server_protocol;  
  12.   
  13. fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;  
  14. fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;  
  15.   
  16. fastcgi_param  REMOTE_ADDR        $remote_addr;  
  17. fastcgi_param  REMOTE_PORT        $remote_port;  
  18. fastcgi_param  SERVER_ADDR        $server_addr;  
  19. fastcgi_param  SERVER_PORT        $server_port;  
  20. fastcgi_param  SERVER_NAME        $server_name;  
  21.   
  22. # PHP only, required if PHP was built with --enable-force-cgi-redirect  
  23. fastcgi_param  REDIRECT_STATUS    200;  

基本上是官方自带的,我只加了 SCRIPT_FILENAME。

nginx 配置:

  1. server {  
  2.         listen 80;  
  3.         server_name www.example.com;  
  4.         access_log logs/example.access.log main;  
  5.   
  6.         server_name_in_redirect off;  
  7.   
  8.         root /home/www/wordpress;  
  9.         index index.php index.html index.htm;  
  10.   
  11.         location / {  
  12.                 try_files $uri $uri/ /index.php?q=$uri&$args;  
  13.         }  
  14.   
  15.         location ~ \.php$ {  
  16.                 include fastcgi_params;  
  17.                 fastcgi_pass 127.0.0.1:9000;  
  18.         }  
  19. }  

用 try_files 太简单了。都不用 rewrite 规则。

测试过可行的。

延伸:当然在生产环境像上面简单地用 php-cgi 是不行的。我用 spawn-fcgi 管理 php-cgi。