找回密码
 注册
广告投放 虚位以待【阿里云】2核2G云新老同享 99元/年,续费同价做网站就用糖果主机-sugarhosts.comJtti.com-新加坡服务器,美国服务器,香港服务器
查看: 590|回复: 0

directadmin主机上使用nginx做前端提高系统性能

[复制链接]
发表于 2010 年 10 月 2 日 13:41:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×

directadmin是使用相当广泛的一套linux主机管理系统,使用apache+php+mysql这样的主流结构,效果好,稳定性佳,操作方 便,功能强大。
但是apache作为一个虽然稳定的web结构,并发数的支撑却不是很理想。在目前的环境下,比较流行的nginx+php- fpm的fastcgi结构,单纯跑部分php应用性能十分好,却又不能像directadmin那样方便的管理。
其实我们完全可以用nginx 作为apache前面的前端,利用nginx从0.7之后支持的缓存功能,nginx可以处理大部分对于静态文件的请求,并且并发性能好,很大程度上减少 apache的并发负载。动态的php文件再转发给apache处理,在不影响directadmin的使用上,可以有效的提高系统的性能。
当然 这样做也是有一些缺陷的。例如说,静态文件从apache传递给nginx缓存起来,在一个缓存周期内nginx不需要再向apache发起请 求,directadmin对流量的统计就会与服务器上真实传出去的流量有区别。在一个周期内apache只要传输一次,nginx却仍然需要对用户传递 多次的文件。同时缓存周期假设设置过短,起不到多好的减少负载效果,假设设置过长,又会明显的影响到用户的访问体验。用户会发现在后台上传的静态文件,在 前台怎样刷新都不会变,一定要等到一个缓存周期过去。除非使用style.css?ver=0.2这样的形式,才可以查看效果。这样毕竟影响了用户的使用 体验,利弊值得斟酌。但总的来说瑕不掩瑜,这个方法还是很大程度上可以提高系统的负载能力的。
和直接用nginx做代理转发apache的内容略 有不同,在directadmin系统上,我们还要额外加一些东西。
首先,下载nginx。我现在用的还是0.7系列的正式版本。
下载 后,编译。
tar zxvf nginx-0.7.66.tar.gz
cd nginx-0.7.66
./configure –prefix=/usr/local/nginx –user=nginx –group=nginx –with-http_stub_status_module –with-http_ssl_module
make
make install
然后先不要启动nginx,对conf文件做一些修改,主要是对缓存部分的设置。
vi /usr/local/nginx/conf/nginx.conf
里面对缓存的设置部分如下。写在http段里
    proxy_temp_path  /usr/local/nginx/proxy_temp;
    proxy_cache_path /usr/local/nginx/proxycache levels=1:2 keys_zone=CachePool:300m inactive=1d max_size=3g;

    server {
        listen       真实的公网IP:80;
        server_name  localhost;

        location / {
                proxy_pass      
http://127.0.0.2;
                proxy_set_header  X-Real-IP  $remote_addr;
                proxy_set_header  FORWARDED-FOR  $remote_addr;
                proxy_set_header Host $host;

                location ~* \.(js|css|gif|png|bmp|jpeg|jpg|swf)$ {
                        proxy_pass      
http://127.0.0.2;
                        proxy_set_header  X-Real-IP  $remote_addr;
                        proxy_set_header Host $host;

                        proxy_cache CachePool;
                        #proxy_cache_key $host$request_uri$http_if_modified_since;
                        proxy_cache_key $host$request_uri;
                        proxy_cache_valid 5m;
                }
        }
一些解释
max_size=3g 缓存占用的最大空间3G
proxy_pass
http://127.0.0.2
回头我们要把apache的监听改成监听这个IP的80端口。当然,也可以用其他端口和其他IP,这个自由设置。
proxy_cache_valid 5m; 缓存生存时间5分钟。这个时间的设置也要根据主机上的站点来具体设置,没有任何可以作为标准的说法。

设置完后,先停止 httpd。
/etc/init.d/httpd stop
/etc/init.d/directadmin stop
directadmin 也一定是要停的,不然会自动启动httpd进程。
修改文件
/etc/httpd/conf/extra/httpd-vhosts.conf
对应添加修改成
LogFormat “%O \”%r\”" homedir
NameVirtualHost 127.0.0.2:80
NameVirtualHost 真实公网IP:443
<VirtualHost 127.0.0.2:80>
    ServerAdmin webmaster@localhost
    AliasMatch ^/~([^/]+)(/.*)* /home/$1/public_html$2
    DocumentRoot /var/www/html
    ServerName localhost
    ScriptAlias /cgi-bin/ /var/www/cgi-bin/
    CustomLog /var/log/httpd/homedir.log homedir
</VirtualHost>
然 后安装一个apache需要的小模块。
wget
http://www.openinfo.co.uk/apache/extract_forwarded-2.0.2.tar.gz
tar zxvf extract_forwarded-2.0.2.tar.gz
cd extract_forwarded
apxs -c -i -a mod_extract_forwarded.c
结束后修改/etc/httpd/conf/httpd.conf

ServerRoot “/etc/httpd”
Listen 127.0.0.2:80

#LoadModule dummy_module /usr/lib/apache/mod_dummy.so
#LoadModule php5_module        /usr/lib/apache/libphp5.so
LoadModule extract_forwarded_module /usr/lib/apache/mod_extract_forwarded.so
MEForder refuse,accept
MEFrefuse all
MEFaccept 127.0.0.2
Include /etc/httpd/conf/extra/httpd-phpmodules.conf
FileETag none

User apache
Group apache

ServerAdmin admin@localhost
DocumentRoot “/var/www/html”

接下来是修改directadmin里已经建立的用户的对应配置。
cd /usr/local/directadmin/data/users
find -name ‘*.conf’ | xargs perl -pi -e ’s|真实公网IP|127.0.0.2|g’
然后修改directadmin的模板,让以后新添加的用户也自动启用对应的设置。
进 入/usr/local/directadmin/data/templates/custom  自定义模板的地方
里面需要从上层目录拷贝6个 文件进来。
ips_virtual_host.conf      
virtual_host2.conf     
virtual_host.conf
redirect_virtual_host.conf
virtual_host2_sub.conf
virtual_host_sub.conf
然后对应修改这六个文件中的部 分,主要就是类似<VirtualHost |IP|:80>的地方修改成<VirtualHost 127.0.0.2:80>,让directadmin生成用户配置文件的时候不写入真实IP,直接用127.0.0.2来代替。
然后就可 以了,检查确认无误。
/etc/init.d/httpd start
/usr/local/nginx/sbin/nginx  (启动nginx)
好吧,检查进程,里面已经有nginx和httpd同时在跑了。初次的缓存生成后,用户再次读取静态文件的时候,就不需要麻烦 apache去了。
nginx的高级设置,这个就另外自行查看资料了。在我实际跑的5台机器上,经过这样的设置后,都还是很有效的提升了系统负载 能力的。

原文出处:http://feiiiiiii.com/log/3729



Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|金光论坛

GMT+8, 2025 年 2 月 3 日 15:57 , Processed in 0.033495 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表