ありがとう!
お姉さま~

服务器因为资金原因关停了两三个月, 现在"壕"@苏云灵 的帮助下恢复了正常运转. 这台服务器购买于 NyaVM , 硬件配置方面是双核 CPU, 2G DDR3内存, 12G RAID1 HHD, 国内 Ping 值在 250ms-600ms 之间, 国外 Ping 值最快也达到了 70ms. 地理位置不得而知, 应该比较偏僻. 据官网所说这服务器的卖点是抗 DDos. 可以承受高达 480G 的攻击, 虽说如此厉害, 但... 我等小站, 被 D 了甚至会开心吧...

总而言之, 我就这么开始了忙忙碌碌的网站迁移. 以此文谨记此次搬站所遇到的问题, 和坑...


首先是系统, 服务器现在是 Ubuntu Server 14.04 LTS, 不能更改. 为了使用最新的系统我只好通过软件进行更新, 我先去百度了一下, 大多需要通过安装 update-manager-core 来实现升级, 看起来相当麻烦. 在这里我使用如下命令...

$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get dist-upgrade
$sudo do-release-upgrade

重启完成后, 登录后欢迎信息显示系统版本为 Ubuntu Server 16.04 LTS.

然后是安装常用软件:

  • screen: 会话保持
  • wget: 下载
  • curl: 也是一个下载
  • zsh: 我比较喜欢的Shell
  • git: 版本控制软件

注: UbuntuServer16.04LTS可以直接使用 apt install 进行安装而不需要 apt-get install

接下来是运行环境, 我一开始的网站采用的是 Ubuntu Server 安装时自带的 LAMP 环境(安装过程中选择LAMP Server). 后来就使用 'apt-get install' 的方法安装. 再后来为了体验 PHP7, 就使用了编译安装. 然而我经常搬站, 所以安装/ 配置环境相当频繁, 就尝试写了个 .sh 脚本. 在写的过程中遇到了不少问题, 就去网上查, 无意中发现网上这种脚本多得是, 而且比我写的完善得多. 就转去搜索这样的脚本... 就这样, 我这次采用了 lnmp.org 的一键安装包. 根据他网站上详细的说明, 很快的安装完成了 Nginx, Apache, PHP7, MariaDB 10.

Typecho 是一个轻量优雅的开源博客程序, 支持 Markdown 排版, 运行速度快, 功能不多但足够实用. 我已经用了它将近2 年. 但因为用的人并不多, 所以自从 14年10月10日 以来稳定版再无更新, 额外的插件和主题也不是那么丰富.

搬站倒是很简单:

  1. 参考 lnmp.org 官方说明文档, 用 lnmp vhost add 命令新建名为 8023.moe 的虚拟主机
  2. 将网页源码上传到 /home/wwwroot/8023.moe/ 目录.
  3. /home/wwwroot/8023.moe/ 目录下使用 chown www:www .* -R 命令改变文件们的属主.
  4. 使用数据库管理软件登录数据库, 导入Sql数据文件.

如此, 网站首页就可以显示了, 但子页无法显示. 这才发现在备份网站的时候因为 .htaccess 文件是隐藏文件, 没有备份... 我不得不重新编写 .htaccess 文件:

<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteBase / 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 

</IfModule> 
  • <iFmodule mod_rewrite.c> 用于判断 mod_rewrite 模块是否存在
  • rewritEengine on 表示重写引擎开启
  • rewritEbase / 表示重写范围为根目录, 所有访问都参与重写
  • rewritEcond %{REQUEST_FILENAME} !-frewritEcond %{REQUEST_FILENAME} !-d 表示如果访问的文件或目录找不到(或者说访问的不是文件或目录).
  • rewritErule ^(.*)$ /index.php/$1 表示将正则 ^(.*)$* 匹配到的字符(匹配到域名后面的所有字符)重写到 */index.php/$1 ($1为之前正则所匹配到的字符).
  • [L] 表示重写到此为止.

如此, 访问子页面时的 url 由类似 http://8023.moe/index.php/blog/240.html 变为类似 http://8023.moe/blog/240.html 的样子(少了 /index.php ). 再之后, 我需要将 *.8023.moe 全部重定向到 8023.moe , 使网址更简洁, 更不容易输入错误.

/usr/local/nginx/conf/vhost/8023.moe.conf 文件中添加:

if ( $host != '8023.moe' ) {
    rewrite "^/(.*)$" http://8023.moe/$1 permanent; 
} 

这段话将判断域名是否为 8023.moe , 如果不是, 就重定向到 8023.moe .

其中:

  • $host 是访问着访问的主机名
  • rewrite 表示重写
  • "^/(.*)$" 是一个正则表达式, 匹配主机名和 / 后面的所有字符
  • $1 表示先前正则表达式所匹配到的字符
  • permanent 表示永久重定向(301)

如此, 我无论访问 www.8023.moe 还是 suibian.8023.moe 还是别的什么, 都可以重定向到正确的 8023.moe 了.

至此, 搬站完成!!~