Difference between revisions of "Pubapps Systemd Use"
Moskalenko (talk | contribs) (→Use) |
Moskalenko (talk | contribs) |
||
Line 1: | Line 1: | ||
+ | [[Category: PubApps]] | ||
back to [[Web_Application_Hosting]] | back to [[Web_Application_Hosting]] | ||
=Introduction= | =Introduction= | ||
− | If | + | If your web applications hosted on the pubapps infrastructure is architected to run as a backend process that is then reverse proxied via the pubweb* webservers you will need a way to start the application when a server in the pubapps infrastructure (pubcontainer* node, individual VM, or pubweb* webservers for lightweight backends) is restarted. We encourage you to consider using a systemd in user mode, which can automate the start/stop/restart process. This help article should help you create and use such a user systemd script for a web application. |
=Configuration= | =Configuration= | ||
Line 48: | Line 49: | ||
* Check if the service is running | * Check if the service is running | ||
systemctl --user status projprod | systemctl --user status projprod | ||
− | + | ||
+ | ===HA Setup on pubweb servers=== | ||
+ | Since we have two pubapps web/proxy servers you need to have a copy of the app running on every pubweb[1,2] server to account for the HA (High Availability) configuration of the pubapps infrastructure where a secondary pubweb webserver will take over if there is an issue with the main webserver. | ||
+ | |||
=Additional Information= | =Additional Information= | ||
For additional information search web for 'systemd user mode'. E.g. [https://wiki.archlinux.org/title/Systemd/User https://wiki.archlinux.org/title/Systemd/User] | For additional information search web for 'systemd user mode'. E.g. [https://wiki.archlinux.org/title/Systemd/User https://wiki.archlinux.org/title/Systemd/User] |
Revision as of 16:59, 18 July 2024
back to Web_Application_Hosting
Introduction
If your web applications hosted on the pubapps infrastructure is architected to run as a backend process that is then reverse proxied via the pubweb* webservers you will need a way to start the application when a server in the pubapps infrastructure (pubcontainer* node, individual VM, or pubweb* webservers for lightweight backends) is restarted. We encourage you to consider using a systemd in user mode, which can automate the start/stop/restart process. This help article should help you create and use such a user systemd script for a web application.
Configuration
Systemd has two modes of operation - system-wide, which requires the service scripts to be in a system location and operated by root and a user mode. You will be using the user mode.
- Create a user systemd directory under your /pubapps/PROJECT/ $HOME directory in pubapps
mkdir -p .config/systemd/user/
- Add a service script for the application, e.g. ~/.config/systemd/user/projprod.service or projdev.service
Script
Example systemd script
[Unit] Description=MyProject (Production) After=network.target [Service] Type=simple WorkingDirectory=/pubapps/myinstance/myproject/prod/ ExecStart=/pubapps/myinstance/myproject/prod/conda/bin/python3 run/runserver.py TimeoutSec=30 RestartSec=15s Restart=always [Install] WantedBy=multi-user.target
Use
Login linger mode
- Enable user linger mode to avoid having your application be shut down when you log out:
loginctl enable-linger $USER
Manage the application
- Initial load of the configuration to enable the service
systemctl --user enable projprod
- Reload configuration (after every change of the systemd service script)
systemctl --user daemon-reload
- Start service
systemctl --user start projprod
- Stop service
systemctl --user stop projprod
- Restart service
systemctl --user restart projprod
- Check if the service is running
systemctl --user status projprod
HA Setup on pubweb servers
Since we have two pubapps web/proxy servers you need to have a copy of the app running on every pubweb[1,2] server to account for the HA (High Availability) configuration of the pubapps infrastructure where a secondary pubweb webserver will take over if there is an issue with the main webserver.
Additional Information
For additional information search web for 'systemd user mode'. E.g. https://wiki.archlinux.org/title/Systemd/User