14

Wordpress迁入阿里云笔记
最近网站终于完美无缝迁入阿里云平台。因为一直是做网页设计和前端设计的,所以对于后端服务器方面都一直有些不知所措。之前网站一直都是托管的状态,也基本没有做过迁移。就这样从写博客的时候没几个人知道博客是什么开始,一直到现在也快十年了。写写停停,数据库导出后的数据也大到一百多兆。于是当所有备份下来的文件上传阿里云服务器后,数据库的完美导入一直是我心头的痛。因为几年前在本地架设时尝试过,一直都没有成功。这次一下子把香港的服务器停了,直接所有文件上传到阿里云。然后又认真的走完了备案流程,其实心里是木有底的,加上最近工作也挺忙的,直到前些日子的某个晚上才开始认真的研究数据库的导入。现在把遇到的一些问题和经验记录下来。方便自己和需要迁移网站的朋友参考。
在开始之前大家可以先看看我之前有写过的一篇文章 阿里云CentOS服务器(ECS)上搭建nginx+mysql+php-fpm环境 。因为我要迁入的平台架构是基于这篇文章中所描述的,也是现在非常流行的配置。那么当阿里云的服务配置都已经搭建成功。备份好的网站文件也已经上传到新服务器指定目录之中,下面如何导入大尺寸数据呢?需要注意哪些问题呢?

1、如何导入超过默认限制的数据
在phpmyadmin中显示上传文件最大为2M(有的是8M),可我的单个sql文件超过100M,尝试上传,上传依然可以进行,但上传到2M或8M即操作终止,phpmyadmin提示上传失败。
该问题实际上是php的配置问题,在php.ini(该文件在/etc/php.ini)中有两个参数需要关注:

1
upload_max_filesize   8m
1
2
3
4
5
6
post_max_size   8m
upload_max_filesize为上传文件的最大尺寸,post_max_size为POST数据的最大尺寸,在php实现上post_max_size>=upload_max_filesize。
解决方法如下:
a.把upload_max_filesize和post_max_size改为足够的大小,如:
<code>upload_max_filesize   150M
post_max_size         150M

b.保证post_max_size>=upload_max_filesize
当然,每个人所配置的服务器都不尽相同,所以关于上传失败还跟以下php配置参数有关:
开放上传文件功能:
file_uploads on

上传文件的临时文件夹:

1
upload_tmp_dir

最大执行时间:(如果文件过大,将会发生php执行超时)
max_execution_time

最大输入时间:(接收数据阶段的最大时间)

1
max_input_time

最大内存限制:(每个php请求的最大内存空间)

1
memory_limit   //memory_limit&gt;=post_max_size&gt;=upload_max_filesize

然后重启下mysql

1
/etc/inint.d/mysqld restart

看看mysql导入数据库界面中上传文件选项后面是不是有(最大限制:105M)咯。。。 如果木有,请继续看下面。
如果上传后显示 Request Entity Too Large ,可能是因为你的 nginx 服务器最大上传文件的限制没有修改过来。修改方法如下:
打开nginx主配置文件nginx.conf,找到http{}段,修改或者添加

1
client_max_body_size 150m;

然后重启nginx

1
service nginx restart

现在应该可以上传超100M的数据啦。如果还是木有用,就整个重启下阿里云的服务器。
数据库导入后,如果你的网站是wordpress迁移过来的,请别忘记修改 wp-config.php 文件中服务器和数据库。
这样一个迁移后的Wordpress网站应该是可以正常打开咯的。
但是,之后我的站又遇到了一个问题,就是WP首页打开是没有问题的,但是一旦点击文章或者任何其他标签和分类页面,网页都显示

1
Noinputfilespecified

一开始非常困惑,查了一圈后原来是因为之前网站有设置了伪静态,而之前的服务器用的是 Apache 直接丢htaccess文件到网站根目录就可以生效伪静态。现在采用的是nginx.所以要在nginx中wordpress伪静态配置方法如下:

在Nginx的配置文件server段里加入如下规则:

1
2
3
4
location /
{
try_files $uri $uri/ /index.php?q=$uri&amp;$args;
}

如果wordpress安装在blog目录,则这样写

1
2
3
location /blog {
try_files $uri $uri/ /blog/index.php;
}

最后重启nginx 服务即可:

1
/usr/local/nginx/sbin/nginx -s reload

这样,网站文章等页面应该就可以正常的打开咯!

之后又发现网站的一个Hacklog Remote Image插件无法正常工作。超级郁闷,经过搜索和检查知道了是因为PHP的GD2库没有设置造成的。于是又是各种研究如何开启GD库。
因为GD库默认是没有开启的,所以小伙伴们在无法使用的时候先去php.ini中搜索下有木有extension=php_gd2.dll,如果搜索到了直接去掉前面的分号;就可以了。如果搜索不到,我们就要重新安装GD库。
### 如果是CentOS系的系统,用yum安装,如下

1
yum install php-gd

如果执行上面的文件后出现如下返回

1
The program package-cleanup is found in the yum-utils package

可能是yum替换源的时候出错或者安装软件时中断之类的,用下面方法来解决:

1
2
3
4
5
yum-complete-transaction --cleanup-only
# 清除可能存在的重复包
package-cleanup --dupes
# 清除可能存在的损坏包
package-cleanup --problems

然后再执行php-gd的安装,如果出现Missing Dependency: libt1.so.5报错的。这是模块依赖错误,错误提示如下:

1
2
3
4
5
6
7
Missing Dependency: libt1.so.5()(64bit) is needed by package php-gd-5.2.17-1.el5.x86_64
Error: Missing Dependency: libt1.so.5()(64bit) is needed by package php-gd-5.2.17-1.el5.x86_64
You could try using --skip-broken to work around the problem
You could try running: package-cleanup --problems
package-cleanup --dupes
rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.

解决办法:
下载安装对应版本的t1lib的rpm包后,重新yum安装php-gd即可。rpm包下载路径如下:
32位:http://rpm.pbone.net/index.php3/stat/4/idpl/5782702/dir/centos_5/com/t1lib-5.1.0-9.el5.kb.i386.rpm.html
64位:http://rpm.pbone.net/index.php3/stat/4/idpl/5786767/dir/centos_5/com/t1lib-5.1.0-9.el5.kb.x86_64.rpm.html
(注意操作系统版本!)
将对应的版本下载到服务器中,然后执行如下代码

1
$ rpm -ivh t1lib-5.1.0-9.el5.kb.x86_64.rpm

然后再次执行

1
yum install php-gd

在一连串的下载和安装后你会看到 Complete! 提示
重启下nginx和php-fpm,这样GD库就已经安装到你的Centos系统中啦!

标签:, , , ,