几周前在 linode 上买了个最低配的 vps(不要问我为什么买,我也不知道,反正就是买了),流量翻墙也用不完,于是想着把博客迁过来,还能省点钱。
nginx 和 php
看 这里。
另外还需要在 /etc/nginx/sites-enabled/default
中的 server{}
部分加上
index index.html index.php;
安装数据库
自从 MySQL 被 Oracle 收购后,开源界为了避免版权问题,fork 了一个分支 MariaDB:
apt-get install mariadb-server
为了能让 php 访问数据库,还需要安装对应的插件:
apt-get install php-mysql
备份原博客
从 cpanel 打开文件管理器,将 public_html 目录(如果不是用博客空间,就是当时解压 wordpress 文件所在的目录)下的所有文件打包。这个目录下包含 wordpress 及安装的插件和主题文件。
备份文章及评论等数据一般都是直接从 MySQL 导出,可以通过 cpanel 界面操作。
wordpress 有自带的导入导出工具,但经过测试后发现会丢数据(老的 3.x 版本的导入导出功能中,再次导入文件会出现丢掉正文中的反斜杠字符的情况,当前 5.2.2 版的会丢掉代码中的空格的情况,反正有着各种各样的问题),另外导入的时候还限制了 .xml 文件大小不能超过 2 MB,总之不建议使用自带的备份功能。
数据库配置
查看 wordpress 目录中的 wp-config.php
可以找到原博客中的数据库名称,用户及密码,为了简便,这里最好在导入数据前在 MariaDB 中建立同样的数据库及用户并加上相应的权限:
create database <db_name>;
create user <user_name> identified by '<password>';
grant all privileges on <db_name>.* to <user_name>@localhost identified by '<password>';
flush privileges;
为了安全,修改 MySQL 的配置 /etc/mysql/my.cnf
只允许本机登录:
bind-address = 127.0.0.1
设置好数据库及用户后就可以导入文章及评论等数据:
use <db_name>;
source <backup>.sql;
nginx 配置 url rewrite
见参考资料 [1]。
如果 wordpress 在网站的根目录下,或者配置了虚拟目录指向网站域名的根路径,需要编辑 /etc/nginx/sites-enabled/default
,在 location / {}
内加入以下配置
if (!-e $request_filename) {
rewrite (.*) /index.php;
}
如果 wordpress 在网站的子目录下,比如 http://host/wordpress/,这时需要在 server{}
内新增
location /wordpress/ {
if (!-e $request_filename) {
rewrite (.*) /wordpress/index.php;
}
}
重启 nginx。
wordpress 配置
将打包的 wordpress 文件解压到 nginx 默认的根目录 /var/www/html
(或者新建一个别的目录),然后把目录权限所有者和组分别改为 www-data
和 adm
。
如果新建了目录需要修改 /etc/nginx/sites-enabled/default
中的 root
选项,改为对应的目录,重启 nginx。
将域名指向新 IP
不同的域名管理商界面不一样,这个就不细说了。
最后
以上步骤完成后应该就可以正常访问了。
目前用的 wordpress 版本是 5.2.2,因为新版本越来越完善,之前需要改代码的部分都不需要改了,所以应该会一直跟着最新版本升级;又由于新版本中加入了很多老版本没有的功能,所以一些插件也用不上了,这里整理下目前在用的插件:
- Advanced Database Cleaner:清理草稿和垃圾评论等等无用数据的插件,因为我的数据还比较少,免费版就够用了。
- Advanced Excerpt:摘要插件。
- Akismet:wordpress 自带反垃圾评论插件,一直在用,但是有些垃圾评论还是挡不住。
- Anti-spam:为了弥补 Akismet 的不足,最终装了这个,体积小,不需要额外设置(例如无验证码),相当给力,强烈推荐。
- Google XML Sitemaps:方便搜索引擎抓取的,不解释。
- JP Markdown:支持 markdown 的插件,JetPack 的一部分。
- Limit Login Attempts:老有人在暴力穷举,就装了这个。
- WP Code Highlight.js:给 markdown 生成页面用的代码高亮插件。markdown 生成的代码部分是这样的“
<pre><code>...</code></pre>
”,好多高亮插件都不是这样的形式。自定义高亮标记的插件一律不考虑。 - WP Statistics:由于没装 cpanel,所以使用这个插件来统计搜索引擎及访问记录等信息。
- Classic Editor:经典编辑器的插件,实在用不惯新版的区块编辑器,而且写 markdown 也不需要这种高级功能。
其它
Q:上传备份文件时报错:“413 Request Entity Too Large”
A:这是 nginx 的上传大小限制,修改 /etc/nginx/nginx.conf
,在 http{}
部分加入一行配置:client_max_body_size 20m;
,重启 nginx 即可。