博客搬家记录:把wordpress搬家到AWS全过程!
终于,成功地把网站给搬家了!
最早的时候,我的服务器都在国内,但是遇到了一些问题,所以搬到了香港!
当时也是匆匆忙忙找了一个不知名的小平台。
虽然能用,但是速度和稳定性都一般,配置过剩,价格偏高。
另外怕它突然就消失了…
所以,我准备把网站搬家到全球最大的云服务供应商亚马逊云(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!
这篇文章很干,无任何趣味性!
能看到这里的已经很厉害了,我给你点个赞,你也可以…
收工收工!