在linux服务中部署jar包(自动化脚本部署)

文章介绍了如何使用Shell脚本来简化Javajar程序的部署和管理,包括后台运行、日志输出、进程检查和杀死。通过创建RunAdmin.sh脚本,可以自动化处理这些任务,提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看指定jar进程命令1. windows和linux执行jar命令是一样的,java -jar xxx.jar 

nohup java -jar xxx.jar > web.log 2>&1 &

2、使用nohup命令将jar程序设置成后台运行,运行日志输出到web.log,关闭窗口无影响

3 查看指定jar进程命令
ps aux|grep xxx.jar

 

4 杀死jar包进程

kill -9 进程号

 这样子就杀死了jar包的进程,然后我们就可以执行第一步的操作了,运行jar包

5.查看日志,jar包运行情况
tail -f web.log

这样子是不是很麻烦?是不是想走捷径,一行代码就把jar包部署上去,还不用每次去杀死上一次jar包的进程,接下来这串代码就可以做到,话不多说,上脚本!!!
在jar包目录下面创建一个RunAdmin.sh的文件,里面的内容为以下代码:
 

#!/bin/sh
#!/bin/bash
#
#JDK 路径
jdk17Path=/usr/java/jdk1.8.0_371/bin/java
#App 目录
appDirRootPath=/home/lzwl
#App Jar 名称
appJarName=ruoyi-admin.jar
#App 运行端口
appRunPort=8081
#存在则杀死
ps -ef | grep ${appJarName} |grep -v grep | awk '{print $2}' | xargs kill -9
#启动
nohup ${jdk17Path} ${jvmArgs} ${jvmExtArgs} -Xloggc:${appDirRootPath}/logs/gc${appRunPort}.log -jar ${appDirRootPath}/${appJarName} --server.port=${appRunPort} > ${appDirRootPath}/logs/api-${appRunPort}.log 2>&1 &
#打印日志
exec tail -100f ${appDirRootPath}/logs/api-${appRunPort}.log

然后在同目录创建一个logs目录,没有的话脚本执行会报错。
执行的命令为: sh RunAdmin.sh

 这样子是不是很方便,一行命令就做到了,记得给博主点个赞!!!

### 如何将后端项目打JAR 文件并部署Linux 服务器 #### 后端项目的打过程 为了将后端项目打为可执行的 JAR 文件,通常可以使用 Maven 或 Gradle 构建工具完成这一操作。以下是基于 Maven 的具体方法: 通过运行 `mvn clean package` 命令,Maven 将清理旧的目标文件并将项目编译、测试并最终打为目标目录下的 `.jar` 文件[^3]。 目标文件一般位于项目的 `target` 目录下,该目录含了构建后的工件,其中以 `.jar` 结尾的文件就是所需的可执行 JAR [^2]。 #### 部署Linux 服务器的过程 一旦获得了 JAR 文件,就可以将其上传至远程 Linux 服务器进行部署。常见的步骤如下所示: 1. **传输 JAR 文件** 使用 SCP(Secure Copy Protocol)或者 FTP 工具将本地生成的 JAR 文件传送到服务器上的指定路径。例如: ```bash scp /local/path/user-service.jar username@remote-server:/path/on/server/ ``` 2. **登录服务器** 登录到目标 Linux 服务器上,可以通过 SSH 客户端实现连接。 ```bash ssh username@remote-server ``` 3. **切换工作目录** 进入之前设定好的存储 JAR 文件的位置。 ```bash cd /path/on/server/ ``` 4. **启动应用** 利用 Java 提供的 `-jar` 参数来运行已上传的应用程序。 ```bash java -jar user-service.jar ``` 如果希望后台运行,则可以附加 `&` 符号或将进程守护化处理[^1]。 #### 解决常见问题 在实际部署过程中可能会碰到某些障碍,比如服务无法正常响应外部请求等问题。这可能是由于防火墙设置不当或未开放必要的网络端口所引起。解决办法括但不限于以下几个方面: - 开启防火墙服务:如果发现服务器默认关闭了防火墙功能,需手动激活它。 ```bash systemctl start firewalld ``` - 添加允许访问的特定端口:假设应用程序监听的是自定义 TCP 端口(如 8080),则需要配置防火墙规则使其对外可见。 ```bash firewall-cmd --zone=public --add-port=8080/tcp --permanent ``` - 应用更改并验证状态:最后记得重新加载防火墙策略,并确认新增加的端口已被正确启用。 ```bash firewall-cmd --reload netstat -ntulp | grep 8080 ``` 上述命令分别用于刷新防火墙配置以及检查是否有对应的服务绑定到了指定端口上[^4]。 ```python import os def deploy_jar(): """模拟简单的JAR部署流程""" local_path = "/local/path/" remote_server = "username@remote-server" remote_dir = "/path/on/server/" # Step 1: Package the project using Maven os.system(f"cd {os.getcwd()} && mvn clean package") # Step 2: Transfer file via SCP jar_file_name = next((f for f in os.listdir('target') if f.endswith('.jar')), None) if not jar_file_name: raise FileNotFoundError("No JAR files found after packaging.") full_local_path = os.path.join(os.getcwd(), 'target', jar_file_name) transfer_command = f'scp "{full_local_path}" {remote_server}:{remote_dir}' os.system(transfer_command) # Step 3: Execute remotely (requires passwordless SSH or key-based auth setup beforehand) run_remote_command = f'ssh {remote_server} "cd {remote_dir}; nohup java -jar {jar_file_name} &"' os.system(run_remote_command) deploy_jar() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值