Linode VPS with Nginx的进一步优化

星期三, 十二月 2nd, 2009

  • 清理系统服务

    可以关闭不必要的系统服务,linux下常用chkconfig,在ubuntu系统上最常用sysv-rc-conf,界面更友好使用更方便,直接通过源安装即可运行。

    sudo apt-get install sysv-rc-conf
    sudo sysv-rc-conf
    		

    通过软件可以发现,Linode提供的系统已经关闭了很多不必要的服务,但是系统自带了apache,直接取消选择关闭即可。

  • nginx过期设置

    在nginx中,可以对部分类型资源配置过期时间,以利用客户端缓存,降低服务器端负载,某些媒体资源可以禁用log。

    在对应的nginx配置文件youdomain.com中添加

    location ~* ^.+\.(gif|jpg|jpeg|png|bmp|ico|swf)$ {
    	 root /home/myname/wwwroot/yourdomain.com;
    	 access_log off;
    	 expires 7d;
     }
    
    location ~* ^.+\.(js|css)$ {
    	root   /home/myname/wwwroot/yourdomain.com;
    	expires 24h;
    }
    		
  • wordpress静态化

    cos-html-cache是WP的静态化插件,他可以将WP通过UrlRewrite优化过的Url链接彻底静态化。你只需要在WP后台设置固定链接为某种静态文件类似的形式(例如/archives/%post_id%.html),你就可以使用该插件生成对应的静态文件,从此用户将直接访问此静态文件,而不必再通过php解释,极大提高运行效率。

    具体操作上面链接描述很详细,无需赘述。

    不过我在启用此插件后,发现能正常生成网站根目录下index.html,但无法生成/archives/%post_id%.html。我写了一个php脚本放在网站根目录下测试,也无法在/archives目录下生成文件,提示找不到该目录。在cos-html-cache源文件中可以找到,生成html文件的脚本,路径信息是通过$_SERVER["DOCUMENT_ROOT"]获取的,但是尝试打印该值发现无值。最后我发现必须在Nginx站点配置文件中在php-fast-cgi的配置项里增加网站的root路径如下

    location / {
    	root   /home/myname/wwwroot/yourdomain.com;
    	index  index.html index.htm index.php;
    
    	if (-f $request_filename) {
    		break;
    	}
    	if (-d $request_filename) {
    		break;
    	}
    
    	rewrite ^(.+)$ /index.php?q=$1 last;
    
    }
    location ~ \.php$ {
    
    	#必须定义root -----------------------------------------
    
    	root   /home/myname/wwwroot/yourdomain.com;
    
    	#------------------------------------------------------
    
    	fastcgi_pass	127.0.0.1:9000;
    	fastcgi_index	index.php;
    	fastcgi_param	SCRIPT_FILENAME  /home/myname/wwwroot/yourdomain.com$fastcgi_script_name;
    	include		/usr/local/nginx/conf/fastcgi_params;
    }
    		

    如果不添加该root信息,在php中则无法正确获取$_SERVER["DOCUMENT_ROOT"]参数,会导致路径定位错误。不过按照一般逻辑,这个应该是继承前面的root设置,不必重复定义。也许是因为fastcgi是从nginx转向到另一个新的进程的缘故,所以需要具体定义参数传递。不过nginx应该自动获取该值,避免重复手工操作。

3 Responses to “Linode VPS with Nginx的进一步优化”

  1. 微醺漂移 Says:

    感谢博主的分享,你这篇文章讨论的是index.php的问题,我目前遇到的问题是win+iis环境下安装了cos-html-cache,但是无法生成/archives/%post_id%.html文件;我刚开始学习WordPress,不知博主是否可以帮助?等待您的来信,谢谢!

  2. linnchord Says:

    windows下估计是目录权限问题,你需要修改指定目录的权限设置。另外你好像没有留邮箱地址,所以我只能这里回复了……

  3. wwek Says:

    博主你好。 我的主机采用nginx搭建。版本为 0.8.30
    博客程序是WordPress。 启用了cos-html-chace。
    nginx已经做规则。现在的问题是。 cos-html-chace只生成了首页。
    文章的静态化文件不生成。

    博主啊。非常感谢你。我就是这个问题。太感谢了。