开发者社区> 问答> 正文

苦逼在阿里云的主机升级成功,分享使用云主机搭建高性能博客的经验

系统配置(升级前):1M带宽,512MB内存,60G磁盘。
使用伺服套件:Tengine  Apache PHP MySQL




演示: http://www.xiazijiang.com/


先看下压测效果吧:






*.在上图所示2000 并发时访问博客仍然速度如飞。但再增大压测量,阿里云就把云主机网络禁了(我可以确定除开网络、内存IO外,云主机上没有吃紧的资源运算),跪求阿里云解决。


首先执行(centos自带apache): service httpd stop



根据 http://www.zijidelu.org/thread-47148-1-1.html的教程,先执行以下命令
wget http://down.zijidelu.org/zijidelu_install.sh; chmod 740 zijidelu_install.sh; ./zijidelu_install.sh
选择中文下载点,安装最新的套件。然后还有几个类似确认的(系统环境更新一下)
然后脚本会自动安装所需要的所有伺服套件。
安装过程大约20分钟。


安装完成过后按任意键系统将自动reboot.然后访问 http://ip:8888(下称lumanager),将登录、安全、数据库密码全部修改掉。
进入lumanager后,点击配置与优化,下面NGINX选项进去后切换成tengine.


然后将Tengine 更新到新版:
cd /root
wget http://tengine.taobao.org/download/tengine-1.3.0.tar.gz
tar zxvf tengine-1.3.0.tar.gz
wget http://sourceforge.net/projects/pcre/files/pcre/8.13/pcre-8.13.tar.gz/download
tar zxvf pcre-8.13.tar.gz
cd pcre-8.13
./configure --prefix=/usr/local/pcre
make && make install
cd ../tengine-1.3.0
./configure  --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_sysguard_module --with-openssl=/usr/ --with-pcre=/root/pcre-8.13
make && make install
如果没有致命错误,新版tengine应该已经覆盖掉了原先的,执行下面命令重启/重载tengine即可 service nginx restart(重启)/reload(重载)

然后去lumanager网站管理里创建一个网站即可,注意,要选择“仅PHP由APACHE执行”,这样才能做到Tengine做前端,Apache做后端跑PHP。
(为什么不用NGINX FAST CGI?因为CGI下的PHP非常不稳定)


后面这应该是关键的了,配置网站的CACHE(注意此处贴出的配置代码仅适用于个人博客,论坛等多用户CMS慎用!!!否则容易串号,如果有耐心我可以过几天给一个用户CMS的配置教程【因为cookie前缀不同,应该没有通用的】)。


先看你系统有没有挂载tmpfs虚拟分区(我安装阿里云CENTOS 32位自带挂载)。如果没有请百度、谷歌相关教程挂载上即可。
为什么要用虚拟分区?因为读写内存的速度比读写硬盘快,对硬盘性能的影响几乎为0(不影响整台母机的DD性能)。
[root@mjj~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda1             49766808   5437076  41760944  12% /
tmpfs                   517368         0    517368   0% /dev/shm
[root@mjj~]#

如果是上面所示,恭喜你系统已经成功挂载了tmpfs
cd /usr/local/nginx/conf
vi nginx.conf
修改NGINX.CONF,在HTTP段加入以下配置 proxy_cache_path  /dev/shm/ngx levels=1:2 keys_zone=cache:10m inactive=600s max_size=3m;
    proxy_temp_path  /dev/shm/ntmp;
上面的各项参数是, /dev/shm/ngx 是缓存路径,/dev/shm/ntmp 是临时路径,keys_zone=cache:10m 是命名为cache的缓存空间,大小分配10M,inactive=600s 表示600秒内没有访问过自动清除掉,max_size=3m;是最大单个文件3M。
按[esc]->[:]->[w]->[q]保存退出vi
然后再执行 vi vhost.conf在server段上面(不是加在内部的上面,而是外部的上面)加入
upstream yourserverpool{  #修改成你的
    server 127.0.0.1:8889 weight=1 fail_timeout=1s;  #这个按你机器的配置来定,若配置好些可以设置大点
}
然后在server{}里的location / {  }
里面加入
proxy_no_cache 0;
        proxy_set_header Host  $host;
proxy_set_header X-Forwarded-For  $remote_addr;
        
        #忽略后端的cache控制头
        proxy_ignore_headers "Cache-Control" "Expires";
        #对不同的HTTP状态码设置不同的缓存时间
        proxy_cache_valid  200 302 304 5m; #正常响应缓存5分钟,一般来说5分钟够安全了。如果怕影响体验可以适当设置小点
        proxy_cache_valid  301 1h;
        proxy_cache_valid  any 10s;
        proxy_cache_key $host$uri$is_args$args;
        proxy_cache cache ;#改成你的

        proxy_pass http://yourserverpool;#改成你的
然后保存退出VI,执行 service nginx reload进入你的博客目录
cd /home/xxx
#home/xxx换成你博客的路径
vi testcache.php
加入以下代码
<?php echo date('Y-m-d H:i:s')."\r\n";
?><br/>To see this page will be cached(time stop) how long?<script>setTimeout('location.reload();',1000);</script>
访问下 http://yourdomain.com/testcache.php看是否已经成功缓存住了。一般情况下是缓存住了的。


然后再测试下访问你博客,多访问几次,看nginx的日志是不是  比apache的日志  的条目数量多?
cat /var/log.log | grep '\n' -c
#一般日志中是一行一条,这命令是返回所有的换行符
如果确实要多,并且访问博客过程中,比第一次访问明显要快,那就OK,缓存住了。


原创文章啊,转载至少给个链接呗!!~~~

展开
收起
enj0y 2012-07-26 07:52:52 26432 0
13 条回答
写回答
取消 提交回答
  • Re苦逼在阿里云的主机升级成功,分享使用云主机搭建高性能博客的经验
    好厉害啊 大叔!
    2012-08-23 14:47:29
    赞同 展开评论 打赏
  • Re苦逼在阿里云的主机升级成功,分享使用云主机搭建高性能博客的经验
    你在说什么啊?我就看懂了前面10行。
    2012-07-30 16:52:25
    赞同 展开评论 打赏
  • Re苦逼在阿里云的主机升级成功,分享使用云主机搭建高性能博客的经验
    真心看不懂,但是觉得楼主很厉害的样子。

    -------------------------

    Re苦逼在阿里云的主机升级成功,分享使用云主机搭建高性能博客的经验
    不懂觉厉。
    2012-07-27 22:02:02
    赞同 展开评论 打赏
  • Re苦逼在阿里云的主机升级成功,分享使用云主机搭建高性能博客的经验
    还是没太看懂,LZ能不能帮我解答下这个问题,我能不能用LUM?
    http://bbs.aliyun.com/read.php?tid=114221
    2012-07-27 21:59:45
    赞同 展开评论 打赏
  • Re苦逼在阿里云的主机升级成功,分享使用云主机搭建高性能博客的经验
    lumanager这种无比消耗自动资源的东西用在只有512M内存的机器上面并不太合适吧。。。。
    2012-07-27 18:52:02
    赞同 展开评论 打赏
  • Re苦逼在阿里云的主机升级成功,分享使用云主机搭建高性能博客的经验
    我按照你的步骤 搞了一下,发现还缺点什么,最好能出个全面的优化方案出来了,可能技术太菜鸟很多东西设置的有问题了
    2012-07-27 18:43:27
    赞同 展开评论 打赏
  • 技术贴啊,我来晚了,我靠。
    2012-07-26 14:09:52
    赞同 展开评论 打赏
  • Re苦逼在阿里云的主机升级成功,分享使用云主机搭建高性能博客的经验
    现在的站长都不怕死啊。 网上下个sh看也不看就跑。。。
    鄙人属自虐型的, 凡是跑在我服务器上的东东都官网下载..

    -------------------------

    Re苦逼在阿里云的主机升级成功,分享使用云主机搭建高性能博客的经验
    另外经济A型2K并发你还想怎样,这个小服务器CPU内存带宽根本受不起这样的负载。有这个限制是保护你的安全
    2012-07-26 14:01:55
    赞同 展开评论 打赏
  • Re苦逼在阿里云的主机升级成功,分享使用云主机搭建高性能博客的经验
    不错,顶一个!
    2012-07-26 09:59:20
    赞同 展开评论 打赏
  • Re苦逼在阿里云的主机升级成功,分享使用云主机搭建高性能博客的经验
    速度不错啊,我还没开始用。
    2012-07-26 09:39:35
    赞同 展开评论 打赏
  • Re苦逼在阿里云的主机升级成功,分享使用云主机搭建高性能博客的经验
    厉害哦,收藏学习下!不过瞧瞧问个问题:兄弟,你怎么实现的,我看你没备案呀,但是却能用阿里云主机。。。
    2012-07-26 08:36:51
    赞同 展开评论 打赏
  • 不用测,用了一年了,压测真心没必要,好不好自己知道

    -------------------------

    回 3楼(ap6214f2r) 的帖子
    高端啊,你的阿里云镜像,准备把服务器分给别人用?
    2012-07-26 08:13:50
    赞同 展开评论 打赏
  • 忘记说了扫尾工作:
    务必要禁止8889对外服务。不然别人可以直接访问到你apache.

    -------------------------

    回 2楼(top1314) 的帖子
    遇上攻击你就哭了。不过这是博客用的,多用户CMS要复杂些。

    -------------------------

    回 4楼(xiaonian1986) 的帖子
    这只是演示用途,后面这个项目系统做得快上线的时候我会去备案的。

    -------------------------

    回 9楼(ap8384g5e) 的帖子
    我也是为了简化。
    后面我都把zijidelu的主服务卸载了的。
    只保留tengine apache php mysql memcached.

    -------------------------

    回 10楼(ap8384g5e) 的帖子
    关键是,你服务器根本没有压力,只是网速上跑满了。

    而且,网速达到最大维持一段时间就被禁网了,而自己本身没压力,我感觉被阿里云欺负了。

    最最最关键的是。用此配置过后,直被禁前几秒,博客仍然是秒开的。。。

    -------------------------

    回 15楼(smdcn) 的帖子
    用了过后秒卸,我只用它来快速安装apache php mysql。

    -------------------------

    回 17楼(jeffc) 的帖子
    LUM肯定是可以成功安装的。

    P.S:我第一次在阿里云主机上安装时,没安装成功而且还有残留(估计就是因为CENTOS自带HTTPD占用了80),然后卸载了LUM,然后在网上搜了个卸载CENTOS自带APACHE的教程,操作后重装了下LUM就OK了

    -------------------------

    回 20楼(ap8384g5e) 的帖子
    这不是静态,严格说来比静态还高效的。
    直接从内存调取。
    2012-07-26 07:58:30
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
公共云弹性计算最佳实践-省钱窍门之六:省钱组合拳案例-HPC 立即下载
总监课第四期公共云弹性计算最佳实践 - 6个省钱窍门+4个典型误区第八节:典型误区二:云盘数据高枕无忧 立即下载
公共云弹性计算最佳实践-省钱窍门之二:抢占式实例 立即下载