前几天,使用已久的windows服务器已然到期,于是打算把blog迁出去。考虑到已经用习惯了的wordpress比较顺手,就不再打算更换其他的系统。那面临的一个重要问题就是迁移。尝试了导出插件,但在导入的时候遇到问题,又因为没配置发邮件功能,也不想去用他的debug功能。同时还考虑到之前安装的插件对原有数据库的侵入,因为一部分插件已经不需要安装。好吧,爱干净的我就选择了重新安装,再单独迁移数据和已上传的文件资源。一阵操作猛如虎之后,blog又回来了。选择一个清爽的模板,少了很多插件,一切又回到了从前。这里就记下搬家的过程好了。
安装php
目前最新的wordpress 5.4.2 版本要求php版本在7.3以上,因此如果你已经安装了低版本的php,虽不影响使用,但管理后台始终会提示需要升级,当然你可以选择无视,也可以选择关闭,那我选择升级,升到7.3版本。如果你本身没有安装,就直接跳过卸载部分吧。
卸载低版本php
查看当前安装php信息
php -v
查看所安装的软件包
php yum list installed | grep php
停止当前php服务
systemctl start php-fpm
使用通配符,对当前安装的php软件包执行remove yum remove php
安装 php 7.3
更换当前RPM源
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
安装EPEL源
yum install epel-release
安装REMI源
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Yum 源工具
yum install yum-utils
安装php7.3
yum install -y php73-php-fpm php73-php-cli php73-php-bcmath php73-php-gd php73-php-json php73-php-mbstring php73-php-mcrypt php73-php-mysqlnd php73-php-opcache php73-php-pdo php73-php-pecl-crypto php73-php-pecl-mcrypt php73-php-pecl-geoip php73-php-recode php73-php-snmp php73-php-soap php73-php-xml php73-php-imagick php73-php-zip
查看版本以及启动
php73 -v
设置开机自动启动
systemctl enable php73-php-fpm
设置开机自动启动,会在/etc/systemd/system/multi-user.target.wants/目录下新建一个/usr/lib/systemd/system/php73-php-fpm.service 文件的链接。
启动
systemctl start php73-php-fpm
安装Nginx
下载 Nginx
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
建立Nginx的yum仓库。
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
安装Nginx。
yum -y install nginx
启动Nginx并设置开机启动。
systemctl start nginx
systemctl enable nginx
Mysql
Mysql 这里就不安装了,我使用现有的数据库。如果你需要安装,参考文末的参考连接,或者网上大把文章任选。
安装wordpress
下载最新安装包
wget http://wordpress.org/latest.tar.gz
解压后
tar -xvf wordpress-5.4.2.tar.gz
重命名
mv wordpress-5.4.2 sundayfine.com
指定用户组
sudo chown -R apache:apache /mnt/wordpress
设置目录权限
chmod 755 /mnt/sundayfine.com/wp-content/
配置Nginx,增加默认页及对php的支持
vim /etc/nginx/conf.d/default.conf
location / {
root /mnt/sundayfine.com;
index index.php index.html index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /mnt/sundayfine.com$fastcgi_script_name;
include fastcgi_params;
}
wordpress 数据迁移
这里先来看看wordpress的数据库表结构,因为我要从原来的数据库中导出这些表的数据(除了wp_options表以外),并在新库中执行。
表名 | 描述 |
---|---|
wp_commentmeta | 存储评论的元数据 |
wp_comments | 存储评论 |
wp_links | 存储友情链接(Blogroll) |
wp_options | 存储WordPress系统选项和插件、主题配置 |
wp_postmeta | 存储文章(包括页面、上传文件、修订)的元数据 |
wp_posts | 存储文章(包括页面、上传文件、修订) |
wp_termmeta | 这张表貌似都没有数据 |
wp_terms | 存储每个目录、标签 |
wp_term_relationships | 存储每个文章、链接和对应分类的关系 |
wp_term_taxonomy | 存储每个目录、标签所对应的分类 |
wp_usermeta | 存储用户的元数据 |
wp_users | 存储用户 |
数据库的导出和导入就不说了,任何一个Mysql客户端工具都支持导出数据SQL,在新库执行insert即可。
上述以外的数据库表,就可以不用导出了,这样会比较干净,当然根据你的需要,选择你需要的表导出并执行。
迁移上传的图片文件
/wp-content/uploads 目录存放所有上传的图片资源,拷贝原站点目录下/wp-content/uploads目录,到新wordpress相应的位置即可。
最后再说下ssl证书,阿里的免费证书貌似下架了,所以重新改成了FreeSSL,也非常方便。
剩下的工作就是重新登录wordpress后,做些基本设置,安装必要的插件,改改小样式就OK了,如果有子主题,重新上传就好。
到这里我们的环境,以及blog就都已经迁移完毕,其实如果你不需要重装wordpress,完全可以将数据库及代码复制到新地址发布即可。
上面的总结没写太详细,因为参考资料中的过程已经很清楚,这里只是总结并加入了一些补充和修正了,留个案底。