🍃前言
本篇博文主要内容为如何将本机的Web项目部署到Linux服务器上
🍀什么是部署
我们在⼯作中会涉及到几个"环境"
- 开发环境: 开发⼈员写代码用的机器.
- 测试环境: 测试⼈员测试程序使用的机器.
- ⽣产环境(线上环境): 最终项⽬发布时所使⽤的机器.对稳定性要求很⾼.
把程序安装到⽣产环境上,这个过程称为"部署".也叫"上线"
⼀旦程序部署成功,那么这个程序就能被外网中千千万万的普通用户访问到.
换句话说,如果程序有BUG,这个BUG也就被千千万万的⽤⼾看到了.
部署过程⾄关重要,属于程序开发中最重要的⼀环.⼀旦部署出现问题,极有可能导致严重的事故(服务器不可⽤之类的).
为了防⽌部署出错,⼀般公司内部都有⼀些⾃动化部署工具(如Jenkins等).
这里博主使⽤⼿⼯部署的⽅式来完成部署
🌲环境配置
要使程序正常运行,需要保证环境和程序都要正确,我们需要先设置环境
🚩数据准备
准备需要部署到服务器上的web项目所需要的数据库
首先建立我们所需要的数据库
接下这里我们有两种方法来填充里面的数据
- 建⽴相同的表结构,导入相同的数据
- 对原来数据库的数据进行打包,放入Linux某一个目录下面,然后打开相应的数据库,实用如下命令进行导入
source 打包的数据库在Linux里的文件路径
🚩程序配置⽂件修改
实际⼯作中,开发环境,测试环境以及⽣产环境的配置都是不⼀样的
⽐如mysql的⽤⼾名和密码
我们可以针对不同的环境,设置不同的配置
🎄构建项目并打包
在本地使用maven进行打包
- 如果Test代码中有与环境配置相关的操作(⽐如数据库相关的操作),打包会失败,点击下图①处的图标,可以跳过测试
- 点击clean->package
🎋上传Jar包到服务器,并运行
🚩上传Jar包
直接拖动打好的jar包到xshell窗⼝即可完成⽂件的上传
Xshell可以直接拖动⽂件到窗⼝,达到上传⽂件的⽬的,如果使⽤其他客⼾端,不⽀持⽂件的上传,需要借助lrzsz命令
- 上传⽂件
sz filename
- 下载⽂件
rz
执行该命令后,在弹出框中选择要上传的文件即可,上传的速度取决于网络.
如果执⾏上述命令之后,提⽰ Command ‘XX’ not found ,表⽰当前云服务器未安装lrzsz命令,需要先进⾏安装
安装lrzsz命令如下:
apt-get install lrzsz
🚩运行程序
运行程序分为两种,一种使永久的,一种是短暂的
我们现在来看一下短暂的语法如下
java -jar 所导入jar包名字
这个命令的运行方式会在你退出终端时就停止
接下来我们看一个永久的运行方式
nohup java -jar 所导入jar包名字 &
我们还可以通过该命令搭配 >
把需要输出的内容写到指定⽂件中.这样的操作称为"重定向".
举例如下:
nohup java -jar blog-0.0.1-SNAPSHOT.jar >/logs &
成功启动后与你在本机启动web项目的场景是一样的
🚩开放端口号
如果外网需要访问该服务,需要先服务器防火墙开放对应的端⼝号
本着服务器安全的原则,云服务器上的端口非必要不开启.
⽐如常见端⼝号:数据库3306,Redis6379,尽可能避免开放,而是采⽤其他⽅式来连接,⽐如配置隧道的⽅式
接下来博主以腾讯云服务器举例:
- 进⼊防火墙管理页面
- 添加规则
端⼝号写需要开放的端⼝号,多个端⼝号以逗号分割.
🌳常见问题
⼀个程序的正常运行,需要程序的正确和环境的正确.同样的代码在Windows上可以运行成功,不⼀定在Linux上运⾏成功.
不同的系统对代码的理解和止持是不同的.⽐如Windows系统对MySQL不区分大小写,Linux区分大小写
服务不能正常访问的原因有很多,主要分以下⼏⽅⾯
服务未启动
- 使⽤ ps -ef|grep java 查看程序是否在运⾏
- 使⽤ 相应的访问界面 看下是否有返回html⻚⾯,
如果有返回,说明程序启动成功了,考虑端⼝未开放
如果未启动成功,需要查看对应的⽇志,根据原因来分析.
- 数据库不存在
- 表不存在(区分大小写)
- 数据库密码不正确
- Jdk安装版本不对,或者未安装
- mysql未设置密码
…
🌴杀掉进程
如果我们需要重启服务,或者重新部署等,都需要先停⽌之前的服务.
- 查看当前服务的进程
ps -ef|grep java
上图35443就是该服务的进程
- 杀掉进程
kill -9 PID
⭕总结
关于《【JavaEE进阶】部署Web项目到Linux服务器》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下