一、一个具体项目的服务器迁移和升级的问题总结
注意以下关键点:
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的情况。