一般产品研发过程所使用的环境可分为:
- 研发环境-dev
- 测试环境-test
- 生产环境-prod
软件开发中,完整测试环境包括:UT、IT、ST、UAT
UT = Unit Test 单元测试
IT = System Integration Test 集成测试
ST = System Test 系统测试
UAT = User Acceptance Test 用户接受测试(俗称:验收测试)
具体还要看公司业务情况,业务体态大的公司还会有新增的环境env。在研发环境-dev中,也就是在程序员自己电脑上coding一下,用到的环境也就是我们说的本地环境,比如localhost。测试环境-dev的话通常在测试线展开,公司会单独起一个干净的服务器环境,用于程序员在本地打包jar后发到测试环境测试使用,前后端联调的时候也会用这个环境。生产环境-prod也就是最接近真实的环境,通常就会面向用户或者客户的系统环境,在调试项目的时候,通常会在这个环境不断发版调试,让系统更完善,让系统朝着更能让用户、客户满意的方向进行修改。
端口占用
- 一个jar包启动很容易失败,端口被占用是很常见的情况,有可能是当前这个启动的jar包直接占用了端口,有可能是这个服务内部服务占用了端口,这个时候就涉及到需要去查询端口占用情况,以最常见的80端口为例:
netstat -tunlp | grep 8080
- 我们在查询以后可以得到一个结果:
表明有一个java程序,进程号为15749,我们可以通过这个进程号杀掉当前java服务,方便我们启动当前的jar程序。
杀掉它可以通过:
kill -9 15749
- 这里的9参数表示:强制杀掉一些杀不死的进程。
我们也可以查看所有端口的开放情况,看端口被你那些服务占用运行:
netstat -ntlp
-
这两种方案都比较方便,看你适合哪种排查就用那种吧。
脚本失灵
- 我们将项目放到服务器维护的时候通常会写很多脚本,比如sh,bat文件,这个看操作系统。例如服务器linux环境下,我们会写诸如start.sh、stop.sh等脚本文件,方便我们快速启动某个服务,当我们启动脚本发生一些错误的时候,我们可以手动执行脚本内部的命令看看能不能启动,如果能启动就可以判断脚本出了问题,如果不能启动,那就是命令的问题。
线上部署项目结构模版
- 线上部署一个项目也是有一个规范的,大致可以这样去分:
当然了可以随机加减一些东西,至少基础文件还是要有这些。
配置文件生效
在启动一个jar包的时候最好指定一下配置文件,让他们一起启动,检查一下配置文件在线上是否能正常生效:
注意:
在这里极容易犯得一个错误就是jar包没有放在config文件外面,这样进行编译的话就会报错,配置文件就不会生效!
其实写到这里还没写完。。。比如要学会保存项目启动日志,通过日志排查问题等等,我打算把这些放到下期文章来说。