语言:php。目前不打算用框架,可能会用 Composer。能接受停机维护。主要就是网站修了漏洞或者添加功能后的升级。
网上搜不到,不知道是不是我用的关键词不对。我用“网站升级 流程”和“update website”在谷歌搜的。我还找了一本运维的书,结果扫了一眼目录和可能贴边的地方也没有。
目前我能想到的容易踩坑的地方有不关闭服务直接换网站代码可能会出导致数据不一致。不知道没有什么使用中的文件无法删除的防呆机制。我目前计划用 PHP 。但是我只能想到这一个坑,总感觉可能会有其他的坑。
语言:php。目前不打算用框架,可能会用 Composer。能接受停机维护。主要就是网站修了漏洞或者添加功能后的升级。
网上搜不到,不知道是不是我用的关键词不对。我用“网站升级 流程”和“update website”在谷歌搜的。我还找了一本运维的书,结果扫了一眼目录和可能贴边的地方也没有。
目前我能想到的容易踩坑的地方有不关闭服务直接换网站代码可能会出导致数据不一致。不知道没有什么使用中的文件无法删除的防呆机制。我目前计划用 PHP 。但是我只能想到这一个坑,总感觉可能会有其他的坑。
常说的 CI/CD 嘛,持续集成与持续部署。
简单的办法就是升级时把代码放到一个新目录下,释放完成后,健康检查通过后,再修改 web 服务器的配置文件,把 web 服务器中的网站目录改为新的目录,然后重新加载。
(如果是以补丁的方式,可以copy 当前的目录到新目录,然后覆盖补丁)
或者启动新服务在 A 端口,启动完成健康检查通过后,切换配置文件把 web 服务引导的新的端口上,都是办法,跟前面的思路是一样的,只是使用的场景不同。
相关的关键字:热部署、滚动更新(发布)
当然,或许我说复杂了,你也可能只是想要 网站后台有个在线升级按钮,点了以后就从远端下载新的代码回来并更新。
这种其实也比较常见,比如 wordpress 的主题/插件更新,因为 php 的特性而言,这些设计的就比较简单了,直接校验后解压覆盖就实现了。
不过在 windows 下,确实可能会存在被占用的情况,可以使用 shell_exec 等方法,调用一个外部脚本,用脚本控制,先停机,然后执行前面覆盖文件的步骤, 执行完成后再开机。
当然,这里的停开机不一定是指物理机器,而是程序内。比如在入口的 index.php 判断某个文件存在,就阻止请求,待解压处理完成后再删除这个文件,就能达到自动开机了。
备份数据:在升级前,务必备份网站的所有文件、数据库和配置信息。这可以通过手动备份或使用版本控制系统(如Git)来完成
环境准备:确保开发环境和生产环境隔离,避免在生产环境中直接进行代码更改。可以在开发环境中先进行测试,确认无误后再进行生产环境的升级
下载升级包:从官方网站或其他可靠来源下载最新的升级包。
解压覆盖:将下载的升级包解压,并将新文件覆盖到现有网站目录中。如果是使用版本控制系统,可以在新分支上进行操作,确保不会影响主分支
配置检查:检查所有配置文件,确保新版本中的配置与现有设置一致。这包括数据库连接、服务器设置等
功能测试:在升级前进行全面的功能测试,确保所有功能正常运行。可以手动测试每个页面和功能,或者使用自动化测试工具进行
部署新版本:在确认所有测试通过后,可以在生产环境中部署新版本。可以通过修改服务器配置文件,将请求重定向到新的代码版本