最近接手了两个独立站点的开发,开发完成交付的时候,中间遇到了很多问题,也让我有了很多思考:
1. 由于是利用wordpress建站,所以是先把站点程序部署在了服务器上,那么我的当前环境既是开发环境,又是生产环境,风险很大;
2. 公司开发,基本都会有 开发->测试->上线 :
开发环境(development):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告。(程序员接到需求后,开始写代码,开发,运行程序,看看程序有没有达到预期的功能;)
测试环境(testing):一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。(程序员开发完成后,交给测试部门全面的测试,看看所实现的功能有没有bug,测试人员会模拟各种操作情况;)
生产环境(production):是指正式提供对外服务的,一般会关掉错误报告,打开错误日志。(就是线上环境,发布到对外环境上,正式提供给客户使用的环境。)
如果说再完善些那么就是以下:
a. DEVdevelopment开发
b. SITSystem Integrate Test系统整合测试(内测)
c. UATUser Acceptance Test用户验收测试
d. PETPerformance Evaluation Test性能评估测试(压测)
e. SIMsimulation仿真
f. PRD/PRODproduction产品/正式/生产
具体可以看这篇文章《DEV SIT UAT PET SIM PRD PROD常见环境》
当然针对很多的个人或者小微公司来说,没有那么多的精力和人力,搭建这么完全的开发、测试、生产环境,但是直接在“生产环境”开发、修改、部署,还是很不安全,比如我在部署wordpress时,在修改部署的模板文件时,如果有文件修改错误,就可能造成站点程序的挂机;还有由于用户需求的变化,直接在生产环境上修改,还是有很多的不稳定。
那么这里我模拟的是需要长期维护的场景,暂且先不考虑自动化测试,当然如果只是一锤子买卖,个人认为还是简单直接来的更加高效,那么我的思路就来了,能不能利用git工具,本地调试好后,上传同步到远程的仓库,接着由仓库上传到服务器更新。
这里,我计划模拟两个环境,一个开发兼顾测试的环境,还有一个生产环境,也就是我们实际的部署环境。我初期的设想如下:
(1)这种方案,相对实现会容易些,但是在做更新的时候,有些时候也会对数据库进行改动,那么本机开发环境的改动,必然会影响生产环境,进而影响当前的正常业务;
(2)接着就有了以上的构想,这样就有两个独立的环境
这里我觉得会遇到的难点,应该就是MySQL数据库的同步。
我将在下一篇内容中继续讲解我的实现过程