我已经开发了一个Netty应用程序,该应用程序允许来自各种设备的TCP连接。但是我不完全确定将应用程序部署用于生产用途的最佳方法是什么。现在,我将其打包为一个JAR文件,并在目标服务器上运行一个屏幕会话,如下所示:
screen -S Nettyjava -jar Server-Netty.jar
这是部署它的推荐方法还是屏幕上的最佳选择?
答案 0 :(得分:1)
screen
不是在生产环境中运行服务的正确工具。如果系统必须重新启动,则必须手动重新启动该服务。在大多数当前的Linux发行版中,您可以使用systemd service unit file来处理。这使您可以定义工作目录,用户,要运行的命令...这是取自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
一种好的做法是创建一个特定的用户来运行该服务并限制其在文件系统上的权限。