比尔盖子 博客

Tag: Godaddy

搬迁网站到VPS的过程

写在前面的话

Written at the beginning

众所周知(如果不知道猛击这里),在2011年六月的最后一天,比尔盖子网站全部下线搬迁。

这一次,因为饱受Godaddy主机的折磨,比尔盖子在今年初就狠下心来决定:7月份一定要换个VPS(在今年1月的公告中透露过)
果然不出大家的所料,比尔盖子更换了主机。

比尔盖子为了选择一个价格公道,性能优良的VPS,艰难的百度和谷歌,最终选择了Linode主机。这个主机的机房位于硅谷,是中国连接美国速度最快的机房,而且在中国站长中口碑也是相当的好。

但是,出现了一点小意外,导致了信用卡不慎冻结。最终只能使用一家比较可靠的Linode支付宝代购系统用支付宝买下了Linode。这个代购虽然可靠、方便,但是,它是将广大代购用户当成系统编写者的子账户处理的。因此只能在这个Linode代购系统的简易控制面板中操作,像比尔盖子这种想要更换机房、更换内核的极客来说,实在是没有什么可折腾性。因此,比尔盖子的网站将在2011年7月27日时再度搬迁。

正文

一般来讲,搬迁网站的过程无非就是这样:

1.关闭网站访问
2.FTP下载所有文件到本地(聪明点的人会打包压缩,另一些人就直接FTP下载,效率不知有多底,可悲啊)
3.将Mysql数据库导出到本地
4.上传导出到本地的文件到新主机
5.导入本地的数据库到新主机
6.修改网站的配置文件,以便连接新的数据库
7.修改域名的指向,指向到新主机
8.最后的一点点排除故障工作,比如解决死链接

这样做,对比尔盖子这样有一点规模的网站来是相当不合适。因为本网站的数据量高到4GB,如果要采用以上的方法,就等于一共下载和上传了8GB的数据!而站长只拥有512K的ADSL连入互联网,如果按照以上步骤,48小时不关机连续作业也完成不了!这该如何是好呢?

话说天下无难事,只怕有心人。比尔盖子想到了自己曾经用SSH远程连接到服务器下载文件时,几乎每次都是瞬间完成,下载速度最快达到了8Mb/s。如果利用这伟大的美国网速,那么搬迁就快多了。话说得好听,那到底怎么利用美国充沛的带宽资源呢?首先我觉得应该先压缩我网站的所有数据。我来到了Godaddy的文件管理面版,悲剧的发现最大只能压缩20MB的数据!这该怎么办呢?

盖子突然想到,因为我的两个主机都可以通过SSH进行远程管理,因此这个过程可以在SSH上操作。立即输入

tar -jcvf website.tar.bz2 html

来压缩我Godaddy主机上的HTML目录,我所有的网站程序都在这个目录里,但是我发现,压缩用了相当长的时间,最后居然强行停止!经过查看记录,盖子的这个博客安装了一个缓存插件,而系统在压缩这个插件产生的缓存时用了相当长的时间。后来盖子进入这个目录查看,发现里面已经生成超过1000个文件,难怪压缩都强行中断了。

快快使用rm -r删除这个目录,结果,删除用时6分钟,最后还报错。这个缓存是在是太夸张了吧!最后,盖子又进入Godaddy的文件管理器,删除了几个残余文件,才算万事!再次尝试进行压缩,这回终于成功了。不过很奇怪,我的网站的数据量为4GB,但压缩完之后居然文件只有300多MB,以至于比尔盖子总是觉得一些文件在压缩时被丢掉了。

之后,比尔盖子登录了新的VPS,输入

wget http://biergaizi.con/html.tar.bz2

下载刚打包完的压缩文件,神速,2分钟搞定。然后使用

tar -jxvf html.tar.bz2

来解压缩,命令行飞速划过屏幕,解压缩完成了。接下来的一个难题,就是配置Web+PHP+Mysql服务器了。幸好比尔盖子平时就爱折腾以Fedora为主的Linux,你可以去看看 比尔盖子站长使用Linux的经历,就知道比尔盖子多么极客了。今天,平时折腾得到的经验总算用上了。这个VPS的系统是盖子亲自选的CentOS5.6,就是冲着Yum和Fedora一样才选择的CentOS,而不是Debian。

随着比尔盖子噼里啪啦的敲击yum install,yum update和service httpd restart,一个使用Apache+PHP5.3+Mysql5的Web服务器就这样完工了。
(具体的细节,我忘记了,会在本月的第二次搬家中详细写出来的)

最后安装了PHPMyAdmin来管理数据库,又安装了Zend和Xcache这一全新的服务器缓存插件。

 

随着一行reboot,比尔盖子的全新网站就正式运行了起来!

自动优化及备份网站数据的解决方案(解决了一个困扰我8个月的问题)

2011/05/09日再次更新,脚本还是有变量问题,已修正!

以前,比尔盖子写了一篇关于应用Shell Script和Cron Job来自动备份和优化数据库(远程数据库)的方法,如果想查看比尔盖子写这个脚本的原因和和文章,请猛击这里

两大问题

不过,这段脚本其实是不能用的,因为在语法上出现了一点小小的问题,对,就是那个$stamp变量的写法问题。

但是,困住比尔盖子的并不是这个问题,而是这段脚本根本就无法执行!

PS:如果您不想看比尔盖子解决问题的过程,只想得到一个能用的Script,请直接看“新的解决方案“部分!

(1)执行问题

一执行就会出现Mysql Server Access Denied的提示,一开始是怀疑Godaddy禁止连接,后来发现我将此脚本中的命令一行一行的输入到Shell里面,执行是成功的。

(2)计划任务执行问题

而到了计划任务的时间,比尔盖子就会收到root寄来的邮件,说什么Permissions Denied——还是权限不足。难道是Godaddy还限制了Cron Job计划任务的权限?
就这样,比尔盖子也懒得管它了,一直过了八个月,现在我的邮箱里已经有800多封root寄来的“权限不足报错”的邮件了。

以为问题解决

最近读到了《鸟哥的Linux私房菜》,看到了《Linux文件权限概念》这一章,里面说:“Windows下,一个文件可不可执行要看扩展名,而Linux下文件可不可执行完全看有没有x权限。”

于是马上想到我的Script权限不足的原因可能就在这里!果然如此:只有我自己有rw权限,其它的权限什么都没有,赶紧将权限设置为770!

第二天,我收到了root寄来的邮件。这回Script终于可以执行了,但是执行的结果和我在Shell里面的一样,报错Mysql Server Access Denied。

问题终于解决

今天在学校机房弄了半天,终于发现了这个$stamp变量的问题,于是重写了一个变量,但是依旧Mysql Server Access Denied。有将脚本分行写成Script,一行一行测试,结果发现我新建的脚本上的命令没有任何修改,但是却能执行;而原来脚本上一模一样的内容居然报错!

不但这样,而且当我在服务器上尝试压缩一个文件的时候,明明这个文件在SFTP的列表上是存在的,但是就是提示“No such file or directory”!于是使用ls -l查看一下,发现文件名由“database_backup”变成了”database?_backup”,原来是该死的中文字符编码问题!

回家之后用Linux上的vim重写了(准确的说是重新抄写)了这个Script,上传到服务器,并赋予其“rwxrwx—“的权限,尝试使用Bash执行,成功!

结论

引起比尔盖子困扰的是一下三大问题:

一.文件格式问题

因为Windows下的换行符就和Linux不一样,而且也很难保证这是字符编码没有问题,所以说bash读取到有Windows换行符的文件(脚本)就会误判,导致无法识别真正的命令!

二.变量语法问题

这里面的$stamp变量的语法不正确,导致了备份文件名不正确!

三.权限问题

没有赋予文件(脚本)x权限从而导致脚本没有权限被计划任务执行。

新的解决方案

这回比尔盖子重写了脚本,脚本更加规范,另外,还要强调一次:因为Windows下的换行符就和Linux不一样,所以最好使用Linux编写此脚本,否则请连接到主机远程编写脚本!

#!/bin/bash
# Program:
#   This script can backup Biergaizi's website data!
cd /home/content/44/6531044/backup #切换到备份目录,请按实际情况修改
mysqlcheck -hdiscuzmaogou.db.6531044.hostedresource.com -o discuzmaogou -udiscuzmaogou -pAmaogou4260 >>log #将这里的“数据库地址“等替换成自己的!输出信息保存在log文件
export today=`date '+%Y-%m-%d'` #获得当前日期并写入$today变量
mysqldump -hdiscuzmaogou.db.6531044.hostedresource.com -udiscuzmaogou -pAmaogou4260 discuzmaogou>db_backup_$today.sql #将这里的“数据库地址“等替换成自己的!   将数据库内容转存为SQL文件,文件名为“db_backup_日期.sql 
bzip2 -z -9 -f db_backup_$today.sql #压缩SQL文件并删除原SQL文件,压缩后文件名为“db_backup_日期.bz2

这样,只要将脚本加入Corn Job,定期下载储存备份文件的那个目录就行了,备份的文件名会自己变哦!

服务器DOWN掉了15分钟

正在弄我的微博时,突然网站无法访问。 紧接着,我的网站监控服务发来警告,网站无法访问。 完了,彻底完了。 前2天,Godaddy就DOWN了一次,今天是旧病复发啊! 我向客服投了诉,等待恢复正常。 可没想到,不一会就正常了,真是抽风啊。

 

应该不是GFW,因为”美国主机侦探”论坛上,不少人反应Godaddy抽风的现象,而且每次抽风,那个论坛人气就增加不少,呵呵。

使用Godaddy主机采集文章时异常中断的解决方法

想采集点东西,但是采集程序经常异常中断,要么404,要么500,甚至拒绝服务,今天找到的了解决方法。

首先我排除服务器的问题,现在美国那边是晚上,服务器负荷不会很大。

于是我连接上FTP,打开php.ini看看,发现allow_url_fopen = Off,于是把它打开,但是不起作用。

又打开php.ini,把max_input_time = 60 改为 120,没起作用, 采集仍然报错。

又加了max_execution_time = 120;upload_max_filesize = 20M。

那个上传大小虽然跟采集无关,也顺便加上。这回能采集了,但是一到17%就不动了,然后报错,有时候说MYSQL DOWN掉了,有时候说500错误。

怒!什么破SQL服务器呀,这么不稳定!

一气之下把max_execution_time、max_input_time的值都改为了3600,一个小时,不可能不行了吧!

这回我发现我的采集程序到17%报了一下错,但是继续运行了!

最后,采集成功。

看来,SQL服务器没问题,还是max_execution_time、max_input_time的值设的过小,导致采集程序还没运行完就被Kill了,不过,采集完千万要把值改回来,否则,有可能以后陷入死循环就永远出不来了!

注:只对LINUX有效,WIN主机没有Php.ini,就只能在一边无奈了!

折腾够了,购买国外主机;网站恢复,有大变更!

在使用免费空间的两年里,站长使用过了:

用着胆战心惊总认为我的站会被停的5944骗子免费主机;
用着不踏实总认为信产部会杀过来的国内免费主机;
用着别扭虽是20G但总是被和谐的德国主机;
电信能上我网通不能上的某某论坛大力推荐主机;
速度不错但是各种函数都不支持的国外主机;
非常好用但最终被停的000webhost免费主机…………

现在彻底折腾够了,购买的godaddy的收费主机,这可是全球第一的主机公司啊,不用担心被骗。

他们的主机支持支付宝,支付很方便,只用了50$,折合人民币300多,就买了一款10G的主机,而这才是最基本的方案,它们的优惠方案一年也只要500人民币,就可以买一款100G的主机。

主机的功能很强大!

一开始我买的LINUX主机的IP是被和谐的,按照网上的方法请求更换操作系统到WINDOWS,IP果然就变成了可用的。

不过,只有LINUX才可采集,又换回LINUX,不过又变成了被和谐的那个IP,我的访问者总不能永远翻墙浏览吧!最恨那些用国外主机作非法站的人,把这么多人都牵连了!

于是我准备买独立IP,以防止共享IP被和谐。但是也太贵了,一年不亚于主机的钱。

后来根据网上的可靠情报,购买SSL证书(你输密码是总是有的一个“安全访问”,那个连接就是连接到SSL加密的地址)还送独立IP!

而且支付的时候使用cjcssl12b1这个优惠码,可以便宜到一年12.99$,太值了!

又在国内购买了一个80块的域名,这样就算安定下来了。

现在网站做出的改变如下:

1.停用mycatbbs.cn域名,改用biergaizi.com(“比尔盖子”的拼音),
主站 biergaizi.com
论坛 bbs.biergaizi.com
站长博客 blog.biergaizi.com 2011 8月更新 已变为biergaizi.info

还有就是以前的域名不能加www,现在使用www.biergaizi.com也可以正常访问了!

目前域名部分地区仍未生效,如果某些地区无法访问,或者将来出现什么问题,都可以尝试使用173.201.135.19这个IP访问。
(主站直接输入,论坛 173.201.135.19/bbs)

2.因为本站意外被停,数据只能全部回档到今年4月的数据,后来新注册的会员无法访问,一些帖子和恢复将丢失,请谅解,因为这是一次意外。

3.godaddy主机,电信访问慢,网通访问快,请电信用户多等待一会。

Copyright © 2022 比尔盖子 博客

Theme by Anders NorenUp ↑