Play Framework 2.6:如何无需控制台启动生产构建应用?
让Play Framework 2.6生产构建应用脱离控制台后台运行的方法
我来帮你搞定这个问题——要让你的Play应用在关闭控制台或退出终端后依然稳定运行,有几种实用的方案,你可以根据自己的使用场景选择:
1. 最简单的临时方案:使用nohup
nohup可以让进程忽略终端挂起信号,同时把输出重定向到日志文件,适合临时运行应用的场景。
直接执行以下命令启动应用:
nohup my-first-app-1.0/bin/my-first-app -Dconfig.file=/path/to/config -Dplay.http.secret.key=$APP_SECRET > app.log 2>&1 &
各部分说明:
nohup:让应用不受终端关闭的影响> app.log:把应用的标准输出写入到app.log文件里2>&1:把错误输出也合并到标准输出日志中&:让应用在后台运行
如果需要停止应用,可以用ps aux | grep my-first-app找到进程ID,再执行kill <进程ID>。
2. 可随时恢复会话的方案:使用screen或tmux
如果你需要偶尔回到应用的控制台查看输出或操作,screen或tmux是更好的选择——它们可以创建一个持久的终端会话,即使你断开连接,会话里的应用依然运行。
用screen的步骤:
- 先安装screen(Debian/Ubuntu:
sudo apt install screen,CentOS/RHEL:sudo yum install screen) - 创建一个新会话:
screen -S play-app - 在这个会话里执行你的启动命令:
my-first-app-1.0/bin/my-first-app -Dconfig.file=/path/to/config -Dplay.http.secret.key=$APP_SECRET - 按下
Ctrl+A+D组合键脱离会话,此时应用会在后台继续运行 - 之后想回到会话查看的话,执行
screen -r play-app
用tmux的步骤:
- 安装tmux(Debian/Ubuntu:
sudo apt install tmux,CentOS/RHEL:sudo yum install tmux) - 创建新会话:
tmux new -s play-app - 执行启动命令
- 按下
Ctrl+B+D组合键脱离会话 - 回到会话:
tmux attach -t play-app
3. 生产环境推荐:使用systemd服务
如果是生产环境,强烈建议用systemd来管理你的Play应用——它可以让应用开机自启,崩溃后自动重启,还能方便地管理应用状态和日志。
步骤:
- 创建一个systemd服务文件,比如
/etc/systemd/system/my-first-app.service,内容如下:
[Unit] Description=My First Play Framework Application After=network.target [Service] User=your-username # 替换成运行应用的系统用户 WorkingDirectory=/path/to/your/app/folder # 替换成应用所在的目录 ExecStart=/path/to/my-first-app-1.0/bin/my-first-app -Dconfig.file=/path/to/config -Dplay.http.secret.key=your-secret-key # 替换成你的启动命令 Restart=always # 应用崩溃或系统重启后自动启动 Environment="APP_SECRET=your-secret-key" # 如果需要用环境变量传递密钥,可以加这行(和ExecStart里的二选一即可) [Install] WantedBy=multi-user.target
- 重新加载systemd配置:
sudo systemctl daemon-reload
- 启动应用服务:
sudo systemctl start my-first-app
- 设置开机自启:
sudo systemctl enable my-first-app
常用管理命令:
- 查看应用状态:
sudo systemctl status my-first-app - 查看应用日志:
journalctl -u my-first-app -f(-f参数实时查看日志) - 停止应用:
sudo systemctl stop my-first-app - 重启应用:
sudo systemctl restart my-first-app
内容的提问来源于stack exchange,提问作者vortexkd
相关产品推荐
相关产品推荐

