昨天搬了一个比较大的论坛,虽然以前也搬过自己的论坛,不过自己论坛数据量小,操作方便,也没有外来因素干扰,直接使用整站搬迁,很快就搞定了。这次却走了些弯路。
首先,失误源自一开始没有用整站搬家的模式,而是在新服务器上搭建好一个全新的discuz论坛,然后将原论坛数据库打包,上传到新服务器替换新论坛服务器。在自己印象中这样似乎也可以,所以放弃了一开始整站搬家的方案。但事实证明自己犯错误了,本来1个多小时可以搞定的事情折腾了4个多小时,差点通宵了。
数据库的上传并没有像预料的那么慢,所以说,搬家用时和数据库上传用时关系已经不大了,10多分钟就上传完了,之前预计要上传1个多小时。
主要遇到的问题是下面几个:
1. phpmyadmin无法访问
这算是一个意外吧,不算discuz搬家的内容,但是既然遇到了也顺便记录下。之前做过phpmyadmin目录的密码保护,出错了而且当时还没发现,导致这次登录时总是直接提示下载php文件,看来是不解析php了。当时都差不多出冷汗了,心想如果搞不定phpmyadmin,被迫重装lnmp,那就有我忙的了,那一大堆配置文件一夜怎么也搞不定啊。不过还好,后来找到处理方法了,是因为自己粗心,看教程时没有注意看完,导致配置出错,正确的nginx.conf配置:
注意,加上认证之后该目录下的PHP将不会被解析,会出现下载提示,如果想可以解析PHP可以将上面的配置改为:
location ^~ /soft/ {
location ~ .*\.(php|php5)?$ {
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
auth_basic "Authorized users only";
auth_basic_user_file 这里写前面脚本返回的文件路径;
}
配置完成,打开phpmyadmin,终于松了口气。
2. 配置文件
替换数据库之后,首先是不能登录了。急躁的登录了几次,都失败,不敢在登录,次数多了会被禁止登录15分钟的,可没时间等。静下来想想才发现还没改配置文件呢,于是去折腾那几个配置文件。config_global.php中的服务器用户名密码及数据库还有表前缀都需要修改,config_ucenter.php中除了修改数据库信息,还需要从原配置文件中复制uc_key等。uc_server的config.inc.php中,需要修改数据库信息及创始人密码。
改好这些之后,终于可以登录了。
继续搬家,下一个问题更加头大。
3. 头像及部分附件文件的转移
可以登录了,发现自己头像没了,才想起来搬家规划中竟然没考虑头像。又赶紧去原服务器,可是原服务器目录实在太大,进去看看发现threadcache文件夹居然有1G多,于是下决心清理目录,先把一些缓存和备份移走了,然后整站打包了一下,话说压缩解压文件花的时间也相当可观。然后清理了不需要的程序文件,只留头像附件及其他一些图片,再次打包,上传到新服务器。
本来也知道unzip解压会提示是否覆盖文件,新老图片的重复率还是很高的,所以没敢直接解压。先在别处解压了,然后用mv移动,可是居然提示目录非空,不能移动。郁闷了。再次心凉。百度,很多人说加-f选项,可是仍然会提示是否覆盖。真心崩溃啊。当时好像忙乱中还改unzip加了-f选项,结果屏幕一个劲的乱码,没敢让执行下去了,ctrl+c停止了它。不过还好,就在要绝望的时候,找到了解决方案。用如下命令:
cp –R –u
-R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理
-u 或 --update 使用这项参数之后,只会在源文件的修改(Modification Time)较目的文件更新时,或是名称相互对应的目的文件并不存在,才复制文件
总算解决了,再次松口气。
差不多4点了,还有一些小问题,曾经也遇到过的,linux下面中文文件名乱码,一些勋章文件无法显示,先留下明天再说吧。于是去睡觉了。
4.插件问题
午饭的时间起来了,匆匆吃完饭,继续处理一些遗留问题,却发现自己把插件文件给漏掉了。有了昨晚的纠结经历,在不想折腾了,于是决定重新用自己最初的方案,直接整站搬家。于是将夜里打包好的整站文件解压到web目录,将配置文件直接用昨天弄好的配置文件替换。然后执行chown,在执行mv将目录改名为虚拟主机配置文件中的目录名。于是,在前台几乎没有感觉的情况下很快搞定了整站搬家,前面那些个乱七八糟的问题也没有了。看来昨夜真是有点失败,效率太低了。
5. 其他问题
qq登录失效:直接云平台同步下站点信息就ok了。
中文文件名乱码:用filezilla,传输字符集设为强制utf8,然后重新上传一遍,解决问题。
写在最后,话说以后在不这么折腾了,整站搬家效率是最高的,要做的仅仅是打包、上传、解包、改配置文件,比起夜里折腾的那些愉快多了。
有问题想请假,怎么联系您?
http://www.annhe.net/about-me
在用“cp -rf ...”时,总提示overwrite,小郁闷,已经加了参数“-f”会什么还是显示呢???原来linux默认把cp 做了别名处理,cp相当于cp -i。没有关系,我们只需在cp前加“”即可,如"cp -rf ..." 顺便说一下:查看一个命令的别名:alias cp为命令增加别名:alias cp="cp -i"来自:http://blog.csdn.net/shoyer/article/details/7938903上面记录的不对,也不知道当时按这个是怎么没出问题的