deployment - 如何部署 Netty 服务器?
问题描述
我开发了一个 Netty 应用程序,它允许从各种设备通过 TCP 进行连接。但是,我不完全确定部署应用程序以供生产使用的最佳方式是什么。现在我将它打包在一个 JAR 文件中并在目标服务器上运行一个屏幕会话,如下所示:
screen -S Nettyjava -jar Server-Netty.jar
这是推荐的部署方式还是 screen 是最好的选择?
解决方案
screen
不是在生产中运行服务的正确工具。如果系统必须重新启动,您将不得不手动重新启动服务。在大多数当前的 linux 发行版上,您可以使用systemd 服务单元文件来处理这个问题。这允许您定义工作目录、用户、要运行的命令...这是取自 Unix & Linux StackExchange 问题configure java daemon with systemd的示例
[Unit]
Description=Some job
After=network.target
[Service]
WorkingDirectory=/home/user/tmp/testout
SyslogIdentifier=SocketTest
ExecStart=/bin/sh -c "exec java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar"
User=dlt
Type=simple
[Install]
WantedBy=multi-user.target
一个好的做法是创建一个特定的用户来运行服务并限制他在文件系统上的权利。
推荐阅读
- html - Python 全网页解析
- database - 在两个环境之间复制表 - Redshift
- powershell - 如何检查文件中的列数以满足条件
- amazon-web-services - 如何在 Amazon Go 库中使用 https 代理?
- php - 将摘录长度限制在
- string - Angular 5在另一个变量更改时自动更新字符串变量
- docker - 执行yii migrate时如何修复错误异常?
- lua - Lua:返回表槽函数为零
- haskell - Hask 是否形成理论上有效的类别?或者它只是假装是一个?
- c# - ASP.NET Core 2.0 Identity - 密码错误消息未显示在视图中