理想论坛
外汇网2021-06-21 23:34:15
91
域名http://www.55188.com/index.php 简介业内认可度: 网站在专业性方面是做得最好的,这一点非常值得赞赏。下一阶段发展的动力不可预估
(本项评级:6)
网站范围: 网站在范围方面是应当称道的,当前来看这一部分做得和专业程度相得益彰(本项评级:7)
访问量: 和网站范围比也还算可以了。受于站点的专业性,要有击穿或许得靠吸引许多的忠实用户了。(本项评级:7)
线上宣传:很显然,网站宣传方面您仍有许多的动力可挖,恐怕多做点交换链接吧,其余网站会愿意的。(本项评级:5)
综合实力: 恭喜您,您的网站和其余网站已经有质的区别了,以后的成长不可限量。
发展小评: 一点小结论,您的网站各类指标我们认为依旧比较均衡。 发展很不错,请继续维持吧。
我们建议:您多注意一部分线上宣传,多和一部分可信的站点做下链接吧,或者尽或许让人引用您的内容
一下为网站架构:
以前理想论坛有三台服务器,两台WEB服务器以及一台报告库服务器,访问已经逐渐显现短板,在猪头的建议下,站长决定增长一台服务器放报告库,此外三台做WEB,而且对原有的服务器的操作系统执行升级。 硬件具体情形MySQL服务器: DualXeon 5335/8GB内存/73G SAS硬盘(RAID0+1)/CentOS5.1-x86_64/MySQL5
三台WEB服务器如下:
N1. Dual Xeon 3.0 2GB 内存
N1. Dual Xeon 3.0 4GB 内存
N1. Dual Xeon 3.0(双核) 4G内存
此外有三块300G的SCSI硬盘准备做RAID5,用来存放附件,四台机器通过内网连接
猪头考虑过的处理方案如下:
1. ZEUS + PHP5 + eAccelerator
2. squid + Apache2 + PHP + eAccelerator
3. nginx + PHP(fastcgi) + eAccelerator
4. nginx + Apache2 + PHP + eAccelerator
第一个方案,属于比较完美的,而且很平稳,但是最大的困难是ZEUS是收费软件,用盗版总会受良心责备的,所以临时押后做候补方案
第二个方案,squid转发请求给Apache2,很多网站都采取该种方式,而且效率也非常高,猪头也试探了一下,但是困难非常严重,由于squid是把文件缓存起来的,所以每一个访问过的文件,squid都要把它打开,理想论坛拥有150G的附件,而且访问量重大,该种情形下只有打开squid,机器迅速就会由于打开文件过多而婉拒响应任何请求了,看来也不适合,只适合缓存文件只有几百M在内的网站.
第三个方案,猪头对第三个方案的试探结果是访问量大的时机,PHP经常会显现bad gateway,看来通过TCP连接Fastcgi实施PHP的方法不够平稳,猪头也试探了通过Unix Socket连接实施PHP,同样依旧不平稳.
对比之下,猪头当前运用了第四种处理方案.
Apache2的安装。
(受于服务器采取FreeBSD7,所以多部分软件将令通过ports安装)
受于Apache2只需要处理PHP请求,所以其余模块差不多都不需要,所以不要选择安装其余模块,即便rewrite也不需要,由于rewrite将令在nginx上面达到,假使熟悉,还可以修改Makefile删掉不需要的部分,如此经历优化之后,apache将令以最平稳最高效的方式处理PHP请求
cd /usr/ports/www/apache20
make install clean
修改httpd.conf(这里仅列出要修改/增长的部分)
vi /usr/local/etc/apache2/httpd.conf
把KeepAlive On修改为KeepAlive Off,在下面添加
ServerLimit 2048
MaxClients增长到512
Listen 127.0.0.1:81 #受于httpd服务器不需要对外放开,仅仅处理nginx转发过来的PHP请求,所以仅仅需要监听本地的端口.
此外增长对PHP的支持
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
至于添加虚拟主机的部分将不再罗嗦,注意虚拟主机也监听本地81端口就可以了
PHP5的安装(GD库等模块请提早装好)
cd /usr/ports/lang/php5
修改一下Makefile,把需要的东西加之去吧
本来应当有如此一段的
CONFIGURE_ARGS= \
--with-layout=GNU \
--with-config-file-scan-dir=${PREFIX}/etc/php \
--disable-all \
--enable-libxml \
--with-libxml-dir=${LOCALBASE} \
--enable-reflection \
--program-pfix=""
我们要把它修改成
CONFIGURE_ARGS= \
--with-layout=GNU \
--with-config-file-scan-dir=${PREFIX}/etc/php \
--disable-all \
--enable-libxml \
--with-libxml-dir=${LOCALBASE} \
--enable-reflection \
--program-pfix="" \
--with-config-file-path=/etc --enable-mbstring --enable-ftp --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --enable-magic-quotes --with-mysql=/usr/local --with-pear --enable-sockets --with-ttf --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-zlib --enable-sysvsem --enable-sysvshm --with-libxml-dir=/usr/local --with-pcre-regex --enable-xml
make install clean
cp work/php-5.2.5/php.ini-dist /etc/php.ini
安装eAccelerator
cd /usr/ports/www/eaccelerator
make install clean
把下方部分添加到php.ini尾端:
extension_dir="/usr/local/lib/php/20060613/"
extension="eaccelerator.so"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.shm_size="64"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="60"
eaccelerator.shm_prune_period="60"
eaccelerator.shm_only="0"
eaccelerator.compss="1"
eaccelerator.compss_level="9"
eaccelerator.keys="shm_and_disk"
eaccelerator.sessions="shm_and_disk"
eaccelerator.content="shm_and_disk"
建立缓存目录以及修改权限
mkdir /tmp/eaccelerator
chmod 777 /tmp/eaccelerator
chown nobody:nobody /tmp/eaccelerator
nginx的安装以及配置
cd /usr/ports/www/nginx
make install
有几个module是我们需要的,要选上
HTTP module
http_addition module
http_rewrite module
http_realip module
http_stub_status module
其余的看自己需要了
修改配置文件
vi /usr/local/etc/nginx/nginx.conf
user nobody nobody;
worker_processes 4;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid /var/log/nginx.pid;
events {
worker_connections 10240;
}
http {
include mime.types;
default_type application/octet-stream;
limit_zone one $binary_remote_addr 10m;
#log_format main '$remote_addr - $remote_user [$time_local] $request '
# '"$status" $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
sendfile off;
tcp_nopush off;
#keepalive_timeout 0;
keepalive_timeout 10;
gzip off;
server {
listen 80;
server_name www.55188.net www.55188.com www1.55188.com www2.55188.com 55188.com 55188.net www.55188.cn 55188.cn bbs.55188.net bbs.55188.com bbs.55188.cn;
index index.html index.htm index.php;
root /home/www;
access_log /dev/null combined;
limit_conn one 5;#制约一个IP并发连接数为五个
error_page 404 /404.html;
error_page 403 /403.html;
location /status {
stub_status on;
access_log off;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
}
#在根目录运用Discuz6.0 rewrite规则,假使你的论坛在二级目录下面,则要相应修改location
location / {
rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;
rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last;
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page\%3D$3&page=$2 last;
rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;
rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;
break;
error_page 404 /404.html;
error_page 403 /403.html;
}
#对附件做防盗链,没有正确的referer将令返回403页面
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ {
valid_referers none blocked server_names *.55188.net *.55188.com;
if ($invalid_referer) {
rewrite ^/ http://www.55188.com/403.html;
}
}
#转发PHP请求到本地的81端口,让Apache处理.
location ~ \.php$ {
proxy_pass http://127.0.0.1:81;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header Content-Type;
}
}
}
试探一下你的配置文件能否都正确
/usr/local/sbin/apachectl configtest
/usr/local/sbin/nginx -t
都没困难的话就起步服务器吧
/usr/local/sbin/apachectl start
/usr/local/sbin/nginx -c /usr/local/etc/nginx/nginx.conf
浏览一下主页,应当正常了 后继讨论1.报告库.
报告库的编译安装不再重复讨论,仅仅讨论环境,受于理想论坛的报告库比较大,而且发展比较快,所以要作比较前一点的预算,硬盘需要运用15K RPM的SAS硬盘做RAID0+1,操作系统需要运用64名版本,由于服务器需要8GB内存,要注意的时,运用了64名系统之后部分比较老的软件或许你无法寻到64名的版本,这台机器就专门做MySQL服务器吧,假使报告库胜过10G,应当考虑MySQL_Cluster
2.附件.
由于有三台服务器做WEB,所以附件要运用nfs的方式通过内网执行共享,至于如何设置nfs这里不再讨论,假使有不明白的请将学费交给Google
3.WEB.
受于三台机器硬件配置不统一,所以有必要考虑一下负载平衡的困难,nginx自身附带有负载平衡的功能,但是假使启用负载平衡的功能的话,每台机器全会会将客户端请求的报告缓存到本机,如此增长了硬盘的IO,对于理想论坛的访问量来看,这是个不小的开销,最后我们是运用DNS查询的方式来分配流量, 通过不同的A记录,配置好点的机器,多分一条A记录,配置差的就少一条A记录,如此从整体向上瞧,流量分配应当比较平衡.
4.有关nginx并发连接
猪头给nginx制约了每个IP的并发连接,由于对于大论坛来看,总是比较出名的,不说人家攻击你什么的.采集都特别多,假使不制约,很容易出困难,经常会致使PHP罢工.
以上导致猪头愚见,假使有其余进度,猪头会更新本贴,如有疑问或者不同见解,欢迎提出讨论
诚然仍有很多很疯狂的方法,比如说把WEB文件(附件除外)全部放内存里面,MYSQL假使差于5G,也可以全部放内存里面,然而这些方法均为太极端的了,优化效果须然好,但是风险很大。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
优化之后的效果
受于仍有两台机器升级没完成,只帖一下其中一台WEB的情况了。当前
Active connections: 1143
server accepts handled requests
1211445 1211445 6221785
Reading: 67 Writing: 136 Waiting: 940
Apache最优化要关闭不用的模块,由于httpd请求全部让nginx处理了,Apache仅仅需要处理PHP就可以了,当前我开启的模块
LoadModule access_module libexec/apache2/mod_access.so
LoadModule setenvif_module libexec/apache2/mod_setenvif.so
LoadModule mime_module libexec/apache2/mod_mime.so
LoadModule autoindex_module libexec/apache2/mod_autoindex.so
LoadModule negotiation_module libexec/apache2/mod_negotiation.so
LoadModule alias_module libexec/apache2/mod_alias.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php5_module libexec/apache2/libphp5.so
autoindex negotiation以及rewrite这些应当都关闭的,但是要解决相应的修改.当前跑起来绝对比Fastcgi要好
标签:
随机快审展示
加入快审,优先展示
推荐文章
- 黑马在线:均线实战利器 8028 阅读
- 短线交易技术:外汇短线博弈精讲 3480 阅读
- MACD震荡指标入门与技巧 3609 阅读
- 黄金操盘高手实战交易技巧 3835 阅读
- 做精一张图 2770 阅读
热门文章
- 港币符号与美元符号的区别是什么啊? 21881 阅读
- 我国各大银行汇率为什么不一样啊? 10491 阅读
- 越南盾对人民币怎么算的?越南盾对人民币汇率换算方法是什么 8993 阅读
- 黑马在线:均线实战利器 8028 阅读
- 百利好环球欺诈,不给出金,无法联系。 7862 阅读