一年前在阿里云租的云虚拟主机即将到期,最近每次在控制台看到红色的倒计时心里就慌慌的。如果只是续费倒容易,直接交钱就是了,可是我以后想用ECS,就必须面临一个问题——网站搬家,搬家之前又必须在ECS上配置好一系列环境,环境搭好了,才能进行后续的迁移操作,本篇记录一下网站搬家的详细过程。

为什么想用ECS呢?
去年此时,想拥有一台自己的服务器,部署平时写的一些东西,但深知自己是小白,所以查阅了一些资料之后,选择了阿里云的云虚拟主机,优点是简单、易上手,只要将网页文件放进服务器的htdocs文件夹里,就可以通过服务器IP或域名访问到指定网页了,缺点则是环境是阿里云配置好的,除了升级某些指定软件的版本以外,其他的什么都改不了,极大地限制了自由。而云服务器ECS则不同,它其实就是你在远程(同城、其他城市或其他国家)租赁的一台电脑,它可以根据你自己的喜好安装指定的操作系统(Centos、Ubuntu、Windows等),拥有一个纯净的空间,可以随意部署环境和安装应用。
举个例子,云虚拟主机就是你租的房子,云服务器ECS则是你自己买的房子。租的房子是房东的,他不允许你砸墙换梁,不允许你对房间大改,你只能在房东的一系列要求下小心的使用着。自己买的房子则可以随意发挥(只要你不砸掉承重墙或者做一些威胁房屋安全的事情),刷墙、装修、铺地板、安橱柜……怎么开心怎么来。
因为我不想仅仅部署一个博客,还想部署一些后端接口服务,这样就必须使用ECS了。

一、数据备份

登录主机管理控制台,左侧菜单选择【工具】> 【备份恢复】,完成数据库备份和网站备份。这一步的主要目的就是把原来放在云虚拟主机上的网站程序和数据库文件下载到本地,待ECS环境搭建好后,传到ECS上。

二、登录云服务器

参考阿里云官网教程【搭建云上博客】,完成第1步即可(为什么不全按这份文档搭建?因为它只适合从零搭建博客,并不适合博客迁移),如下图:

三、服务器环境搭建

这里我选择了拥有可视化界面、对入门者友好的宝塔面板

云服务器登录成功后,在终端里输入Centos版本的宝塔面板安装命令(我的ECS操作系统是Centos,其他版本请点击“立即安装”,查看新页面上提供的各操作系统的安装命令):

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

等待2分钟左右,安装成功后,终端会展示宝塔面板登录信息(注意复制保存),类似于:

外网面板地址: http://123.123.123.123:8888/xxxxxxxx
内网面板地址: http://234.234.234.234:8888/xxxxxxxx
username: xxxxxxxx
password: xxxxxxxx
If you cannot access the panel,
release the following panel port [8888] in the security group
若无法访问面板,请检查防火墙/安全组是否有放行面板[8888]端口

Tip:如果不愿保存,后面忘记了面板地址,也没关系,登录服务器后输入如下命令查询宝塔面板入口地址:

/etc/init.d/bt default

一般情况下,此时访问面板地址是无效的,解决办法:进入阿里云控制台,在实例列表中点击【实例ID】,左侧菜单选择【本实例安全组】,点击【安全组ID】进入下图页面,在【访问规则】【入方向】中手动添加一条8888规则,表示放行8888端口:

访问外网面板地址,初次登录会有弹框提示,根据提示修改账号/密码一键安装LNMP环境,我根据之前的云虚拟主机配置选择了将要安装的各软件的版本:

四、新建网站和数据库

进入宝塔面板,选择【网站】>【添加站点】,一键添加网站数据库

点击网站列表中的网站名,可以看到该站点的详细信息,点击下图中的域名可以查看站点(左侧目录中的配置文件后面会用到,需要配置一个Nginx代理规则)。

五、上传网站文件 & 导入数据库

上传网站文件:点击左侧的【文件】,进入根目录 / www / wwwroot,上传之前在第一步中备份的网站文件压缩包,解压至当前目录。

打开网站目录下的wp-config.php(宝塔面板提供文件编辑功能),依次填入之前在第四步中设置的数据库名称数据库用户名数据库密码,由于主机就在“本地”,所以是localhost,保存退出。

进入数据库页面,点击phpMyAdmin按钮或者列表中的管理按钮进入数据库管理页面。

导入数据库文件:选中博客数据库,点击上方的导入,上传之前在第一步中备份的数据库文件(*.sql),点击右下角【执行】按钮。

六、闭站保护

此时由于该域名还未指向(解析到)ECS服务器公网IP,所以网站(宝塔面板上新建的wy310.cn)依然不可访问。

注意:下一步会介绍修改域名解析,但在此之前,你必须了解:从【修改域名解析】到【网站成功搬家】的这段时间里,网站是不可访问的,如果你的博客系统之前做过百度等搜索引擎的SEO,为了不影响百度蜘蛛等搜索引擎爬虫对网站的链接收录,可以在“百度搜索资源平台”进行【闭站】操作(搜索“百度搜索资源平台”,顶部菜单【搜索服务】下选择【闭站保护】,整个流程大约需要1-2小时),申请闭站成功之后,搜索爬虫将不会访问该站点,原来收录的网站链接不受影响。等搬家成功之后,即新网站恢复备份时,再恢复站点,搜索爬虫将继续光临您的网站。

七、域名解析

登录阿里云控制台,进入【云解析DNS】,点击【域名】,将列表中原指向云虚拟主机IP的记录改成指向云服务器ECS的公网IP,设置成功后不会立即生效,需要等待几分钟,可在终端输入如下命令检查指定域名(wy310.cn)指向的IP情况:

ping wy10.cn

确认域名已指向新服务器IP之后,可以尝试访问网站了。

但基本不会这么顺利,因为还有很多隐藏的坑在等待着我们。

由于一年前给网站添加过SSL证书,所以协议是https的,数据库里的wp_options表中的siteurlhome字段自然也是以https开头,而现在宝塔面板上新建的网站还没有添加SSL证书,为了能够顺利访问,暂时将这里的两个值手动改成https://blog.wy310.cn

现在访问网站链接,主页可以正常打开了,但似乎只有主页…,里面任意一篇文章都打不开,这是怎么回事?

经过反复研究,发现在WordPress后台【设置】>【固定链接】里如果选择自定义结构(我一直以来用的是“日期和名称型”),并且输入框中填入/index.php/%year%/%monthnum%/%day%/%postname%/(和下图的区别是前面加了一个“/index.php”)之后,网站中的各种文章链接、目录/分类链接就都能访问了!!!

然而,我不能使用这个规则啊,因为上线一年以来,百度等搜索引擎已经收录了大部分文章链接了,如果现在更改链接规则,之前所做的SEO优化全部付之东流,而且数据库里面的链接需要全部更改,稍有不慎或者漏掉某个就会造成文章打开失败…想到这,我不禁陷入了沉思。

八、配置Nginx代理规则

两天后,我才想到了Nginx,百度搜索了一下怎么配置一个规则当访问“https://blog.wy310.cn/2019/12/18/xxx/”这种链接时如何在域名后面添加一个“index.php”?最终找到了一篇博客(感谢博主),具体做法如下:

选择宝塔面板的【网站】目录,点击网站名,在弹框中选择【配置文件】,在下图红框处添加如下代码:

if (-f $request_filename/index.html){
  rewrite (.*) $1/index.html break;
}
  
if (-f $request_filename/index.php){
  rewrite (.*) $1/index.php;
}
  
if (!-f $request_filename){
  rewrite (.*) /index.php;
}

至此,网站搬家成功!

九、取消闭站保护

最后去百度搜索资源平台,取消闭站保护,又能愉快地迎接百度蜘蛛来网站爬取数据啦!

1+
分类: 未分类
浏览:1,161

0 条评论

发表评论

电子邮件地址不会被公开。

你必须允许浏览器启用JavaScript才能看到验证码

Scroll Up