搬家记

这是一篇旧文,其中的内容可能已经过时。

从一台丢包率高达十分之一的服务器上把博客搬走,访问速度明显有了质的飞跃。因为之前对 WordPress 做了很多自定义的改动,所以我没有采取全新安装 WordPress + 安装主题插件 + 导入文章的方式,而是直接把整个文件夹和数据库打包带走了。

简单把我的步骤和遇到的问题罗列一下:

  1. 进入旧服务器博客目录,打包博客文件夹;

    tar -cvf blog.tar blog

  2. 把压缩包上传到新服务器对应目录(700M 的文件只花了 15 秒);

    scp blog.tar [email protected]:/home/blog

  3. 进入新服务器,解压压缩包;

    tar -tvf blog.tar

  4. 在旧服务器上导出博客数据库;

  5. 新服务器主目录下安装 phpMyAdmin;

  6. 进入 phpMyAdmin 导入博客数据库;

  7. 修改wp-config.php中的数据库名、登录名和密码;

  8. 把域名解析至104.131.144.112,由于 TTL 设置为十二小时,所以不会立即生效;

  9. 等待域名更新时,在服务器上准备好域名跳转。进入/etc/apache2/sites-available,添加文件handsomeone.com.conf。这里由于 Ubuntu 新版本的特性,文件名一定要以.conf结尾。文件内容为:

    <VirtualHost \*:80>
      ServerAdmin [email protected]
      ServerName handsomeone.com
      ServerAlias \*.handsomeone.com
      DocumentRoot /home/blog/blog
      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

然后使用a2ensite命令使配置生效并重启 apache2。

  1. 检查apache2.conf。确保/home/blog下有Require all granted语句。如果博客目录下有.htaccess文件,则/home/blog下还应有AllowOverride All语句,否则.htaccess无效。当时为虚拟目录失效的问题伤脑筋了好久,最后才发现是这个原因。 从别的地方看到一个窍门,要迅速判断.htaccess是否生效,就打开它随意加点文字进去。如果它的确起着作用,那么由于解析失败,访问博客时会返回错误 500。
  2. 最后,如果.htaccess里用到了rewriteexpires等模块,最好到服务器/etc/apache2/mods-enabled里看这个模块是否被启用了。如果没有,就用a2enmod命令启用此模块,然后重启 Apache。