The best practice IMO in regards to permissions for the run and log directories is to make subdirectories of /var/run and /var/log owned by the user that will be running hypnotoad, and put the pidfile/logfiles in there.
The other issue though is if you are running hypnotoad to listen on a privileged port like 80 or 443, then it needs to start as root or under a user with the appropriate capabilities assigned (I'm not sure on the details for this option). You can use https://metacpan.org/pod/Mojolicious::Plugin::SetUserGroup to drop permissions after starting as root. -Dan On Thu, Nov 23, 2017 at 7:45 PM, Daniel Mantovani <dma...@gmail.com> wrote: > Hi, > > Type=forking should work just fine, I am not sure that with Type=simple > you will have all the functionallity you can get from systemd. > > A couple of advices though: > > 1) to get more confortable with systemd, you probably want to replicate as > much as possible the example in Mojolicious::Guides::Cookbook. It just > works very well (https://metacpan.org/pod/distribution/Mojolicious/lib/ > Mojolicious/Guides/Cookbook.pod#Hypnotoad) > > 2) But if you need to have pidfile and log files outside your working > directory (like in /run/your_app/hypnotoad.pid and > /var/log/your_app/production.log etc...), this simple approach will not > work, because you probably don't want to run your application with > permissions so high it will be able to write in /run or /var/log > directories. Instead you normally use a user with minimal permissions. > Besides as far as I know hypnotoad requires to have permission rights in > an already created directory for the pid file and also for the log file. > > If that is the case, what you can do is modify your original service file > as follows: > > (I am supossing here that "/home/mojo_test.pl" is a typo, I guess if your > user is "mojo_user" for instance, the path to the app will be something > like "/home/mojo_user/mojo_test.pl") > > mojo_test.service > [Unit] > Description=My Mojolicious application > Requires=network.target > After=network.target > > [Service] > Type=forking > PIDFile=/run/mojo_test/hypnotoad.pid > User=mojo_user > Group=mojo_user > PermissionsStartOnly=True > ExecStartPre=/usr/bin/install -o mojo_user -g mojo_user -d /run/mojo_test > ExecStartPre=/usr/bin/install -o mojo_user -g mojo_user -d > /var/log/mojo_test > ExecStart=/usr/local/bin/hypnotoad /home/mojo_user/mojo_test.pl > ExecReload=/usr/local/bin/hypnotoad /home/mojo_user/mojo_test.pl > KillMode=process > > [Install] > WantedBy=multi-user.target > > Please check that in your configuration file you have the pid set as > /run/mojo_test/hypnotoad.pid, and that when > you define the path for the log file it goes inside /var/log/mojo_test > directory, something like > > sub startup { > ... > $self->app->log->path('/var/log/mojo_test/production.log'); > ... > > } > > About the zero downtime hypnotoad feature, with reload it should work > without any problems (you can check that in the log file). If you restart > instead of course it will kill the process and then start again, and you > can check that also in the log file. > > One last thing, if you happen to have a recent version of systemd or you > are allowed to install that (not my case unfortunatelly), you should check > RuntimeDirectory= and LogsDirectory= directives. You can check if those are > supported in your system with > > $ man systemd.directives > > If you have those, you will probably not need the ExecStartPre directives > above, because the only thing these do is to create those directories. > > Hope it helps. > BR, > Daniel > > El jueves, 23 de noviembre de 2017, 13:36:10 (UTC-3), Boyd Duffee escribió: >> >> On 23/11/17 16:14, Dan Book wrote: >> > I would not recommend running hypnotoad as a Type=simple service with >> -f. >> > This will not allow you to use hot-restarts via systemctl reload. >> >> Naively, I _can_ hot-restart with systemctl reload servicename, but now >> you've got me worried. >> Any idea why it's not advisable and is Type=forking the proper solution? >> >> -- >> Boyd Duffee Keele University (01782) 734225 >> DevOps - Student Facing Systems >> >> Some people are born on third base and go through life >> thinking they hit a triple - Barry Switzer >> > -- > You received this message because you are subscribed to the Google Groups > "Mojolicious" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to mojolicious+unsubscr...@googlegroups.com. > To post to this group, send email to mojolicious@googlegroups.com. > Visit this group at https://groups.google.com/group/mojolicious. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Mojolicious" group. To unsubscribe from this group and stop receiving emails from it, send an email to mojolicious+unsubscr...@googlegroups.com. To post to this group, send email to mojolicious@googlegroups.com. Visit this group at https://groups.google.com/group/mojolicious. For more options, visit https://groups.google.com/d/optout.