项目的服务器迁移的问题的总结

一、一个具体项目的服务器迁移和升级的问题总结

注意以下关键点:

1、数据库备份,不能再使用Discuz自带的备份功能,会丢失数据(不足够安全)。可以使用mysqldump直接从数据库导出sql文件,然后再目标主机导入。

2、数据库备份导出时,注意对emoji表情的兼容性,需要增加–default-character-set=utf8mb4参数。

3、新安装的项目中的字符集需要设置为utf8mb4而不是utf8,否则某些字段表情不显示(或者显示问号)。

4、新安装的项目不能使用MySQL总管理员账号,需要每个项目新建一个数据库,并配置一个项目数据库专用管理员,只授权管理这一个数据库。

5、一定要保证UCenter的应用“通信成功”,且几个项目之间必须互相隔离开(尤其是整个项目复制的,注意配置文件里的设置区分)。

6、迁移之前,在源主机和目标主机上都做好备份和快照。

7、迁移之后,测试没问题之后,及时备份和快照。

8、整个过程中,注意关闭站点,方式中途的数据写入。

9、域名的解析,可以临时域名作为过渡,最好不要让线上正式环境的域名来回更换指向IP。

10、域名相关的,如果使用了临时域名,尤其涉及第三方的:要么先不改;要么及时改回来。

11、用户资源文件的迁移,可以稍微后置。注意UCenter的用户头像文件。

12、迁移之后,必须要首先测试的功能:用户注册、消息推送(IP白名单)、crontab自动执行、短信发送。

13、注意后来添加的目录或者第三方相关目录的读写权限的设置。

14、本次对PHP7.2环境的支持,稍微后置。注意观察不兼容性,尤其是不常用到的接口。

15、注意修改php.ini的配置,支持上传大文件(建议64M),需重启生效。

16、注意修改nginx.conf的配置,支持上传大文件(建议64M),需重启生效。

17、刚迁移完后的近一段时间,注意观察是否出现异常,保持高度警惕。

18、【注意】Nginx服务必须设置为开机自启动,否则从阿里云控制台重启之后,Nginx服务是未启动状态。

二、迁移服务器的通用操作流程

1、购买一套配置更高的阿里云ECS服务器(最好有热扩展性)。

2、配置相同的LNMP环境。

3、配置视频处理程序ffmpeg,并测试可用。

4、添加消息推送的白名单IP地址。(涉及多个App)

5、安装程序初步可用。

6、备份数据恢复数据。(数据库MySQL数据)

7、测试数据没有问题PC端(用户注册登录等)。

8、测试接口可用性(App和微信小程序)。

9、计划任务crontab的配置。(注意有脚本执行文件,可成功执行之后需删除掉原服务器的crontab的相关任务)

10、迁移其他非数据库MySQL数据的data资源文件(需分批处理,影响图片和视频等的显示,不影响数据处理)。

11、整体基本可用之后,再密切追踪至少一周,看是否有因为迁移造成的BUG或者需要修复的问题。

12、注意一些目录的可读权限,尤其是后来API中自定义或者第三方专用的目录。

13、注意服务器级别的安全组特定端口的设置。

14、注意SSL证书的迁移

三、几点要求

0、完美,服务器迁移几乎不影响前端访问,不需App停用。

1、最好,App可以平滑过渡,对服务器的迁移无感。除了迁移过程中无法使用,不影响用户的登录状态,账号和密码的可用性。

2、其次,让用户重新登录一次,但是账号和密码继续保持可用性。

3、再次,用户的账号不变,密码失效,需要重置密码才可以继续登录账号。

以上4种情况。至少做到1,争取做到0,绝不能出现2和3的情况。