本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
由于业务的需要,您可以将ECS实例中部署的网站程序迁移至轻量应用服务器。本文介绍如何迁移ECS实例至轻量应用服务器。
前提条件
已创建与ECS实例操作系统版本相同的轻量应用服务器。具体操作,请参见创建轻量应用服务器。
说明如果您已创建轻量应用服务器,但操作系统与ECS实例不同,您可以重置系统。具体操作,请参见重置系统。
轻量应用服务器的系统镜像版本不如ECS实例公共镜像版本全面,在实际的迁移过程中,您可以选择接近的操作系统版本。例如,ECS实例使用的是CentOS 7.X版本的公共镜像,您可以将轻量应用服务器的镜像更换为CentOS 7.3或CentOS 7.6的系统镜像。
轻量应用服务器已设置密码。具体操作,请参见设置或重置服务器密码。
已放行所需的端口。具体操作,请参见防火墙设置。
本示例中需放行MySQL的默认端口3306、宝塔面板的默认端口8888以及数据库管理工具phpmyadmin默认端口888。
警告默认端口可能会导致服务器被入侵,建议您使用后及时禁用对应的端口或者将默认端口改为其他端口。
背景信息
本文的示例场景中,将已部署LNMP环境的ECS实例中WordPress网站迁移至轻量应用服务器,并保证网站可运行、数据完整。服务器和迁移涉及的工具说明如下:
服务器说明
ECS实例
轻量应用服务器
镜像:CentOS 7.8公共镜像。
运行环境及应用程序:在LNMP环境中部署了WordPress网站。
其中,应用的版本信息如下:
Nginx版本:1.16.1
MySQL版本:5.7.28
PHP版本:7.0.33
WordPress版本:5.1.10
说明本文不介绍如何在ECS实例中搭建LNMP环境以及部署WordPress网站。如果您需要了解具体操作,请参见手动搭建WordPress(CentOS 7)。
镜像:CentOS 7.6。
迁移涉及的工具
工具
说明
宝塔面板免费版
一款服务器运维面板。本文将借助宝塔面板,在轻量应用服务器中重新部署与ECS实例内一致的LNMP环境。
scp命令
该命令是基于SSH协议的远程拷贝文件的命令。ECS实例中的网站程序(不包含数据库数据)将通过scp命令拷贝至轻量应用服务器中。
阿里云数据传输DTS
ECS实例中网站程序的数据库数据,将通过阿里云数据传输DTS迁移至轻量应用服务器的数据库中。关于DTS的更多信息,请参见什么是数据传输服务DTS。
注意事项
创建快照以备份数据。
确保迁移前后两台服务器内的运行环境版本信息一致。
部分网站对服务器的运行环境的版本有较高的要求,如果迁移前后的运行环境版本不一致,可能导致网站无法正常运行,因此您需要完全了解您的ECS实例中运行环境的版本信息。例如,您的运行环境为LNMP环境,则您需要了解Nginx、MySQL以及PHP应用的版本信息,并保证在轻量应用服务器上重新部署相同应用版本的运行环境。
检查网络。
您需要确保ECS实例与轻量应用服务器具备公网访问能力。如果是跨国际地域迁移,请注意由网络环境不稳定造成的迁移速率过慢等问题。
迁移后影响
注意事项 | 说明 |
服务器内的授权应用 | ECS实例与轻量应用服务器处于不同的专有网络VPC中,因此在迁移数据后,系统底层硬件设备会发生变化,可能会导致某些与硬件绑定的应用许可证(License)失效,您需要自行做好检查。 |
公网IP地址 | ECS实例的公网IP地址与轻量应用服务器的公网IP地址不相同,如果您的ECS实例绑定了域名,在迁移完成后,您需要重新将该域名解析至轻量应用服务器的公网IP。 |
步骤一:在轻量应用服务器中安装并配置宝塔面板
本示例建议您在轻量应用服务器中,使用宝塔面板高效地配置服务器运行环境,并保证运行环境的版本信息与ECS实例中的一致。
在实际的迁移过程中,您需要根据业务的真实情况,手动配置轻量应用服务器中的网站运行环境,以保证与ECS实例中的配置一致。
通过管理控制台远程连接轻量应用服务器。
具体操作,请参见远程连接Linux服务器。
- 运行以下命令,切换至
root
用户。sudo su root
安装宝塔面板。
您可以访问宝塔面板获取适用于不同操作系统的安装包。本文示例中轻量应用服务器的操作系统为CentOS 7.6,因此,需要运行以下命令,安装宝塔面板免费版。
说明如果您的轻量应用服务器所用的镜像为BT-Panel应用镜像,请跳过安装宝塔面板的步骤,直接配置宝塔面板。
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
如下图所示,表示成功安装宝塔面板。您需要保存外网面板地址、内网面板地址、username以及password信息。如需了解安装宝塔面板的更多信息,请参见宝塔Linux面板安装教程。
在本地主机,通过浏览器访问外网面板地址,然后使用username以及password信息登录宝塔面板。
登录宝塔面板后,您还需要登录宝塔账号。如果没有宝塔账号则需要先注册账号,您根据实际的页面提示即可完成操作。
成功登录面板后,界面如下图所示。
在宝塔面板中,搭建与ECS实例一致的运行环境。
在左侧导航栏,单击软件商店。
在应用分类区域,单击运行环境。
在软件列表中分别找到以下应用,并单击操作列的安装。
Nginx
单击安装后,选择
nginx 1.16
版本,然后单击提交。MySQL
单击安装后,选择
mysql 5.7
版本,然后单击提交。PHP-7.0
单击安装后,保持默认配置,然后单击提交。
phpMyAdmin
单击安装后,选择
phpmyadmin 4.9
版本,然后单击提交。
安装软件需要一定的时间,请您耐心等待安装完成。
在宝塔面板中,添加站点信息。
在左侧导航栏,单击网站。
在网站管理页面,单击添加站点。
在添加站点-支持批量建站对话框的创建站点页签,完成配置,然后单击提交。
主要配置说明如下表所示,没有提及的配置项保持默认配置。
配置项
说明
示例
域名
如果您已将域名绑定并解析至轻量应用服务器,您可以直接设置域名信息。
如果您还没有将域名绑定并解析至轻量应用服务器,您可以先设置为轻量应用服务器的公网IP地址,用于后续的测试操作。待迁移完成后,再为轻量应用服务器绑定并解析域名,同时修改此处的配置。
本示例中,仅设置了轻量应用服务器的公网IP地址,用于后续对网站进行测试访问。
备注
该站点的备注信息,可为空。
本示例中,设置为
server-B
。根目录
网站所在的根目录信息。宝塔面板默认的根目录均在/www/wwwroot路径下。
本示例中,设置为/www/wwwroot/wordpress。
成功添加站点后,如下图所示。
在宝塔面板面板中,完成MySQL数据库的配置。
在左侧导航栏,单击数据库。
在数据库管理页面,修改root密码。
单击root密码。
在root密码后的文本框中输入自定义密码,然后单击提交。
本示例中,密码设置为
Test@123
。重要您在实际设置密码时,请妥善保存密码信息,避免因密码泄露造成的服务器异常风险。
在数据库管理页面,单击phpMyAdmin。
在phpMyAdmin页面,输入MySQL的
root
用户以及密码,然后单击执行。在顶部菜单栏,单击SQL。输入以下命令,然后单击执行。
迁移数据库数据时,需要MySQL数据库中的用户具有远程连接权限,因此,您需要在轻量应用服务器的MySQL数据库中,设置一个用于远程连接的MySQL用户。
-- 切换数据库至mysql。 use mysql; -- 本示例中,用于远程连接的MySQL用户名为testUser,密码为Test@123。 create user 'testUser'@'%' IDENTIFIED BY 'Test@123'; -- 为testUser授予远程连接权限。 grant all privileges on *.* to 'testUser'@'%' with grant option; -- 使配置立即生效。 flush privileges;
在顶部菜单栏,单击SQL。输入以下命令,然后单击执行。
为了方便后续WordPress网站迁移后可以直接连接MySQL数据库,您需要参考ECS实例中WordPress网站对应的MySQL信息,在轻量应用服务器创建完全一致的数据库以及数据库用户。
本示例中,ECS实例中的WordPress网站对应的MySQL数据库名为
wordpress
,数据库用户名为user
,密码为PASSword123.
。-- 创建数据库wordpress。 create database wordpress; -- 创建新用户user,新用户密码为PASSword123.。 create user 'user'@'localhost' identified by 'PASSword123.'; -- 赋予用户对数据库wordpress的全部权限。 grant all privileges on wordpress.* to 'user'@'localhost' identified by 'PASSword123.'; -- 使配置立即生效。 flush privileges;
在宝塔面板中,完成防火墙配置。
在左侧导航栏,单击安全。
在防火墙区域,放行MySQL默认端口3306。
具体的配置信息如下图所示。
单击放行。
步骤二:配置ECS实例
使用阿里云数据传输DTS迁移数据库数据前,您需要在ECS实例中完成以下配置。
配置安全组。
迁移数据库数据时,需要开放ECS实例安全组的指定端口。本示例中ECS实例和轻量应用服务器内安装的数据库均为MySQL数据库,因此,您需要在ECS实例的安全组中开放MySQL默认占用的3306端口。具体操作,请参见添加安全组规则。
配置MySQL。
迁移数据库数据时,需要MySQL数据库中的用户具有远程连接权限,因此,您需要在ECS实例中,设置一个用于远程连接的MySQL用户。
远程连接ECS实例。
具体操作,请参见连接方式概述。
运行以下命令,登录MySQL数据库。
mysql -uroot -p
在Enter password:后输入MySQL的
root
用户对应的密码。您需要输入您自行部署的MySQL数据库的登录密码。
说明在输入密码时,系统为了最大限度地保证数据安全,命令行将不做任何回显。您只需要输入正确的密码信息,然后按Enter键即可。
运行以下命令,使用
wordpress
数据库。wordpress
数据库为WordPress网站的数据库。use wordpress;
运行以下命令,创建用于远程连接的数据库用户。
本示例中,用户名为
testUser
,密码为Test@123
。重要该密码仅为示例值。您需要自行设置密码,并妥善保管,避免因密码泄露造成的数据异常风险。
create user 'testUser'@'%' IDENTIFIED BY 'Test@123';
- 依次运行以下命令,为
testUser
授予远程连接权限。- 授予远程连接权限。
grant all privileges on *.* to 'testUser'@'%' with grant option;
- 使配置立即生效。
flush privileges;
- 授予远程连接权限。
- 运行以下命令,退出MySQL。
\q;
步骤三:使用scp命令拷贝网站程序
确认轻量应用服务器的信息。
使用scp命令远程拷贝网站程序时,需要设置目标服务器的公网IP地址以及文件存储路径,因此,您需要确认轻量应用服务器的以下信息:
公网IP。
查看公网IP的具体操作,请参见查看服务器卡片信息。
网站根目录。
本示例中,轻量应用服务器的网站根目录为/www/wwwroot/wordpress。
远程连接ECS实例。
具体操作,请参见连接方式概述。
运行以下命令,使用scp命令将ECS实例的网站程序迁移至轻量应用服务器。
scp -r /usr/share/nginx/html/wordpress/* root@<轻量应用服务器的公网IP>:/www/wwwroot/wordpress
scp命令解析:
-r
:表示递归拷贝整个目录。如果您需要拷贝的是单个文件,请去掉-r
。/usr/share/nginx/html/wordpress/*
:表示ECS实例中网站程序所在的文件夹内的所有文件(/*
)。root@<轻量应用服务器的公网IP>
:通过SSH协议远程连接轻量应用服务器。/www/wwwroot/wordpress
:表示轻量应用服务器中的网站根目录。
在root@<轻量应用服务器的公网IP>'s password:后,输入轻量应用服务器的登录密码。
说明在输入密码时,系统为了最大限度地保证数据安全,命令行将不做任何回显。您只需要输入正确的密码信息,然后按Enter键即可。
scp远程拷贝文件的数据传输方式为加密传输,因此传输速率受限,您需要等待文件拷贝完成。
步骤四:使用DTS迁移数据库数据
- 登录数据传输控制台。
在左侧导航栏,单击数据迁移,然后在页面左上角,单击创建任务。
完成迁移任务的配置。
主要配置说明如下,未提及的配置项保持默认配置。
任务名称:自定义名称。例如
test-swas-01
。源库信息(即ECS实例信息):
配置项
配置示例
数据库类型
选择MySQL。
接入方式
选择ECS自建数据库。
实例地区
ECS实例所在的地域。例如:华东1(杭州)
是否跨阿里云账号
本示例选择不跨账号。
ECS实例ID
选择ECS实例ID。
端口
默认为
3306
。数据库账号
输入具有远程连接权限的数据库账号。例如:
testUser
。数据库密码
Test@123
重要该密码仅为示例值,您需要自行设置密码,并妥善保管,避免因密码泄露造成的数据异常风险。
目标库信息(即轻量应用服务器信息):
配置项
配置示例
数据库类型
选择MySQL。
接入方式
选择公网IP。
实例地区
轻量应用服务器所在的地域。例如:华东1(杭州)
主机名或IP地址
轻量应用服务器的公网IP地址。
端口
默认为
3306
。数据库账号
输入具有远程连接权限的数据库账号。例如:
testUser
。数据库密码
Test@123
重要该密码仅为示例值,您需要自行设置密码,并妥善保管,避免因密码泄露造成的数据异常风险。
配置完成后,单击测试连接以进行下一步,测试各个服务器的MySQL是否可以正常连接。
在弹出的DTS服务器访问授权对话框中,单击测试连接以进行下一步。
在配置任务对象及高级配置向导中,配置相关参数后,单击下一步高级配置。
主要参数说明如下表所示。更多信息,请参见数据迁移操作指导。
任务步骤:根据业务需求,选中库表结构迁移、全量迁移或者增量迁移。
源库对象:在源库对象区域,选中全选,并单击图标。
操作完成后,正确的界面信息如下图所示。
在高级配置向导中,保持默认配置,单击下一步保存任务并预检查。
您需要等待预检查完毕,如果预检查失败,请单击失败后的查看详情,根据失败原因,解决后重新进行预检查。
单击下一步购买。
在购买向导页面,选中《数据传输(按量付费)服务条款》,然后单击购买并启动。
本示例中通过DTS迁移数据的操作不计费,您在操作中需要以DTS控制台页面的实际信息为准。关于DTS计费的相关信息,请参见计费概述。
启动迁移任务后,您需要等待迁移任务完成。
步骤五:验证数据迁移结果
在本地主机中,通过浏览器登录轻量应用服务器的宝塔面板。
查看WordPress网站程序文件。
在宝塔面板的左侧导航栏,单击网站。
在网站管理页面的列表中,单击根目录列下的网站根目录。
如下图所示,您可以查看到迁移后,轻量应用服务器中存放的网站程序。
检查网站程序是否存在问题。
您需要根据实际业务场景,自行检查并判断轻量应用服务器中的网站程序是否与ECS实例中的一致。例如,在本示例中,ECS实例中的wp-config.php文件设置了软链接。在迁移后,文件的软链接失效,因此文件权限发生了改变,需要修改轻量应用服务器中的wp-config.php文件权限。
管理文件的操作可以在宝塔面板中完成。具体操作如下所示:
鼠标悬浮至对应的文件上,然后单击权限。
在设置权限对话框,设置文件的权限,完成后单击确定。
您需要根据实际的业务需求进行修改。本示例中,为wp-config.php文件授予了所有权限。
在本地主机中,使用浏览器访问
http://轻量应用服务器的公网IP地址
,测试访问WordPress网站。如果WordPress网站访问正常,且网站展示的数据与迁移前一致,表示迁移成功。
如果WordPress网站无法访问,且提示“Warning: require_once(/www/wwwroot/wordpress/wp-config.php): failed to open stream: Permission denied in /www/wwwroot/wordpress/wp-load.php on line 37”,您需要根据报错信息,在对应文件中设置相应的权限。具体操作,请参见检查网站程序是否存在问题。
后续步骤
由于更换了服务器,因此服务器的公网IP发生了变化。如果您之前的服务器中绑定并解析了域名,则您在完成数据迁移后,需要在新的服务器中重新绑定并解析域名。具体操作,请参见绑定并解析域名。