比尔盖子 博客

Category: Godaddy

自动优化及备份网站数据的解决方案(解决了一个困扰我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,定期下载储存备份文件的那个目录就行了,备份的文件名会自己变哦!

本人惨遭和谐,现已恢复

今天早上,本人将Discuz 7.2升级为DiscuzX 1.5,升级完后,发现网站速度奇慢。

想去Godaddy主机控制面板中看看,却发现连接被重置,无法正常打开。

于是想连接SSH做代理进入控制面板,却发现SSH的连接老是被打断,无法正常连接。

去了“美国主机侦探”论坛,发现几乎所有的的Godaddy都无法访问,速度奇慢,有人说,是因为非常时期导致封锁力度加大,我也认同此观点。

心想:

幸好我有机器猫的任意门备用,立即打开任意门,说了声:“biergaizi.com”,就急忙钻了进去,却发现门外只有一面墙,把头撞了个包。我的Godaddy主机的DNS解析被严重干扰,无法正常连接到DNS服务器。

又使用GTunnel的Skype模式,发现同样存在此问题,天啊,饶了我吧!

最新更新:

刚刚发现Ping的丢包率已经急剧下降,SSH也已可以正常连接,但我不知道下一次抽风会在什么时候。

附:

和谐:

解封:

服务器DOWN掉了15分钟

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

 

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

升级了Dedecms和WordPress;启用伪静态;优化网站

前几天,大家有没有发现http://biergaizi.com/的网页换了一个很清爽的模板,这是因为,我的主站从Dedecms V5.5升级到了V5.6,这主要是优化了会员功能,不过目前根本没什么会员,那些会员功能也就用处不大了。

而且,目前还出现了一个奇怪的问题,就是文章的说明和标题非常不整齐,像这样:

不知是不是模板有点小问题,还是因为旧文章和新文章的解析模板不相同所致,那就慢慢找原因吧!

今天又把Wordpress搬到了Godaddy的空间上,因为之前站长一直使用免费空间建站,好不容易找到一个稳定的,但是功能限制诸多,比如不支持外部链接。

所以我把博客放上去,一边在网站出现问题时仍能写博文。

但是现在我已经有稳定的空间了,我可不想忍受免费空间功能限制的折磨,因此我现在把博客签到Godaddy上面。

刚调试好,Wordpress就提示我“有新版本,是否升级?”,原来,我一直期待的3.0中文版发布了!立即升级,不到5分钟就升级完了;随后我又升级了Wordpress Super Cache。

终于体验到一件升级带来的便捷了。

我又启用的伪静态,很简单,在“设置”的“固定链接”中选择“自定义”,然后输入“/posts/%post_id%.html”(不含引号),然后你就会发现,所有的文章都会变成 ttp://biergaizi.info/posts/174.html 这样的伪静态地址了!

不过因为是在国外,速度不可能向国内那么理想,于是我使用Speed Page对我的网站进行检测,最后有严重问题,由于水平有限,只能优化这两项了:

1.未启用GZip压缩

2.没有充分利用浏览器缓存

于是,我在.htaccess上加上以下代码:

(1)启用GZip压缩

SetOutputFilter DEFLATE

AddOutputFilterByType DEFLATE text/html text/css image/gif image/jpeg image/png application/x-javascript

(2)利用浏览器缓存


ExpiresActive on
ExpiresByType text/html “access 2 day”
ExpiresByType text/css “access 2 day”
ExpiresByType application/javascript “access 1 month”
ExpiresByType text/plain “access 1 month”
ExpiresByType image/jpeg “access 1 month”
ExpiresByType image/gif “access 1 month”
ExpiresByType image/png “access 1 month”
ExpiresByType application/pdf “access 1 month”
ExpiresByType application/x-shockwave-flash “access 1 month”
ExpiresDefault “access 2 days”

不过我发现,GZip压缩的代码貌似只能放在最后,不然就出现500错误了。

好了,我的网站有了很大的改进!

只不过……到现在我对网站已经做出这么大动作了,现在就等搜索引擎对其狠狠地K和降权了!

站长最近3天做的工作(301重定向,启用伪静态,启用SSH)

最近站长比较忙,做了几件事情。

1.301永久重定向

最近站长更换了域名,但是必须做完301永久重定向才行,第一是方便用户从以前的地址访问,第二是让搜索引擎更新地址,不然旧域名失效后我的站点就完蛋了。

以下是实现方法:

要求:

1.用户输入mycatbbs.cn就会跳到biergaizi.com,
用户输入mycatbbs.cn/site就会跳转到biergaizi.com(主站从/site/搬到了根目录)
用户输入biergaizi.com/site就会跳转到biergaizi.com

2.用户输入bbs.mycatbbs.cn就会跳到bbs.biergaizi.com,
用户输入mycatbbs.cn/bbs,就会跳到bbs.biergaizi.com,
用户输入biergaizi.com/bbs,就会跳到bbs.biergaizi.com;

3.用户输入blog.mycatbbs.cn,就会跳到biergaizi.info,
用户输入mycatbbs.cn/blog,就会跳到biergaizi.info,
用户输入biergaizi.com/blog,就会跳到biergaizi.info;

实现方法:

将两个域名都绑定到空间上。

将mycatbbs.cn这个旧域名添加子域名bbs(即bbs.mycatbbs.cn),并绑定到bbs所在的/bbs目录下。
建立子域名blog(即blog.mycatbbs.cn),并绑定到blog的目录下,

建立一个.htaccess文件,#后面的是便于大家理解的注释,下面的注释对应这上面的一行代码,注释可以保留也可以去掉,不影响运行。

内容如下:

 RewriteEngine On
 #开始重写

 RewriteCond %{HTTP_HOST} mycatbbs.cn$ [NC]
 RewriteRule ^(.*)$ http://biergaizi.com/$1 [R=301,L]
 #(用户访问时)把用户地址栏中的把前面的mycatbbs.cn换成,
 #http://biergaizi.com/,这样的话下面的目录也有效了。
 #转向类型,301永久重定向。

 RewriteEngine On
 #开始重写

 RewriteCond %{HTTP_HOST} blog.mycatbbs.cn$ [NC]
 RewriteRule ^(.*)$ http://biergaizi.info/$1 [R=301,L]
 #(用户访问时)把用户地址栏中的把前面的blog.mycatbbs.cn换成,
 #http://biergaizi.info/,转向类型,301永久重定向。

 RewriteEngine On
 #开始重写

 RewriteCond %{HTTP_HOST} bbs.mycatbbs.cn$ [NC]
 RewriteRule ^(.*)$ http://bbs.biergaizi.com/$1 [R=301,L]
 #(用户访问时)把用户地址栏中的把前面的bbs.mycatbbs.cn换成,
 #http://bbs.biergaizi.com/,转向类型,301永久重定向。
 Redirect permanent /site/ http://biergaizi.com/
 #用户访问/site/目录时自动跳转为http://biergaizi.com/,permanent,
 #301永久重定向

 Redirect permanent /bbs/ http://bbs.biergaizi.com/
 #用户访问/bbs/目录时自动跳转为http://bbs.biergaizi.com/

 Redirect permanent /blog/ http://biergaizi.info/
 #用户访问/blog/目录时自动跳转为http://biergaizi.info/

2.Discuz伪静态

也通过写.htaccess的方法实现,这回上面的注释对应着下一行的代码。

如下:

 # 将 RewriteEngine 模式打开
 RewriteEngine On

 # 修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
 RewriteBase /

 # Rewrite 系统规则请勿修改
 RewriteRule ^archiver/((fid|tid)-[0-9]+\.html)$ archiver/index.php?$1
 RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2
 RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2
 RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2
 RewriteRule ^tag-(.+)\.html$ tag.php?name=$1

这样伪静态就可以顺利启用而不会出现404错误了。

3.SSH

SSH不是SSL,SSL是HTTPS协议用的证书,SSH是一种很安全的远程管理软件,连接中的数据使用高强度加密,这样可以代替FTP使用,还可以当代理翻墙,呵呵。

开通方法:

点击控制面板中的SSH,然后第一个框输入国家编码,前面不用写+ 。
美国是0,中国是86,其他国家的自己查询,网上都有。

第二个框是电话号,如果手机直接填,座机要在前面填写区号再点座机号。
我是手机,我填写151****0306。

第三个是好像是分机号(直译:延迟时间)。没有的话,那就留空。

好了,点一下按钮确定吧。

再点击按钮后,会出现一个新页面,而2秒钟之内,你的电话就会响,电话那头的机器人会告诉你Hello然后说一串数字,比如one one two two five six,重复两遍,记好了。

电话那头说Goodbye的时候(晕,还再见呢),就可以挂机了。

把刚才那一串号码输进打开的那个新页面,如果正确,24小时后就会开通了!

使用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 © 2021 比尔盖子 博客

Theme by Anders NorenUp ↑