yjiang's cake

记:VPS折腾笔记6 - varnish

以前很多东西都是管理员给弄好,自己只要埋头写代码就好了,效率之类的完全不去考虑.

当问起这个事儿,管理员说:最后在外层拿varnish包一层缓存就好了.

varnish?

缓存?

完全云里雾里.

近来闲的无聊,抽空把varnish大概了解了一遍, 原来就是前端的文件缓存工具.

这种东西,感觉一定要折腾一下才有继续深入的动力,且想到VPS上这个wordpress博客,居然扛不住50的并发,相当的窝火啊(马大牛说可能是插件原因).就拿你开刀了.

因为nginx已经占用了80端口,而且包老板的网站也都在上面,其中有个dz论坛,这东西好像并不适合做文件缓存,这样就不能整体把nginx端口改为非80端口.所以就有了下面这个方案:

varnish+nginx

我想应该有更好的解决办法,知道的话还请不吝赐教,谢谢!

开始实施

1.安装varnish的方法官方写的很详细,直接链接过来.

2.安装完后修改 /etc/varnish/default.vcl.

backend default {
    .host = "yjiang.tk";
    .port = "8080";
}
sub vcl_recv {
    if (!(req.url ~ "wp-(login|admin)")) {
        unset req.http.cookie;
    }
}
sub vcl_deliver {   #输出命中状态到http_header
    set resp.http.x-hits = obj.hits ;
    if (obj.hits > 0) {
        set resp.http.X-Cache = "hit cache";
    }
    else {
        set resp.http.X-Cache = "miss cache";
    }
}
sub vcl_fetch {
    set beresp.grace = 60m;
    if (!(req.url ~ "wp-(login|admin)")) {
        unset beresp.http.set-cookie;
    }
}

3.简单写个脚本来重启varnish以及修改到默认的端口.

#!/bin/sh

if [ -z $1 ]
then
    echo "defalut port 8080 used"
    port=8080
else
    port=$1
fi

pkill varnish

varnishd -f /etc/varnish/default.vcl \
         -s file,/tmp/varnish_cache.data,128M \
         -a 0.0.0.0:$port

netstat -ntlp | grep varnish

4.nginx虚拟主机文件修改,把原来的80端口改为8080,并新增个一个反向代理到80端口.

   server {
    listen  80;
    server_name yjiang.tk;            #绑定域名
    location / {
        proxy_pass http://127.0.0.1:88;
        include /etc/nginx/proxy_params;
    }
}

server {
    listen  8080;
    server_name yjiang.tk;            #绑定域名 
    root /var/www/cake;                     #网站根目录
    index index.htm index.html index.php;   #默认文件
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;  #fastcig_params参数文件地址
    } 
    access_log  /var/log/nginx/access_cake.log;
    error_log  /var/log/nginx/error_cake.log;
}

5.执行重启varnish的脚本并重启nginx,OK.


测试一下效果

QQ图片20130606122509

webbench测一下,500并发量的情况下,CPU占用15.6%,感觉良好.

iftop_201430606

刷新下网站,依旧打不开,用 iftop 一看,带宽占满了.这个瓶颈就只能靠万能的RMB了...


问题

  • 当给nginx设置一个非80端口并访问此域名时,总会跳到IP默认站点.(已解决:如何设置nginx的IP默认站点

  • 如果nginx不设置一个默认站点,依旧会访问到一个虚拟主机,没搞明白哪里设置出问题了.

  • varnish配置文件还只有个后端,其他规则需要继续折腾.

配置nginx的ip默认站点

一个VPS一般都会有多个虚拟主机,当想把访问IP时,导向到某个虚拟主机可按如下配置虚拟主机文件:

server{ 
    listen 80 default;
    server_name xxx.com; 
    ... 
}

listen 后增加 defalut 即可.

修改apache2虚拟主机端口

1.修改 /etc/apache2/ports.conf

增加 NameVirtualHost *:8080 Listen 8080

用来监听相应的端口

2.修改对应的虚拟主机文件 /etc/apache2/sites-enabled/yjiang

<VirtualHost *:8080> 
    ServerName yjiang.blog 
    ServerAdmin webmaster@localhost 
    RewriteEngine On 
    RewriteOptions Inherit

    DocumentRoot /home/yjiang/letou/blog
    <Directory /home/yjiang/letou/blog/>
            Options -Indexes FollowSymLinks
            AllowOverride All
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog /var/log/apache2/yjiang.blog-error.log
    CustomLog /var/log/apache2/yjiang.blog-access.log combined-time

</VirtualHost>

协调的Ubuntu开始菜单:ClassicMenu Indicator

ClassicMenu_Indicator

有点像Gnome Classic,感觉还不错.mark~

可以官网下载 classicmenu-indicator.

或者直接从软件源安装

sudo apt-add-repository ppa:diesch/testing
sudo apt-get update && sudo apt-get install classicmenu-indicator

建议官网下载安装吧,这个源有很多链接404了.

为ubuntu13.04更换图标-Faenza

QQ图片20130603101446

添加Faenza图标源及安装

 sudo add-apt-repository ppa:tiheum/equinox
 sudo apt-get update
 sudo apt-get install faenza-icon-theme

添加Ubuntu-Tweak源及安装

 sudo add-apt-repository ppa:tualatrix/ppa
 sudo apt-get update
 sudo apt-get install ubuntu-tweak

进入Dash主页,搜索新安装的Tweak,打开 调整->主题->图标 选择Faenza 即可.

Copyright © 2016 yjiang's cake

返回顶部