备份数据
首先,备份源网站数据。如果没有使用第三方备份工具,可以在网站根目录下执行以下命令进行备份:# 备份网站数据 php artisan backup:web # 备份数据库 php artisan backup:database # 或者一次性备份网站数据和数据库 php artisan bakcup:all
生成的数据在 /tmp 目录,下载并上传到新服务器上。
导入数据
接下来在新服务器上,安装好符合要求的 Nginx + PHP + MySQL + Redis 环境。创建跟源网站同名的数据库,一样账号密码的数据库账号,并导入数据。如果使用不同的账号密码,记得修改 .env 文件。# 创建数据库 demo.nexusphp.org create database `demo.nexusphp.org` default charset=utf8mb4 collate utf8mb4_general_ci; # 创建数据库账号 demo.nexusphp.org, 密码为 A3sra9kPxxBZ4BkreZLz create user ‘demo.nexusphp.org’@’127.0.0.1’ identified by ‘A3sra9kPxxBZ4BkreZLz’; grant all privileges on `demo.nexusphp.org`.* to ‘demo.nexusphp.org’@’127.0.0.1’; flush privileges; # 导入数据 source /tmp/demo.nexusphp.org.database.20220813.040712.sql
配置网站
如果需要源网站不受影响,可以先配置一个新的域名。如果源网站停机,则使用原域名。这里以使用新域名为例。记得将新域名解析到新服务器上。
将源网站的网站配置文件上传到新机器,修改其中 server_name 为新域名。如果有依赖主配置文件,记得将主配置文件一并上传并使用。相关路径如有不同,记得修改。
接下来,安装依赖,自带命令备份的数据不包含依赖,如果第三方备份已经包含则可以省略。安装完成后尝试访问,如果没有报 500 之类错误,那就是成功了。如有错误,检查网站目录权限以及日志目录 /tmp 的权限问题,以及查看日志进行排查。
这里由于使用了新域名(使用源域名不会有此问题),跳转登录页会跳转到源网站上去。修改 settings 表将域名相关项修改(这里姑且认为源为 demo,新的为 demo2 ):update `settings` set `value` = replace(`value`, ‘demo.nexusphp.org’, ‘demo2.nexusphp.org’) where `value` like ‘%demo.nexusphp.org%’;
修改后测试是否正常。
一切正常后,再将这个配置修改回去:update `settings` set `value` = replace(`value`, ‘demo2.nexusphp.org’, ‘demo.nexusphp.org’) where `value` like ‘%demo2.nexusphp.org%’;
最后修改域名解析,将源域名解析到新服务上即可。新域名的解析可以删除。这里,源网站产生了新数据,如果觉得必不可少,可以将源网站停服,重新走一遍上边的流程。
至此,NexusPHP 网站搬家全部完成。