折腾记录:将wordpress搬家到腾讯云

由于腾讯云有学生计划,每个月可以有50块的代金券,于是我就愉快地用上了腾讯云的服务器。本来迁移一个wordpress应该是很简单的事情,居然被我折腾了一天!!!整整一天!!所以,还是记录一下吧。

想象中的迁移其实相当简单啊,由于先前已经把apache、php模块、mysql都装好了,只要把数据库和网站文件复制过来,然后改一下wp-config.php就行啦。但没想到的是,由于版本的不一致和权限的问题,我踩了不少坑。

第一坑:mysql版本不一致

在腾讯云,我的系统是centos6.7,mysql是通过yum安装的,看看版本:

rpm -qa | grep mysql

mysql版本

5.1版本的,而我在另外在另外一台服务器上面的mysql是5.6版本的,所以,当我想愉快的用navicat-for-mysql来进行数据传输的时候,出现了编码错误,无法传输。高版本的mysql有这样的排序规则:utf8mb4_unicode_ci,低版本的没有。

所以,我只能去踩第二个坑了。

第二坑:不能直接把数据库搬过来

踩完第一坑,想着说,既然不能这么传输数据库,那我就直接导出sql,然后在新的数据库执行就好了。

导出、导入完毕,然后上传wordpress文件到服务器,更改wp-config.php中的数据库配置。然后配置虚拟主机,重启apache,一切正常。

浏览器输入ip来访问。居然重定向到apache的默认页面去了。很明显,数据库根本连接不了。。

最后的解决方法是,老老实实的,先不导入数据库,让wordpress自己完成安装,把默认的表都建齐了,然后把默认的数据给删掉,最后把之前导出的sql文件里的insert语句重新执行一遍,相当于重新写数据了。

第三坑:固定链接与.htaccess文件

网站的url设计用的是域名+文章名,这个可以在wordpress后台的“固定链接”里面设置。但是我设置了之后,发现居然只有“朴素”模式可以用,采用别的固定链接,都会404。

搜索引擎和wordpress都告诉我,是.htaccess文件的问题。

wordpress的.htaccess文件

于是我在网站根目录下新建了一个.htaccess文件,把它告诉我要填写的内容写进去了,保存。

vim .htaccess

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

然后,在apache的virtual host配置里,加了以下设置,使.htaccess生效:

<Directory “/mypath/wordpress”>
AllowOverride ALL
Order allow,deny
Allow from all
</Directory>

其中,AllowOverride ALL是一定要加的,这个代表使用.htaccess的策略。

但是,问题出现了,加了这个配置之后,图片、css、js等静态文件访问不了了。

经过好久好久的测试,千言万语可以通过以下一行命令解决:

将路径先切换到wordpress网站根目录,然后

chown -R apache:apache ./*

把所有文件的拥有者改成apache,把所属的组改成apache,这样apache就有权限了。这也直接能解决第四个坑

第四坑:在线更新wordpress出错

无论是升级wordpress还是升级插件,总是会出现权限错误,都不成功。

都是权限不足!如果你够暴力,直接全部777权限,解决,但不建议这么做。我最终还是选择了把网站的owner和group都改成了apache,正如坑三所提到的那样。

总结

权限问题!权限问题!权限问题!

这个问题在我配置网站的时候经常有,次次有,所以一定要把系统的各种权限搞懂,不要每次都用root去倒腾一些东西,得不偿失!要建立起良好的权限管理的习惯。

这篇写的思路比较混乱,之后再把之前配置整个服务器的过程记录一下。

《折腾记录:将wordpress搬家到腾讯云》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注