AWS EC2服务器Jar进程自停及Nginx配置失效问题求助
问题1:关闭终端后Jar进程终止
原因
直接在终端启动Jar进程时,进程属于当前终端会话的子进程,终端关闭(或SSH连接断开)时,会话会向子进程发送终止信号,导致Jar进程停止。
解决方案
- 用nohup后台运行(快速临时方案):
执行命令:nohup java -jar 你的应用.jar &nohup会让进程脱离终端控制,输出默认写入当前目录的nohup.out文件;&让进程在后台运行。 - 用screen/tmux维持会话(适合需要随时重新连接查看进程的场景):
- 安装screen:
apt install screen(Debian/Ubuntu)或yum install screen(CentOS/RHEL) - 启动screen会话:
screen - 在会话里启动Jar进程:
java -jar 你的应用.jar - 按下
Ctrl+A+Ddetach会话,此时关闭终端不影响进程 - 重新连接会话:
screen -r
- 安装screen:
- 注册为systemd服务(推荐生产环境,持久化+开机自启):
- 创建服务文件:
vi /etc/systemd/system/你的应用.service - 写入以下内容(替换占位符):
[Unit] Description=你的Java应用描述 After=network.target [Service] User=ec2-user # 替换为运行应用的用户,比如ec2-user或ubuntu ExecStart=/usr/bin/java -jar /path/to/你的应用.jar # 替换为Java路径和Jar文件绝对路径 Restart=always # 进程意外终止时自动重启 RestartSec=5 # 重启间隔5秒 [Install] WantedBy=multi-user.target - 刷新systemd配置:
systemctl daemon-reload - 设置开机自启:
systemctl enable 你的应用 - 启动服务:
systemctl start 你的应用
可用systemctl status 你的应用查看状态,journalctl -u 你的应用查看日志。
- 创建服务文件:
问题2:重启服务器后Nginx配置失效
原因
- 配置文件未保存到Nginx实际加载的路径
- 自定义配置未启用(比如未软链到sites-enabled目录)
- Nginx未设置开机自启,重启后未自动加载配置
解决方案
- 确认配置文件路径:
执行nginx -V查看Nginx的配置加载路径,重点看--conf-path(主配置文件)和--include参数(额外配置目录)。通常自定义配置放在/etc/nginx/conf.d/(后缀.conf会自动加载)或/etc/nginx/sites-available/(需要软链到sites-enabled)。 - 启用自定义配置:
如果用sites-available/sites-enabled结构,执行:ln -s /etc/nginx/sites-available/你的配置.conf /etc/nginx/sites-enabled/ - 验证配置语法并重启Nginx:
修改配置后先测试语法:nginx -t,输出test is successful再重启:systemctl restart nginx - 设置Nginx开机自启:
执行:systemctl enable nginx,这样服务器重启后Nginx会自动启动并加载正确的配置。 - 检查配置是否被覆盖:
确保修改的是实际生效的配置文件,避免修改了副本或临时文件。
内容的提问来源于stack exchange,提问作者Burak Öztürk
相关产品推荐
相关产品推荐

