Displaying articles with tag

ByeBye Dreamhost

Posted by leeseon, Sat Jan 16 22:03:00 UTC 2010

因为Site5 还为从其它主机转过来的用户提供了一份更多的优惠,你只需要能证明自己是从其它的主机转过来并且已经关闭了以前的帐号,你就能得到$25的“回扣”用于下一次的任何购买中。不过这份回扣是需要在购买Site5 的30天内申请的。反正我的域名已经全部转到了godaddy 网站也全迁过来了,虽然离真正到期还有一个多月,但是close掉在Dreamhost 上的帐号自己是不二之选了。关闭帐号是很简单的,只要点击close然后再确认再输入密码就行了。在最后提示我因为我的费用并没有用完,下次如果还决定回Dreamhost 的话,那笔钱还是可以作为折扣从我的价格中减去的。很公平不是吗?可惜我是真的不太准备回去了。

好吧,不管怎样我已经使用了Dreamhost 快三年了,说一说我的感受吧,可能对后来者能一点帮助,也算是一点经验或者是总结。

其实根据VPSer的介绍 Dreamhost 自建的机房位于洛杉矶,网速其实是很快的(这个我们下面会讨论的),而Site5 是使用著名的The Planet 机房速度也不慢,不过从我的(北京联通)测试上来看还是稍慢于Dreamhost 一点点。不过我这儿谈的网速仅仅是指传输层的速度,但是真实的用户体验是Site5 的速度大于Dreamhost 的,这个是得到多方(监控宝与google analytics)证实的。

为什么会是这样?我们可以先看几张我从监控宝 上获取的几张图

第一张是在Dreamhost 上较快的HTTP响应时间分布

第二张是在Dreamhost 上转慢的HTTP响应时间分布

第三张是在Dreamhost 上最慢的HTTP响应时间分布

第四张是在Site5 上平均的HTTP响应时间分布

第五张是在Site5 上较慢的HTTP响应时间分布

总体上来说,DNS的解析速度区别并不大,我在监控宝上关于ping值与DNS解析的速度的对比上Dreamhost 是要优于Site5 的,不过那个区别在100ms之内,人是感觉不到的。对于网页的下载时间,其实两者区别也不大也在100ms之内,而真正引起感官上的区别的主要是服务器的计算时间的区别,DH有时比S5要慢上太多了,而且有时DH上连建立链接的时间也会很慢,这只能说明DH也太超卖(oversell)了。而Site5 在这个方面控制的是比较好的吧,起码我现在的平均总的HTTP响应速度在2s左右。

总结一下吧,DH其实还是一个不错的主机,尤其是它第一年的优惠价格太诱人了,而且主机开放ssh权限,这对需要翻墙或者部署rails应用的用户来说还是很不错的。我就是因为它第一年的$24的价格被吸引去的,前不久居然还有过$7.77的第一年的价格优惠。但是第一年之后的价格就比较贵了,而且并不太物有所值了。加上它疯狂的超卖,我的那台主机开始感觉到越来越慢(第一年还好,是最近越来越糟的),所以你如果只是一个linux或rails的初手,只是想架个Blog或者是部署下rails玩玩,我还是推荐你可以买来玩上一年,别象我似的玩了一年之后因为懒得搬家就一共呆了快三年。除此之外我还是推荐Site5 作为共享主机的一个不错的选择,当然你要用VPS我还是推荐Linode 虽然我还没有用过,但是因为有几个我依赖的人的推荐,我相信这个是不错的。

PS:就我个人感觉监控宝 真的很不错,如果你有一个网站,那你一定要用用它! 关于Site5的购买你可以去riku 那儿看看

0 comments | Filed Under: | Tags:

搬家成功Dreamhost=>Site5

Posted by leeseon, Sun Jan 10 09:05:00 UTC 2010

其实早在几个月前,当我的new relic 发给我的报告表明在Dreamhost上的得分从fair到了poor与让我很不爽的Unacceptable之后,又鉴于已有的前例 ,我已经另寻乐土之意。

赶在美国传统的打折季,新年动手吧,反正离我的dreamhost的过期时间有不到两个月的时间了。对于Linode 我虽然很有向往,但是对于自己的需求来说,VPS的价格还是偏高。因此在shared的主机中选择是比较正常的,其实一开始我并没有直奔Site5 而已,而是绕了个小弯去试试一下HostMonster 因为它打折之后$4.95/m的价格还是很让我心动的,不过在试用的感觉中我感觉可能是因为被dreamhost上ssh的方便给惯坏了,它需要身份验证(发个身份证的照片过去)才能开ssh的默认流程,就让我有预感HostMonster可能与rails不合,而且它那繁复的控制界面让我比较头大,试用了三天就直接要求退款了,好在它退款还是很方便。教训是没有关注一下rails社区对它的评价。这年头国内国外谈论的居然都是Linodeslicehost 甚至joynet 。我就一个想要找个地方hosting自己的mephisto偶尔玩一下rails的小网民容易吗?

有了这次教训,最后也就选中了Site5 :SSH自动开启也算是我想要的,总体上来说$9.95/m的费用是与dreamhost相当的,不过因为我当年曾经将dreamhost的空间一起与LiuFeng 分享,所以还是与它商量了一下,我们一起合租site5了,我出hostpro的价钱,他出turbo的费用。这样我们就又可以一起合租了,而且还额外得到了一个独立IP,的确是一个很好的方案噢。

虽然Site5本来就有60天回款的保证,但是为了麻烦,我还是使用了一个可以试用30天的coupon,不过事后证明这一步好象是多余的,因为我一开始试用就开始喜欢上site5了,居然它已经为你建立好一个/home/username/ruby/gems,而且还有一个已经写得不太完整的.gemrc。噢,看来site5为rails的用户已经想得足够多了。

至于site5的好处,liufeng已经在这里 讲过了,我就不多说了,只记得他当时太兴奋,在gtalk里面也不停的说site5的好处。对我而言最深的感受,它的网速与机器速度很快,我最喜欢的是它的live chat的客户支持,虽然我的英文足够糟到可以让它的客服刚好了解我要说什么,但是他们总是能很耐心且及时的解答我的很多问题,比起Dreamhost糟糕的live chat系统要好上太多了。

其实我是在中国时区的25号使用了一个30%折扣购买了一年的hostPro+Turbo主机计划,但是就是一个小时之后,就发现的主页上的折扣因为圣诞促销变成了35%,杯具啊。感觉就象被玩弄了一般,在我有点恼羞成怒地急躁的与Site5的交涉之后,他们居然很大方的答应将5%直接refund给我,呵呵,这种感觉让我一下子喜欢上了Site5。

就算了是site5没有其它好过dreamhost太多的优点,我也会因为这一点而喜欢site5的。噢噢

1 comment | Filed Under: | Tags:

将mysql数据导入到sqlite中

Posted by leeseon, Tue Feb 17 18:52:00 UTC 2009

rails 2.0将默认配置的数据库改成sqlite 之后,我才真的开始使用这个”self-contained, serverless, zero-configuration, transactional”小巧,轻便的嵌入式的数据库、、、以下省去 溢美之词n多字

不对sqlite对我来说最大的好处就是不用安装与启动服务,完全就是一个绿色版,只要拷贝过来,放在路径之下就能直接使用了,而且数据库也就是一个文件也是可以随身携带的

如果不喜欢二进制文件也可以将数据转成文本,命令如下:

sqlite3 dbfile.sqlite3 ".dump" > sqlite3db.sql

不过我倒是没有试过在生产环境中使用它,平时在开发与测试时才使用,因此需要将一些mysql中的数据导入到我本地的sqlite3中

自然是先google之,看到一个比较直白的解决方案 它使用mysqldump导出sql语句并从中仅grep(提取)出insert语句,然后在使用
rake db:create
rake db:migrate
之后用
sqlite3 dbfile.sqlite3 < backup.sql
将数据导入到sqlite3中

不过其中有一点小问题:正如文中所说,mysql与sqlite3的转义符并不一致,除了需要将\'转成''(两个单引号)之外,还需要将"\r"(0x5c0x72)与"\n"(0x5c0x6e)转成\r(0x0d)\n(0x0a),此外\"也是需要转成"(双引号)的

并且文中的替换方法是使用编辑器手工替换的,这点与我懒惰的习惯实在是不符,还是用sed来自动化一下吧!最终拼成一个脚本如下:

#!/bin/sh
mysqldump  --opt --no-create-db --no-create-info --default-character-set=utf8 --extended-insert=0 -u user -ppassword database \
| grep 'INSERT' \
| sed -e "s/\\\'/''/g" -e "s/\\\r/\r/g" -e "s/\\\n/\n/g" -e 's/\\\"/"/g' > backup.sql

如果你需要每天将服务器上的数据备份并应用在日常的开发中的话,可以参考上次所写的DreamHost每日mysql数据库备份方案 将上面这段合并到Dreamhost 的cron任务中

0 comments | Filed Under: | Tags:

DreamHost每日mysql数据库备份方案

Posted by leeseon, Sat Jan 24 07:49:00 UTC 2009

因为DreamHost 本身就提供了数据库的备份功能,尤其是象我这样更新不多blog数据也不多:( 一般出了问题restore一下就行了。

不过前几天我犯了一个相当低级的错误,执行了一次
rake db:reset
谁知DreamHost 居然只能在命令行中执行
drop database
却不能执行
create database

再去找panel里的数据库还在,但是restore居然提示没有任何内容,也不知出了什么事,只好发邮件问support.,但是网页总不能总是空的啊,好在幸好前几天为移植一个WordPress下的theme 导了一份数据出来,换了个数据改了database.yml就搞定了

只好亡羊补牢google了一下,自然是有现成的方案的,只是因为我想使用gmail来作为接受邮箱,但是gmail会拒收tar.gz, zip之类的文件,我修改了一下使用rar来打包,脚本如下:

#!/bin/bash
cd /home/yourname/backups/ 
mkdir mysql 
suffix=$(date +%y%m%d)
mysqldump --opt --default-character-set=utf8 -uyourname -ppassword -h yourhost.com database | sed "s/\\\'/''/g" > mysql/database.$suffix.sql
rar a archives/mysql_backup.$suffix.rar -r mysql/*
rm -r mysql/
mutt youname@gmail.com -a /home/yourname/backups/archives/mysql_backup.$suffix.rar -s "MySQL Backup"

其中,mysqldump之后需要加上—default-character-set=utf8 而且再一个sed “s/\\\’/’’/g” 通道比较好,这样导出的文件会将\’替成”看起来比较方便

0 comments | Filed Under: | Tags:

做下广告吧Promo Code: LEESEON

Posted by leeseon, Sat Sep 06 18:50:00 UTC 2008

无意间发现DreamHost 最近在搞优惠活动,凡是在9月10号之前注册的用户,都能享受无限的(之前是500G)磁盘空间与无限的带宽(之前是5T)。呵呵,其实这当然是有一点噱头的成份在里面,毕竟500G与5T(每周都会涨的)我是根本没有用完过,不过如果你认为你一定能用完,或者你梦想远大,或者只为了YY,那你可以赶紧注册一个噢!

当然当然最重要的就是,呵呵,使用我的PROMO CODELEESEON 噢,这个是能打折滴,以前是$97,现在也就只有$50了,看来老外滑头起来也是不差的

免费无限存放图片在slide.com!

自然自然无利不起早嘛,听说使用我的Promo Code我是能赚钱滴—俺从来没有拿到过:(,不过还是要佩服一下这种有点象传销一般的病毒式商业运作方式

0 comments | Filed Under: | Tags:

更新了一下脚本

Posted by leeseon, Sun Jul 06 15:35:00 UTC 2008

自从上回 之后,ruby、rails与gems也都开始更新了,于是也更新了一下安装脚本,如下:

  • mkdir ~/.gems
  • echo ‘export GEM_HOME=”$HOME/.gems”’ >> .bash_profile
  • echo ‘export GEM_PATH=”$GEM_HOME:/usr/lib/ruby/gems/1.8”’ >> .bash_profile
  • echo ‘export PATH=”$HOME/.gems/bin:$PATH”’ >> .bash_profile
  • echo ‘export PATH=”$HOME/local/bin:$PATH”’ >> .bash_profile
  • . ~/.bash_profile
  • echo $PATH
  • touch ~/.gemrc
  • echo gemhome:/home/$(whoami)/.gems >> ~/.gemrc
  • echo gempath: >> ~/.gemrc
  • echo -/home/$(whoami)/.gems >> ~/.gemrc
  • echo -/usr/lib/ruby/gems/1.8 >> ~/.gemrc
  • # setup directories
  • mkdir -p ~/local/usr/src/ruby
  • cd ~/local/usr/src/ruby
  • # Install readline
  • wget ftp://ftp.cwru.edu/pub/bash/readline-5.2.tar.gz
  • tar zxvf readline-5.2.tar.gz
  • cd readline-5.2
  • ./configure—prefix=$HOME/local
  • make
  • make install
  • cd ..
  • # install ruby
  • wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p22.tar.bz2
  • tar jxvf ruby-1.8.7-p22.tar.bz2
  • cd ruby-1.8.7-p22
  • ./configure—prefix=$HOME/local—with-readline-dir=$HOME/local/
  • make
  • make install
  • cd ..
  • # fix path
  • export PATH=$HOME/local/bin:$PATH
  • # get rubygems
  • wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz
  • tar zxvf rubygems-1.2.0.tgz
  • cd rubygems-1.2.0
  • $HOME/local/bin/ruby setup.rb config—prefix=$HOME/local
  • $HOME/local/bin/ruby setup.rb setup
  • $HOME/local/bin/ruby setup.rb install
  • cd ..
  • # Install RAILS
  • gem install rails
  • # Install FastCGI
  • curl -O http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
  • tar xzvf fcgi-2.4.0.tar.gz
  • cd fcgi-2.4.0
  • ./configure—prefix=$HOME/local
  • make
  • make install
  • cd ..
  • # Install FastCGI & MySQL gem packages
  • gem install fcgi——with-fcgi-dir=$HOME/local
  • gem install mysql——with-mysql-config
  • # gem update

关于脚本的解释可以看以前 的说明,这次仅仅只是版本上的更新而已,不再多做说明

文件依然放在http://leeseon.com/private/allinstall.sh

也同样可以使用


curl http://leeseon.com/private/allinstall.sh | sh

来执行,无它、、、

0 comments | Filed Under: | Tags:

使用Capistrano在Dreamhost上部署mod_rails

Posted by leeseon, Mon May 19 14:44:00 UTC 2008

虽然以前Capistrno 在windows下不能使用,但是自从2.0以后,其实就是可以使用的了。而且现在的2.3还加入了对git的支持。

而且从InfoQ 上得知Tom Copeland 已经使用Capistrano来更新mod_rails了,的确如它所说,只是给这个应用程序建立了一个“restart.txt”文件,就会导致Passenger Phusion/mod_rails重启这个应用程序。的确很简单明了不是吗?

最终的deploy.rb文件看起来会象下面这样

  • set :scm, :subversion
  • set :repository,  "http://yoursvn/trunk"
  • set :svn_username,  "svnuser"
  • set :svn_password,  "svnpassword"
  •  
  • role :app,  "www.yourdomain.com"
  • role :web,  "www.yourdomain.com"
  • role :db,   "www.yourdomain.com" , :primary =>  true
  •  
  • set :deploy_to,  "/home/yourusername/"
  • set :user,  "yourusername"
  • set :password,  "yourpassword"
  •  
  • set :use_sudo,  false
  •  
  • namespace :deploy  do
  •   desc  "restarting mod_rails with restart.txt"
  •   task :restart, :roles => :app, :except => { :no_release =>  true  }  do
  •     run  "touch #{current_path}/tmp/restart.txt"
  •   end
  •  
  •   [:start, :stop].each  do  |t|
  •     desc  "#{t} task is a no-op with mod_rails"
  •     task t, :roles => :app  do  ; end
  •   end
  • end

0 comments | Filed Under: | Tags:

dreamhost真的开始支持mod_rails了

Posted by leeseon, Sun May 18 09:27:00 UTC 2008

呵呵,这个当然是好事,只可惜我一语成谶 , 正好在DreamHost 支持mod_rails的两天之前写了两篇关于怎样在dreamhost上安装ruby、rails与gems的blog, 当然现在这些东东已经过期了,不再有用了,看来以后有什么心得就需要立刻记下来,第一为了免得稍纵即逝错过了最想记录下来的冲动时刻,第二也许我早点写出来,可能会对大家更有用,起码能让后来者少起点弯路(有点自以为的是地想)。当然做我们这么行,知识的过期是再正常不过的了,不过当年在那儿探索的苦恼与成功之后的喜悦是不可能忘却的,而且从中学到的一些东西也并不是全无用处,比如虽然有了mod_rails但是当你需要自己的gems时,还是可以自己装一份来用的嘛,只是不会再遇到我所遇到的那些莫名的 FastCGI: comm with (dynamic) server ”/home/u/domain/public/dispatch.fcgi” aborted: (first read) idle timeout (60 sec) 的挫折了,这自然是好事噢,有点不甘心地说:P

嗯,如dreamhost所说一般以domain的控制面板上多了一个Ruby on Rails Passenger的选项,勾上就好了,简单得不行了吧,不过有一点要注意,dispatch.fcgi中的代码将会永远用不到了,所以如果如我一般自己安装了gems的并有dispatch.fcgi中配置了gems的路径的话,就需要将


ENV["GEM_HOME"]="/home/yourusername/.gems" 
ENV["GEM_PATH"]="/home/yourusername/.gems:/usr/lib/ruby/gems/1.8" 

移到config/enviroment.rb中的ENV[‘RAILS_ENV’] ||= ‘production’之后就好了,否则可能会看到一个mod_rails提示的出错页面,无它,很简单的,不错

0 comments | Filed Under: | Tags:

在DreamHost上安装Ruby、Gems与Rails的最简单方法之续

Posted by leeseon, Sat May 10 18:03:00 UTC 2008

昨天只是泛泛谈了一下在DreamHost上安装Ruby、Gems与Rails的最简单方法 似乎有点 意犹未尽,决定写个续集,呵呵:)

好吧从哪儿说起呢?嗯,看我注释过的脚本吧,注释应该已经算是说得比较明白了,无它!

  • #修改.bash_profile,设置环境变量GEM_HOME与GEM_PATH
  • #并将~/.gems/bin与~/local/bin加入到查找路径的前端
  • echo  'export GEM_HOME="$HOME/.gems"'  >> .bash_profile
  • echo  'export GEM_PATH="$GEM_HOME:/usr/lib/ruby/gems/1.8"'  >> .bash_profile
  • echo  'export PATH="$HOME/.gems/bin:$PATH"'  >> .bash_profile
  • echo  'export PATH="$HOME/local/bin:$PATH"'  >> .bash_profile
  •   
  • #执行.bash_profile使变量生效
  • . ~/.bash_profile
  • #显示PATH变量,仅仅只是为了测试
  • echo $PATH
  •   
  • #生成gems所需的目录及.gemrc文件,并填充相应内容
  • mkdir ~/.gems
  • touch ~/.gemrc
  • echo gemhome:/home/$(whoami)/.gems >> ~/.gemrc
  • echo gempath: >> ~/.gemrc
  • echo -/home/$(whoami)/.gems >> ~/.gemrc
  • echo -/usr/lib/ruby/gems/1.8 >> ~/.gemrc
  •   
  • # setup directories
  • mkdir -p ~/local/usr/src/ruby
  • cd ~/local/usr/src/ruby
  •   
  • # Install readline
  • wget ftp://ftp.cwru.edu/pub/bash/readline-5.2.tar.gz
  • tar zxvf readline-5.2.tar.gz
  • cd readline-5.2
  • ./configure --prefix=$HOME/local
  • make
  • make install
  • cd ..
  •   
  • # install ruby
  • wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p114.tar.gz
  • tar zxvf ruby-1.8.6-p114.tar.gz
  • cd ruby-1.8.6-p114
  • ./configure --prefix=$HOME/local --with-readline-dir=$HOME/local/
  • make
  • make install
  • cd ..
  •   
  • # fix path
  • export PATH=$HOME/local/bin:$PATH
  •   
  • # get rubygems
  • wget http://rubyforge.org/frs/download.php/35283/rubygems-1.1.1.tgz
  • tar zxvf rubygems- 1.1.1.tgz
  • cd rubygems-1.1.1
  • $HOME/local/bin/ruby setup.rb config --prefix=$HOME/local
  • $HOME/local/bin/ruby setup.rb setup
  • $HOME/local/bin/ruby setup.rb install
  • cd ..
  •   
  • # Install RAILS
  • gem install rails
  •   
  • # Install FastCGI
  • curl -O http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
  • tar xzvf fcgi-2.4.0.tar.gz
  • cd fcgi-2.4.0
  • ./configure --prefix=$HOME/local
  • make
  • make install
  • cd ..
  •   
  • # Install FastCGI & MySQL gem packages
  • gem install fcgi -- --with-fcgi-dir=$HOME/local
  • gem install mysql -- --with-mysql-config

0 comments | Filed Under: | Tags: