之前域名没有备案,一直用香港虚拟主机,速度不太理想,加上云加速以后体验也没有改善多少。正好赶上阿里云 ECS 做活动,算下来和两个虚拟主机的费用差不多,还能留点空间折腾其他东西,就买了三年。
服务器配置是双核、4 GB 内存、40 GB 硬盘,带宽只有 1 Mbps。实例创建以后,一边配置环境,一边准备备案材料。备案通过后,就开始把 Typecho 从原来的虚拟主机迁到 ECS。
Typecho 比较轻量,迁移主要就是程序文件、数据库和 Nginx 配置。LNMP 环境的安装已经在上一篇记录过了,这里只写搬站过程。
备份并上传文件
先在原虚拟主机备份 MySQL 数据库,再把 Typecho 程序打包下载到本地。
我用 Xshell 登录 ECS,安装 lrzsz 后,直接把 SQL 备份和程序压缩包拖进终端上传:
yum -y install lrzsz实际文件名、数据库名和站点目录按自己的环境替换,备份文件不要放在网站公开目录里。
恢复数据库
登录 MariaDB,创建新库并导入 SQL:
CREATE DATABASE blog DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE blog;
SOURCE /root/typecho-backup.sql;数据库账号单独创建,并且只授予这个博客库所需的权限。账号和密码写进 Typecho 配置时,不要直接放到文章、截图或公开仓库里。
恢复 Typecho 程序
创建站点目录,然后把程序解压进去:
mkdir -p /usr/share/nginx/html/blog
tar -xvzf /root/typecho.tar.gz -C /usr/share/nginx/html/blog进入程序目录,检查 config.inc.php 中的数据库地址、库名、用户名和密码。压缩包里如果多套了一层目录,需要把真正的 Typecho 文件移动到站点根目录,不然 Nginx 会找不到 index.php。
确认程序文件和数据库都正常以后,再处理旧压缩包和 SQL 备份,不要在验证前直接删除。
配置 Nginx
在 /etc/nginx/conf.d 下新建站点配置,例如 blog.conf:
server {
listen 80;
server_name <domain>;
root /usr/share/nginx/html/blog;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
access_log /var/log/nginx/blog_access.log combined;
}server_name 是绑定的域名,root 是 Typecho 程序所在目录。location / 处理 Typecho 的固定链接,PHP 请求交给本机的 PHP-FPM。
检查配置并重新加载 Nginx:
nginx -t
systemctl reload nginx最后到域名服务商那里修改解析,把域名指向 ECS 的公网 IP。等解析生效后,检查首页、文章页、后台登录、附件和固定链接是否正常。确认新站没有问题,这次迁移就完成了。