如何为播放应用程序创建systemd单元文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为播放应用程序创建systemd单元文件相关的知识,希望对你有一定的参考价值。

我对编写单元文件的过程感到满意,但它是ExecStart(和其他相关的)的内容,我不知道如何布局。

我已经获得了一个播放应用程序的命令行,该命令行只是声明:

cd /play_home_dir
activator run

有人可以帮我把这些命令放在单元文件中吗?或者解释如何使用单元文件执行上述任务?

答案

您需要首先创建一个发行版:例如sbt universal:package-zip-tarball。这创建了应用程序的二进制分发。

在系统方面:

[Unit]
Description=service1
After=multi-user.target

[Service]
Type=simple
ExecStartPre=/bin/rm -f /usr/local/play/service1/RUNNING_PID
ExecStart=/usr/local/play/service1/bin/service1 -J-Xmx5120m -J-Xms3072m -J-server -Dlogger.file=/usr/local/play/service1/conf/application-live.xml -Dconfig.file=/usr/local/play/service1/conf/application-live.conf
User=play
Group=play
TimeoutStopSec=10
LimitNOFILE=10240

[Install]
WantedBy=multi-user.target

这假定:

该应用程序名为service1,在application-live.xml中具有记录器配置,在application-live.conf中具有应用程序配置。

另一答案

我在生产中使用以下注释的系统单元文件。将{{app_name}}替换为您播放项目的名称。 {{app_version.stdout}}是build.sbt中指定的项目版本我正在调用play dist并在/opt上传zip。

[Unit]
Description=The {{ app_name }} 
After=network.target
After=postgresql.service

[Service]
# Source environment for application
EnvironmentFile=/home/{{ app_name }}/app.env
EnvironmentFile=/home/{{ app_name }}/{{ env }}.env

# Up Evolutions should be safe on Production
# Down Evolutions are to be avoided
ExecStart=/opt/{{ app_name }}-{{ app_version.stdout }}/bin/{{ app_name }} 
    -Dhttp.address=localhost 
    -DapplyEvolutions.default=true 
    -Dpidfile.path=/var/run/{{ app_name }}/{{ app_name }}.pid
User={{ app_name }}
Group={{ app_name }}
WorkingDirectory=/opt/{{ app_name }}-{{ app_version.stdout }}

# Ensure /var/run/ {{ app_name }} is created before creating the pidfile
RuntimeDirectory={{ app_name }}

# See http://serverfault.com/a/695863
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

我注意到,在硬盘后,游戏初创公司失败了,因为postgresql还没有,因此After=postgresql.service

我选择将我的应用程序配置放在环境变量中,遵循https://12factor.net/config的建议,所以我使用EnvironmentFile指令来获取它们。

以上是关于如何为播放应用程序创建systemd单元文件的主要内容,如果未能解决你的问题,请参考以下文章

如何为用户输入文本时将动态创建的每个单元格设置按钮操作(Swift 4)?

如何为视频播放器选择文件

如何为 SQL 语句创建单元测试?

如何为 HLS 创建字节范围的 m3u8 播放列表?

如何为以下代码段编写单元测试用例

如何为单元格设置双边框