博客搬家记录:把wordpress搬家到AWS全过程!

终于,成功地把网站给搬家了!

写个4600字的文章🎉庆祝下!

最早的时候,我的服务器都在国内,但是遇到了一些问题,所以搬到了香港!

当时也是匆匆忙忙找了一个不知名的小平台。

虽然能用,但是速度和稳定性都一般,配置过剩,价格偏高。

另外怕它突然就消失了…

所以,我准备把网站搬家到全球最大的云服务供应商亚马逊云(AWS)上面。

顺便熟悉一下EC2和lightsail的操作,考察一下不同配置下,不同地区的访问速度,以及安全性和稳定性。

网站挂在那里好多年了,很久没动,各种操作都有点手生了。

所以也遇到了不少问题,同时也学习和巩固了很多知识。

非常有必要整理一下,加深记忆。

 

搬家前我是先向chatgpt和gemini做了咨询,然后才动手。

但是他们的方案,只是针对通用情况,具体场景下,具体的操作肯定会不同。

下面就记录下完整的搬家过程和注意点。

这次搬家到涉及到的点大致如下:

1 搬出

1.1 导出网站

1.2 到处数据

2 搬入

2.1 服务器创建

2.2 安装宝塔

2.3 创建站点

2.4 导入网站

2.5 导入数据

2.6 修改数据库配置

2.7 可用性测试

2.9 绑定域名

3 问题和注意点

3.1 修改代码

3.2 静态IP设置

3.3 PING测试

3.4 HTTPS相关

——–

网站搬家和实际上的搬家都差不多。首先要把东西从老的地方搬出来,然后搬运到新家。新家可能需要做一些硬装或者软装。

1 搬出

搬出最大的问题是你得明白需要搬哪些东西。

就WordPress来说,它主要是有两部分构成,网站文件和数据库。

另外还有很多服务器配置,比如PHP,Mysql,FPT,Nginx,这部分基本上由宝塔BT完成。

1.1 导出网站

这里说的网站,本质上来说就是WP的代码文件。

只要在bt后台,通过网站,或者文件菜单,在www/wwwroot下面找到安装好的WP文件夹就可以了。

然后通过BT自带的功能,右键压缩文件夹,然后下载到本地电脑。

1.2 导出数据

数据指的是Mysql里面的表结构和表中的内容

BT提供管理数据库管理相关的功能。通过数据库菜单,可以找到数据库名,用户名,密码

点击phpMyAdmin这个在线管理工具,打开管理里面,找到数据库,输入用户名和密码登录数据库。

登陆之后选中我们要导出的数据库。

然后通过导出功能导出。由于数据库并不是很大,所以选择快速导出,点击执行。

最后会导出一个SQL文件,所有创建表结构插入数据的命令都在里面了。

2 搬入

搬出的动作已经完成了,接下来就是搬入了。首先我们肯定要选择一个地方,然后付钱,然后拿到钥匙。如果房子是个毛坯房的话还要做一些装修。

我找到的“房东”叫亚马逊(AWS),户型有EC2和lightsail,我选了lightsail。

这个是按月支付房租,房子不大,但是很适合普通打工人。

拿到房子后需要做一些“软装”。

2.1 AWS 服务器创建

注册AWS帐号,并创建一个lightsail 类型的服务器。

第一次使用这个平台的话,熟悉后台的操作也是要点时间。

考虑到篇幅,这里就不说每一个细节了,就讲一下关键点。

主要是选择好合适的区域套餐类型。

用过在亚洲的话,最好选JP区域(lightsail没有港区)

套餐的话,lightsail的最低配价格5$/月,和国内的应用服务器差不多价格。

我实际测试下来,最低配的内存小了点,容易成为瓶颈。

做博客,流量一般的情况下,找个7$/月,比较合适。

我在这一步遇到的最大问题是,我注册完太久没用,AWS直接给我🔒锁定了,为了这个事情折腾了好久。

外国人的效率大家都懂得,下班不搞,周末不搞,搞得时候慢悠悠。

周五下午提交的问题基本要到周二才能回复,继续问就继续这么循环。

另外,技术问题是要里另外收费滴。

实事求是讲,腾讯阿里,所有问题都可以免费高效回答,但是他们要做内容SC。。。

 

2.2 安装宝塔

宝塔(bt)是一个服务器运维软件。有了这东西,安装部署会方便很多。上面搬出的时候,就体现了它的诸多好处。所以新的服务器上,也得装一个。

安装命令如下:

wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec

通过SSH登录AWS的服务器,然后输入上面的命令,一个回车基本全自动搞定。

这里说一下,我选的系统是Ubuntu,不同的系统安装命令会有点不一样,可以到BT官网查看细节。

安装过程需要输入一个y确认。

剩余的全部自动搞定,很快就完成!

安装完成之后会显示一些信息。

 

http://xx.xx.xx.xx:23442/xxxxxxxx
username: xxxxxxxx
password: xxxxxxxx

 

主要信息包括外网访问地址用户名和密码

这些要记录一下,我习惯用macos的无边记。

安装完成之后,这里还有一个比较重要的步骤。

修改服务器的安全组,添加一条TCP数据,放行23442这个端口。

这个端口每个人都不一样,主要是从安装完之后的外网链接中获取。

然后根据上面的链接打开控制面板,输入用户名和密码登录。

登陆成功之后,会自动跳出推荐安装套餐。

我喜欢用Nginx,所以直接选推荐的LNMP。

点击一键安装,全自动完成,安装进度会实时显示。

由于安装的东西比较多,包含了WEB服务器,数据库,文件管理,PHP环境,数据库等。

总的时间在几分钟到几十分钟之间。

2.3 创建站点

BT装完之后就可以开始干活了。众所周知,一个服务器,可以有多个网站。所以后台有一个叫网站的菜单,一个网站就是一个站点

所以首先要干的是创建一个站点

点击站点-> 添加站点

这里只需要关注域名和根目录就好了。

域名这个东西,肯定就是我的老域名了。

但是为了不影响原来的网站运行,我这里先直接输入AWS的服务器外网IP。

根目录,他会根据域名自动给你填上,你也可以自己取一个好分辨的名字(比如:tony)

2.4 导入网站

站点建立完成之后,只是一个空壳。接下来就要上传我们自己的网站内容了。

通过BT的文件管理功能,定位到www/wwwwroot这个路径。

点击上传,然后把老站上备份出来的压缩包拖到这里上传。

上传成功之后,在压缩文件上右键解压。

解压得到一个文件夹,比如 tonyback。进入这个文件,复制里面的所有文件。

然后再进入我们新建站点的文件夹tony,粘贴所有的文件。

默认情况下tony里面大概有四个初始化文件,所以粘贴的时候,会提示你是否需要覆盖,选择覆盖就好了。

它的覆盖逻辑有点奇怪,打勾代表不覆盖,不打勾代表会覆盖。

到这网站文件就搬移成功了。接下来就是要搬数据库了。

2.5 导入数据

导入数据库,也分两个小步骤,一个是创建数据库,一个是导入数据。

BT后台找到数据库-> 添加数据库

这里的数据库名称,用户名,密码,最好和老的数据库信息一模一样。如果你忘记了,也可以重新写新的内容。

只要修改红色星标注的内容,一般数据库名和用户名可以一样,密码你记得住就行。

是什么不重要,重要的是能一一对应。

创建完成之后,在数据库界面上就会多一条记录。

这条记录上面有一个备份的列,这一列有一个“导入”的按钮。

点它点它!

然后点击从本地上传,选择我们导出的数据文件 xxx.sql,上传完成就会自动导入了。

2.6 修改数据库配置

如果上一步的数据库配置和老的服务器一模一样,这里就不用操作了。假如不一样,就需要用上一步设置的新信息修改wordpress的配置文件。

通过BT的文件管理功能,找到网站目录tony下面的wp-config.php文件,双击打开。

修改

DB_NAME 数据库名

DB_USER 用户名

DB_PASSWORD 密码

修改的时候格式不要搞错,每个内容前后都得加上英文的单引号 ‘  ’ 。

2.7 可用性测试

网站文件和数据库全部搬完之后,就可以用测试一下网站能否正常浏览了。

最简单的测试方法,就是在浏览器中直接输入这台服务器的IP地址。输入之后能成功打开网站,那么我们基本算是成功了。

能打开,之后最好测试一下,速度和负载能力。

这个可以用专业的测试工具测一下。

https://tool.chinaz.com/speedtest/

先做个基本的Ping测试,Ping的时间越短越好。

另外做一下国内国外的测速。测速的时间肯定会比ping长,因为它考察的是,连接到网站并加载整个网页消耗的时间。

WordPress整体加载速度不是很快,所以只要不是标红,大部分区域是橙色或者浅绿色,那就基本可以接受。

2.8 绑定域名

IP测试成功之后,就可以进行最后一步,域名配置。我的域名在godaddy上。打开网站,找到域名,点击DNS配置,就可以进入配置页面了。

域名配置,只要修改A记录,把@和www指向我们的服务器IP就可以了。

因为网站是在线的,出于谨慎考虑,我是先配置了一个test.xxx.com这个三级域名指向IP地址。

一旦测试成功之后,把test改成www就可以了。

DNS修改之后,需要一定的时间才能生效。

生效之后,能通过域名正常打开网站,整个网站搬家就完成了。

然后老的服务器,已经被架空,观察几天没问题,就可以关了。

到这里,按正常流程来说网站搬家就完成了。

当然,做什么事情,都会遇到点异常情况,这基本是惯例了。

3. 问题和注意点

所有的问题都源于对事物的不了解,或者了解🉐不够全面。老司机可能所有的坑已经一清二楚,所以不会掉坑里,对很多问题都不屑一提。

但对于新手而言,所有坑都得踩一遍。

能遇到问题是好事情,证明自己又涨知识了。

下面就说一下我遇到的问题。

3.1 修改代码

正常来说,代码文件直接拷贝过去就OK了,但是实际情况是遇到了两个问题。

当我配置好一切后,打开网页,就遇到问题了。

第一个问题:

Fatal error: Unparenthesized `a ? b : c ? d : e` is not supported. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)`

出现了一个致命错误,从提示来看和三元运算的括号有关。大概意思是,现在的运行环境下PHP不支持无括号的嵌套式三元运算。

之所以会出现这个问题,是因为两个服务器的PHP版本不一样了。

可以有三种解决方式:

a.找到错误提示中的代码文件,添加括号。

b.保持两个服务器的PHP版本一致。

c.直接删除这部分代码。

正常情况下代码肯定不能乱删,但是经过分析这个代码来自于一个已经废弃的插件,所以我就直接把这个插件删了。

删除插件也很简单,在网站文件下面找到插件的文件夹,直接把文件夹删除。

插件文件夹一般位于wp-content/plugins下面。

第二个问题:

Warning: Trying to access array offset on value of type bool in

这个错误大概是类型不匹配的问题。在我遥远的记忆里,好像PHP代码对类型不是很敏感,可能这也是因为PHP版本升级导致的问题。

比较奇怪的是,我定位这段代码后,错误在于我使用的主题(theme)文件里。这个主题文件在调用wp_options读取对应数据表里的变量的时候,给了一个无效的key。

wordpress配合上第三方插件和主题,真的像极了一个“草台班子”。不升级还好,一升级一堆问题。

这个问题的解决方案是,通过错误提示定位到具体的变量,直接删除相关代码。

这两个问题,肯定是得懂点代码的才能解决了,好在并不是所有的网站搬家都会遇到。我之所以遇到,是因为老的服务器PHP版本和WP都比较老的缘故。

3.2 静态IP设置

这个问题本来不应该是一个问题,因为在用阿里腾讯这些服务器的时候,默认会有一个外网IP,直接就可以用。

所以,我的大脑理所当然的认为IP问题不是问题。

但是在AWS上面默认分配给你的是一个动态的IP地址,意思就是会不停的变化。

所以出现了,明明一切正常了,重启一下过段时间,网站就打不开的问题。

为了把IP固定下来,需要在联网功能里面,启用静态IP。

3.3 PING测试

网站能不能用,或者稳不稳定,往往需要测试一下。ping是一个非常常用的命令。

但是我遇到了一直ping不通的问题,以往遇到问题都是关闭本地代理就正常了,这次怎么ping都不通。

查了半天,还是因为我对AWS不够了解。

默认情况下它没有启用ICMP协议,所以用不了这个命令。

通过联网->IPv4防火墙->添加规则->Ping(ICMP)  来添加对Ping命令的支持。

3.4 HTTPS相关

上古时代,我们都用http协议,但是现在不用HTTPS的话,浏览器都会提示安全问题。

所以必须启用,但是启用过程中需要注意几个点。

一个是必须配置SSL证书,一个是服务器上必须开放443端口,还有一个是网址开头需要用HTTPS

我是手忙脚乱,配置好http之后,直接加个S就开干了。

然后一直打不开网站,还把怀疑重点放在了,是不是IP被ban了?还是AWS的服务器不稳定?

最后,绕半天才发现漏掉了上面两个步骤。

所有问题解决之后,就可以宣布网站搬运成功了。

目前运转良好,速度也还可以,成本降低到了1/3。

终于写完了,操作和踩坑几个小时,写文章做总结花了两天。

但是一切都值得,不做总结,很快就会忘记。

写完了,就踏实了。

有人能用到这个,那就更好了。

搬家完成之后,域名和服务器,全部FREE了,远离各种BEIAN!

这篇文章很干,无任何趣味性!

能看到这里的已经很厉害了,我给你点个赞,你也可以…

收工收工!

 

小尾巴==========================
公众号:托尼不是塔克
交流群
知识星球
==============================