博客迁移到 vps

几周前在 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-dataadm

如果新建了目录需要修改 /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 即可。

参考资料

[1] 在Nginx上为WordPress固定链接配置Rewrite

发表评论

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