nginx 上部署 wordpress

自己有个 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。

posted @   wenanry  阅读(15542)  评论(3编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
点击右上角即可分享
微信分享提示