ありがとう!
お姉さま~
以此文谨记此次搬站所遇到的问题, 和坑...

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


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

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

  重启完成后, 登录后欢迎信息显示系统版本为UbuntuServer16.04LTS.
  然后是安装常用软件:

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

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

  接下来是运行环境, 我一开始的网站采用的是UbuntuServer安装时自带的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 了.
  至此, 搬站完成!!~