Centos7中如何把一个jar包做成一个服务启动

本文介绍在阿里云CentOS7服务器上部署IDEA的Jrebel插件服务。此前在本地运行jar包有不便,而CentOS7的systemd可将jar包做成服务。说明了systemd系统和用户的区分,详细介绍了创建服务文件、启动服务的方法,还提及停止、重启服务及设置开机自启等命令。

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

使用IDEA做开发的都知道, IDEA的Jrebel插件可以支持热部署, 不用每次修改都重启服务器.之前都是把jar包做成bat文件, 在自己的电脑上设置成自启动项目,然后在IDEA里引用。奈何本人能力有限,每次开机启动的时候这个jar包都会在前台运行,需要手动最小化,看着很难受。正好买了一台阿里云服务器,就尝试在云服务器上部署。
最开始的时候,用 nohup java -jar xxx.jar > xxx.log 2>&1 & 的形式,让服务在后台运行,但是这种方式重启或者停止服务有些麻烦。CentOS7上的 systemd 提供了一组命令,可以把jar包做成一个服务,通过 systemctl start xxx 的形式启动,这样就方便多了。
首先需要说明的是: systemd 是有系统和用户区分的,系统的 systemd 在 /usr/lib/systemd/system 下,用户的在 /etc/systemd/system下,我们自己创建的service服务一般都存储在 /etc/systemd/system下。

  1. 创建服务文件
    vi /etc/systemd/system/xxx.service xxx为服务名。
    文件内容:
[Unit]
Description=jrebel service

[Service]
WorkingDirectory=/usr/local/dcy/javaAPP/
Type=simple
Restart=always
PrivateTmp=true
ExecStart=/usr/local/dcy/package/jdk1.8.0_152/bin/java -jar /usr/local/dcy/javaAPP/JrebelBrains.jar -p 8000
ExecStop=/bin/kill -15 $MAINPID

[Install]
WantedBy=multi-user.target

这样服务就创建好了。
2. 启动服务
我的service文件名为jrebel.service ,因此运行systemctl start jrebel.service或者systemctl start jrebel,查看服务运行状态systemctl status jrebel
服务成功启动
3. 其他命令
停止服务:systemctl stop jrebel
重启服务: systemctl restart jrebel
设置开机自启动:systemctl enable jrebel

<think>好的,我现在需要帮助用户解决如何利用JMeter、InfluxDB和Grafana监控和优化Nginx负载均衡在高并发下的性能,并在CentOS 7虚拟机中搭建多节点的开源商城,前后端分离部署的问题。首先,我得分解用户的问题,看看各个部分需要什么步骤。 首先,用户提到的是搭建多节点架构的开源商城,前后端分离。可能需要先选择一个合适的开源商城系统,比如Magento或者Shopware,但用户可能更倾向于Java系的,因为提到了jar部署,所以可能是Spring Boot的前后端分离项目。比如若依(RuoYi)或者JEECG这样的系统。需要指导用户搭建多个后端节点,可能使用Nginx作为负载均衡器,将请求分发到这些节点上。 然后,关于监控和性能优化部分,用户想用JMeter做压力测试,将数据存入InfluxDB,再通过Grafana展示。这部分需要配置JMeter的Backend Listener,将测试结果发送到InfluxDB,然后Grafana从InfluxDB读取数据生图表。同时,可能需要监控Nginx本身的指标,比如连接数、请求速率等,这里可能需要使用Telegraf收集Nginx的stub_status模块的数据,并发送到InfluxDB。 接下来,考虑在CentOS 7虚拟机中部署这些组件。需要确保各个节点的网络互通,可能使用Docker来简化部署,尤其是InfluxDB和Grafana,用户提供的引用[1]里有InfluxDB的Docker命令,可以指导用户如何运行容器。同时,Jenkins的配置引用[3]可能需要用到,不过用户的问题里没有提到持续集,但如果有自动化部署的需求,可能需要考虑。 关于JMeter参数化的问题,用户引用[2]提到参数化的重要性,所以在设计JMeter测试脚本时,需要确保请求的参数是动态的,避免缓存或重复数据的问题。例如,使用CSV文件来参数化用户登录信息或商品ID,确保高并发下测试的真实性。 性能优化方面,可能需要调整Nginx的配置,比如worker_processes、keepalive_timeout、缓冲设置等。同时,后端应用可能需要调整JVM参数,比如堆内存大小,垃圾回收策略等。此外,数据库连接池的配置,比如HikariCP的最大连接数,也需要根据高并发情况进行优化。 在监控部分,Grafana需要配置InfluxDB作为数据源,并导入合适的仪表板模板,比如JMeter的测试结果仪表板,以及Nginx的监控仪表板。用户需要知道如何配置这些数据源和仪表盘,可能需要指导用户查找现有的JSON模板或手动配置。 此外,用户提到的前后端分离部署,前端可能是静态文件,部署在Nginx或者单独的Web服务器上,后端是jar运行,可能需要使用systemd服务来管理,确保各个节点上的jar能够自动启动和重启。引用[3]里的systemctl restart jenkins可能是一个参考,用户需要类似的命令来管理后端服务。 最后,整个流程需要测试验证,括负载均衡是否有效,监控数据是否准确,以及在高并发下系统的瓶颈在哪里,如何调整优化。可能需要多次压力测试,逐步调整参数,观察性能变化。 现在,需要将这些步骤整理一个清晰的指南,分步骤指导用户完环境搭建、配置、测试和优化。同时,确保各部分之间的衔接正确,比如JMeter的数据正确发送到InfluxDB,Grafana正确读取数据,Nginx配置正确分发请求到后端节点等。此外,需要提醒用户注意虚拟机资源分配,比如内存和CPU,避免因为资源不足导致测试结果不准确。</think>### 分步骤指南:使用JMeter+InfluxDB+Grafana监控Nginx负载均衡性能(CentOS 7多节点架构) #### 一、环境搭建准备 1. **虚拟机配置** 创建3台CentOS 7虚拟机(1台负载均衡+Nginx,2台应用节点) ```bash # 配置网络互通(示例) nmcli con mod ens33 ipv4.addresses 192.168.1.100/24 systemctl restart network ``` 2. **基础组件安装** ```bash # 所有节点安装JDK 8+ yum install -y java-1.8.0-openjdk ``` --- #### 二、多节点商城部署(以Spring Boot为例) 1. **后端部署(节点1:192.168.1.101,节点2:192.168.1.102)** ```bash # 创建服务管理文件 cat > /etc/systemd/system/mall.service <<EOF [Unit] Description=Spring Boot Mall Service After=syslog.target [Service] ExecStart=/usr/bin/java -jar /opt/mall/mall.jar User=root Restart=always [Install] WantedBy=multi-user.target EOF # 启动服务 systemctl daemon-reload systemctl start mall ``` 2. **前端部署(Nginx节点:192.168.1.100)** ```nginx # /etc/nginx/conf.d/mall.conf server { listen 80; server_name mall.example.com; location / { root /opt/mall-frontend; try_files $uri $uri/ /index.html; } location /api { proxy_pass http://backend; proxy_set_header Host $host; } } ``` --- #### 三、Nginx负载均衡配置 ```nginx # /etc/nginx/nginx.conf upstream backend { least_conn; server 192.168.1.101:8080 weight=3; server 192.168.1.102:8080; keepalive 32; } server { location /api { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Connection ""; } } ``` 验证配置:`nginx -t && systemctl restart nginx`[^3] --- #### 四、监控系统搭建 1. **InfluxDB部署** ```bash docker run -d --name=influxdb -p 8086:8086 \ -v ${PWD}/influxdb:/var/lib/influxdb \ influxdb:1.7.10 ``` 创建数据库: ```sql CREATE DATABASE jmeter CREATE USER jmeter WITH PASSWORD 'password' WITH ALL PRIVILEGES ``` 2. **Grafana部署** ```bash docker run -d --name=grafana -p 3000:3000 grafana/grafana ``` 3. **JMeter配置** ```xml <!-- jmeter.properties --> backend_influxdb.measurement=jmeter backend_influxdb.url=http://192.168.1.100:8086/write?db=jmeter backend_influxdb.application=nginx-loadbalancer ``` --- #### 五、性能测试与优化 1. **JMeter测试脚本设计** - 使用**CSV Data Set Config**实现参数化(用户登录、商品查询)[^2] - 添加响应断言(HTTP状态码、关键字段校验)[^4] - 配置Backend Listener发送数据到InfluxDB 2. **关键优化参数** ```nginx # Nginx优化 worker_processes auto; events { worker_connections 10240; multi_accept on; } # 后端JVM优化(每个节点) JAVA_OPTS="-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200" ``` --- #### 六、Grafana监控看板 1. 导入JMeter官方模板(ID:5496) 2. 添加Nginx监控看板(使用`nginx-lua-prometheus`模块) ![Grafana监控示例](https://example.com/grafana-screenshot.png) --- #### 验证流程 1. 执行压测:`jmeter -n -t loadtest.jmx -l result.jtl` 2. 观察Grafana中的TPS、响应时间、错误率 3. 调整Nginx负载均衡策略(轮询→最小连接数) 4. 验证节点扩容效果(新增节点3后TPS提升30%) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值