Я могу запустить свое приложение Mojo через systemd
без каких-либо проблем, но я не могу остановить или перезапустить его таким же образом. Я взял свою конфигурацию в основном из документации Mojo по адресу http://mojolicious.org/perldoc/Mojolicious/Guides/Cookbook#Pre-forking:
[Unit]
Description=ldsquiz.org
After=network.target
[Service]
Type=simple
Restart=always
RestartSec=30
ExecStart=/home/sites/www.ldsquiz.org/checkout/bin/carton-exec app.pl prefork -m production -l http://*:5103
KillMode=process
User=ldsquiz
Group=ldsquiz
SyslogIdentifier=ldsquiz-org
[Install]
WantedBy=multi-user.target
Если я остановлю его через sudo service ldsquiz-org stop
, тогда системный журнал скажет Jan 13 16:37:48 web-hosting systemd[1]: Stopped ldsquiz.org.
, но процессы все еще работают.
restart
через systemd
выглядит так, как я и ожидал, поскольку сокет прослушивания все еще используется из-за неудачного завершения работы:
Jan 13 16:39:13 web-hosting systemd[1]: Stopped ldsquiz.org.
Jan 13 16:39:13 web-hosting systemd[1]: Started ldsquiz.org.
Jan 13 16:39:14 web-hosting ldsquiz-org[20353]: Can't create listen socket: Address already in use at
/home/sites/www.ldsquiz.org/checkout/local/lib/perl5/Mojo/IOLoop.pm line 126.
Jan 13 16:39:14 web-hosting systemd[1]: ldsquiz-org.service: Main process exited, code=exited, status=98/n/a
Jan 13 16:39:14 web-hosting systemd[1]: ldsquiz-org.service: Unit entered failed state.
Jan 13 16:39:14 web-hosting systemd[1]: ldsquiz-org.service: Failed with result 'exit-code'.
Jan 13 16:39:15 web-hosting ldsquiz-org[16886]: [Sat Jan 13 16:39:15 2018] [info] Creating process id file "/tmp/prefork.pid"
Что мне здесь не хватает?
systemd
юнитами с помощьюsystemctl start/stop/status/restart $serviceName
. Это имеет значение? т.е.systemctl stop ldsquiz-org
? - person PerlDuck   schedule 13.01.2018Type=simple
, но этот параметрprefork
заставляет меня сомневаться. Возможно, попробуйтеType=forking
. Возможные значения см. здесь. Возможно, вам также нужно немного поиграть с настройкойKillMode=
. Возможные значения см. здесь. И не забывайте вызыватьsystemctl daemon-reload
всякий раз, когда вы возитесь с файлом модуля. - person PerlDuck   schedule 13.01.2018KillMode=control-group
помог мне. Похоже, мне нужно узнать о патче для документации Mojo. Если вы хотите написать ответ, я с радостью его приму. - person oalders   schedule 13.01.2018