Archive

Archive for the ‘杂七杂八’ Category

wordpress迁移点滴

June 1st, 2011 yakjuly No comments

昨天把主机从dreamhost换到了linode,虽然觉得dreamhost很不错 但是没有root权限始终有点不快。

今年打算把服务器,运维等知识好好补充一下,于是买了口碑一直不错的linode的VPS。

第一天的任务就是 迁移博客。

1. scp把wordpress文件 都拷贝至新主机上

2.apt-get 安装mysql php5 php5-mysql php5-cgi libfcgi-dev spawn-fcgi nginx

3.使用spawn-fcgi 脚本 启动php5-cgi进程

sudo spawn-fcgi -f /usr/bin/php5-cgi -a 127.0.0.1 -p 9000 -C 3 -P /var/run/php5-cgi.pid

4.配置nginx

在/etc/nginx/sites-enabled下创建 yakjuly.com文件

server {
        listen   80;
        server_name yakjuly.com;

        access_log  /home/yakjuly/applications/yakjuly.com/log/access.log;
        error_log /home/yakjuly/applications/yakjuly.com/log/error.log;
        rewrite /wp-admin$ $scheme://$host$uri/ permanent;

        location / {
                root   /home/yakjuly/applications/yakjuly.com;
                index  index.php index.html index.htm;

                if (-f $request_filename/index.html){
                        rewrite (.*) $1/index.html break;
                }
                if (-f $request_filename/index.php){
                        rewrite (.*) $1/index.php;
                }
                if (!-e $request_filename){
                         rewrite . /index.php;
                }
        }

        location ~ .*\.php$ {
                include /etc/nginx/fastcgi_params;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param   SCRIPT_FILENAME /home/yakjuly/applications/yakjuly.com$fastcgi_script_name;
        }
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
解决了 /wp-admin 和/wp-admin/ 产生的url地址不一致的错误。
5.wordpress中文显示乱码。
在dreamhost时数据库是latin1,在导入linode时已经转化为了utf8 而且在mysql console中显示正常,说明是php的设置问题。
添加以下内容到wp-config.php
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', 'uft8_general_ci');
6.域名指向
登陆godaddy设置域名A记录指向新主机ip地址
10分钟后就生效了 感叹godaddy的神速 V5
新blog的访问速度明显比原来快得多。
Categories: ubuntu, 杂七杂八 Tags:

数据库备份导入乱码问题

May 30th, 2011 yakjuly No comments

备份数据库时需要知道原来数据库的文件编码格式是什么。

show variables like “%character%”

看到的结果可能是latin1可能是gbk可能是utf8 代表着你在原来数据存储文字编码的格式,在备份时需要设定–default-character-set。不设定则默认时utf8

mysql执行导出

mysqldump -uyakjulycom -pxxxxx -h mysql.yakjuly.com –default-character-set=latin1 yakjuly_com > yakjuly_com.sql

这样在yakjuly_com.sql文件中 的中文内容就能显示正确。

那么再导入另外一个数据库

本地的数据库设定了 character-set是uf8 如果直接source则在数据库中仍然显示乱码

原因是在yakjuly_com.sql内容的开头有定义

/*!40101 SET NAMES latin1 */;

把latin1替换为utf8 保存,然后再创建数据库source该文件或 执行

mysql -uroot -p –default-character-set=utf8 -f yakjuly_com < yakjuly_com.sql

这样数据库中的中文就显示正确了

 

Categories: database, 杂七杂八 Tags:

Workling + Carrot + RabbitMQ 做Rails后台任务

March 10th, 2011 yakjuly No comments

Workling 插件可以让 rails 以异步方式执行某些消耗时间和cpu的代码,他的特点是能非常方便的与别的消息队列服务器结合,而且代码也非常简单。

RabbitMQ 是一个由erlang编写的Message Queue服务器,特点是效率非常高。

后台任务需求:

程序中存在很多 耗费时间的任务,例如 整理文件,清理数据库垃圾,生成备份文件,请求某个网站接口。

在我们点击 页面触发这些任务时,我们可能不需要 立即返回结果,但是点了连接之后,系统立即就去做这项工作,页面迟迟不跳转,而我们就傻傻的在原地等小圈圈转呀转,转到天也黑了 或者 转出 502 来了。

事实上我们可以在点击这些任务后,让页面直接跳转,让系统在背后去做这些事情。监控是否完成的事情我们可以放到以后完善。这样 点击了一次 生成备份文件后,我知道 啊 系统会帮我做这个的,我不等他了先访问别的连接吧。

关于消息队列:

一般后台任务结合消息队列 来做,

消息队列 顾名思义,消息的队列,特点:消息,先进先出。

用消息队列的原因, 系统如果在一瞬间 产生了 很多个耗费时间的任务,那么哪个任务先做,哪个任务后做呢?如果不排下顺序的话,后来的任务就可能插队伍前面去了,那么执行的结果也可能是错误的。

后台异步执行原理:

页面点击 链接 ,系统接收请求,产生一个后台任务的消息,该消息包含要执行的任务的方法和参数,将消息保存到RabbitMQ中。系统立即返回结果,页面跳转。

系统另外启动一个后台进程(background job),该进程循环读取RabbitMQ中收到的消息,有消息的时候就按顺序读出来,并且依次执行消息里隐含的任务,没有消息则等待。

过程:

刚开始 使用workling时 使用的异步服务器客户端的是Starling,跑起来很正常,但是 当多个app 在不同的 服务器上  通过workling与一个starling跑的时候,starling会出现错误,google了一下 大概是因为memcache的接口在多个不同电脑同时读取消息时会有问题。

于是想用workling + amqp + RabbitMQ,由于amqp需要服务器支持Event Machine ,而unicorn不支持所以放弃使用amqp,根据我的尝试,如果你使用Event driven mongrelThin 完全可以直接使用amqp。

就在放弃了amqp要打算放弃rabbitmq的时候,七哥 Seven 提示我一个插件carrot。这个插件是异步读取RabbitMQ中的消息,不需要包含在某个代码块中。用这个插件不需要服务器支持event machine。这就能让unicorn 和rabbitmq结合起来了。

于是仿造workling对其他client的支持,增加了 workling 对 carrot的支持,使用非常简单,代码在 https://github.com/yakjuly/workling

 

使用方法:

1.安装rabbitmq

http://www.rabbitmq.com/install.html

2.安装carrot

gem sources -a http://gems.github.com/ (if necessary)
sudo gem install carrot

3.配置文件

因为需要支持多个不同的app同时访问一个rabbitmq-server,所以对队列的命名增加了一个需求。

workling.yml

development:
   host: lcoalhost
   port: 5576
   namespace: railsapp_development

4.environment.rb 中 添加以下代码

Workling::Remote.invoker = Workling::Remote::Invokers::CarrotSubscriber
Workling::Remote.dispatcher = Workling::Remote::Runners::ClientRunner.new
Workling::Remote.dispatcher.client = Workling::Clients::CarrotClient.new

5.启动后台监控进程

./script/workling_client start

 

目前不知道为什么workling_client restart会有问题,大家在使用的时候先用workling_client stop 再start。

在Rails3中,如果对后台任务需求并不特别要求及时或者效率的话,delayed_job是个不错的选择,如果一个网站 50% 的请求需要后台任务则 试试Redis + resque 吧。

Categories: rails, ruby, 杂七杂八 Tags:

精挑细选笑话九则

June 12th, 2010 yakjuly No comments

1、 有个人上少林寺拜师学艺。大师指点说武功重在内力,应该先炼内功,然后再练外功,然后大师让他拿一根管子对着半缸水吹气,说什么时候能把缸里的水吹到溢出 来,就证明内功达到至高境界了。于是他就日复一日地刻苦练习,三年过去了,没有任何效果,但他想:既然师父那么说就一定有他的道理。于是继续修炼。就这样 过了十年,还是不行。终于,他失望了,决定不再修炼准备回家。到家碰到他爹,他爹就问他,说你拜师学艺学了十年学得怎么样啊?他觉得很没面子,遂失落地低 头叹了口气,等他抬头再看——他爹不见了……

2、小学开学了,刚满六岁的冬冬不肯到学校注册上学。
妈妈向冬冬解释,法律规定小朋友年龄满六岁就要到学校上学,一直到十五岁。
最后冬冬终于在学校书桌前坐下来,眼里含着泪水的对他妈妈说:
『等我十五岁的时候,你会记得来接我吗?』

3、小明欠地下钱庄20万,
小明苦苦哀求他多让几天,
钱庄的人说:「明天一定要还,不然的话……,剁掉2只手指;后天的话……,在剁4只;第3天的话……」
小明:「是不是不用还了」
钱庄的人:「NO,到时候你就变成小叮当了。」

4、旅客:“小姐,把我的行李放上去!”乘务员MM:“先生,对不起。我自己一个人抬不动,一起好吗?”旅客:“你不是天使吗?天使还放不上去?”乘务员MM:“你是上帝都放不上去,我天使能放上去吗?”

5、一名男子被判刑12年,在狱中颇为无聊。
一天,他发现有一只蚂蚁竟然听得懂他的话,于是便开始训练它。 几年后,蚂蚁会倒立、翻筋斗,令他颇为得意。
终于出狱了,第一件事便是跑去酒吧,准备炫耀他那只神奇的蚂蚁。
他先向酒保点了一杯啤酒,然后把蚂蚁从口袋里掏出来放在桌上,向酒保说:“ 看看这只蚂蚁……”
酒保过来,马上一把将蚂蚁拍死,
然后很抱歉地对他说:“对不起,我马上换一杯新的给你!”

6、女友要去参加婚宴,咨询我们穿什么衣服去会被搭讪。回答说:红色或白色的旗袍。于是穿着旗袍优雅的扭去饭店。 晚上回来报告,今日果然被搭讪无数,搭讪话题内容有:我们桌的菜还没上齐?小姐麻烦盛点米饭。来2瓶雪花啤酒!请问厕所在哪里?这里是XX和XX的婚宴吗?

7、一次和BF逛街,回家要坐地铁,于是跟BF说玩一个信任游戏,我闭上眼睛,他做我的眼睛,领着我走路。坚持了好久,一直顺利上了地铁,不久BF扶着我坐下,他蹲在我的面前(我还是闭眼的),附在我耳边小声说不可以睁眼了,这个座位是别人让给我的……于是我就一直闭眼到下地铁

8、那天突然接一个电话:“猜猜我是谁?猜中有礼物哦!”
我把可能的人都猜了一遍,还不对。后来我怒了,问“你到底是谁?不说我挂电话了!”
结果那人说:“我是送快递的,你有一个包裹……” 当时我就……

9、一个很有才的男生有天给我发短信:“哎,你今天的发型不一样哦~~”
我说:“哦~我烫了一下~~”
过了一会,他回了…………:“啊~!严不严重啊?!”

Categories: 杂七杂八 Tags:

世界杯直播

June 12th, 2010 yakjuly No comments

房间里没有电视机只能看世界杯网络视频直播,8点就开始试直播入口,可惜大部分都不能连,网络上只有CNTV能够在线看其他的网站都是盗链CNTV的,但是非常卡 我4M的网络都得看5秒缓冲5分钟。

于是我在国外搜集到一个看世界直播的入口点,myp2p,里面集合了几乎所有的视频直播入口非常不错。

其中也有CCTV5的入口,建议用uusee看,一场比赛几乎不断,而且视频很清楚。

ps:刚看完世界杯第一场比赛,南非1:1墨西哥。南非踢得还是非常不错的,以前看的南非的比赛都是打防守反击,比赛中间发力,靠优秀的球员跑动接球破门。南非进球的那个小辫子和右路的高个黑人边锋以及那个后防总是快速插上助攻的球员 挺厉害的,好好发挥淘汰墨西哥。支持南非。

Categories: 杂七杂八 Tags: