利用Nginx实现简易CDN节点

作者:linux120 发布时间:July 2, 2013 分类:服务器配置

使用Nginx泛域名解析+反向代理+静态资源缓存。
安装nginx,安装过程不再赘述,记得带上pcre、gzip、sub、status这几个模块,另外如果想开通在线清理缓存功能,需要安装ngx_cache_purge这个第三方模块。
删除nginx.conf中默认的server段,此操作不做你会让你抱憾终身。
将以下代码插入nginx.conf尾部,-t测试-s reload重启即可。
#定义缓存的临时目录以及缓存存储目录
proxy_temp_path /data/temp;
proxy_cache_path /data/cache levels=1:2 keys_zone=cache_one:32m inactive=1d max_size=3g;
server
{
listen 80;
#接收泛域名解析,务必保证在这之前没有其他server段干扰。
server_name _;
root /tmp;
access_log off;

#匹配出对应域名
if ( $host ~* (.*)\.(.*)\.(.*))
{
set $domain $1;
}

location /
{
#定义所使用的缓存以及缓存的目录结构。
proxy_cache cache_one;
proxy_cache_valid 200 304 12h;
proxy_cache_key $host$uri$is_args$args;
#下面这条灰常重要,告知upstream源服务器所要请求的域名是什么。
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#把请求扔给upstream,然后等着领赏吧。
proxy_pass http://jp0129;
proxy_set_header Accept-Encoding "";
expires 1d;
}
location ~ .*\.(php)?$
{
#动态请求不缓存
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_pass http://jp0129;
proxy_set_header Accept-Encoding "";
}
}
upstream jp0129
{
server 106.187.51.139;
}
大功告成,根据自身情况上机器,每台部署一个nginx即可,在域名管理中把vcs.host789.com直接A记录几条轮询,配合一个小脚本来实现检测各个节点是否存活,节点宕掉就直接通过dnspod的api修改vcs.host789.com的解析记录,剔除无效节点即可。

web.py调试session无效

作者:linux120 发布时间:May 19, 2013 分类:服务器配置

因业务需要使用web.py写了个简易缓存系统VCS,在调试session的时候死活无法生效,提示线程字典不存在login方法,纠结的发现web.py的session系统在调试(Debug)/重载(Reloader)模式下是无法生效的,可以按如下两种方式解决:
1、添加web.config.debug = False关闭调试模式,session就可以生效了。
2、在合适位置如下代码,让session在调试模式下可用:
if web.config.get('_session') is None:
session = web.session.Session(app, db.SessionDBStore())
web.config._session = session
else:
session = web.config._session

CentOS挂载NFS失败一例

作者:linux120 发布时间:April 14, 2013 分类:服务器配置

执行mount -t nfs -o rw 10.51.8.8:/volume1/330 /mnt提示如下错误:
mount: wrong fs type, bad option, bad superblock on 10.51.8.8:/volume1/330,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount. helper program)
In some cases useful info is found in syslog - try
dmesg | tail or so
是因为没有安装nfs-utils,centos 6下执行yum install nfs-utils rpcbind -y安装即可。

再次加载提示如下信息:
mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified
提示statd服务没有运行所以需要启动该服务或者使用-o nolock来正常挂载。

Sinatra报unrecognized option

作者:linux120 发布时间:March 12, 2013 分类:服务器配置

安装部署sinatra时报如下错误:
Successfully installed sinatra-1.3.5
1 gem installed
Installing ri documentation for sinatra-1.3.5...

unrecognized option `--encoding=UTF-8'

For help on options, try 'rdoc --help'

ERROR: While generating documentation for sinatra-1.3.5
... MESSAGE: exit
... RDOC args: --ri --op /usr/lib/ruby/gems/1.8/doc/sinatra-1.3.5/ri --line-numbers --inline-source --title Sinatra --main README.rdoc --encoding=UTF-8 lib README.de.rdoc README.es.rdoc README.fr.rdoc README.hu.rdoc README.jp.rdoc README.ko.rdoc README.pt-br.rdoc README.pt-pt.rdoc README.rdoc README.ru.rdoc README.zh.rdoc LICENSE --title sinatra-1.3.5 Documentation --quiet
以上错误提示encoding无法识别,是由于rdoc引起的问题,解决方法有以下两种:
1、gem install rdoc
2、gem install sinatra --no-rdoc

修改Mysql默认几个操蛋的参数

作者:linux120 发布时间:February 18, 2013 分类:服务器配置

废话不多说,直接看文章。

max_connect_errors
max_connect_errors=1844674407370954751 或者定期执行 FLUSH HOSTS 命令。

connect_timeout
默认值是28800,建议修改为30

skip-name-resolve
建议开启该选项,将大大加快连接的速度。