Difference between revisions of "Pubapps Systemd Use"

From UFRC
Jump to navigation Jump to search
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
[[Category: PubApps]]
 
back to [[Web_Application_Hosting]]
 
back to [[Web_Application_Hosting]]
 
=Introduction=
 
=Introduction=
If one or more of your web applications hosted on pubapps infrastructure are architected to run on the webserver you need to have two copies 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. To make sure your web applications are running after an HA failover or start when a server in pubapps infrastructure is restarted we encourage you to use a systemd script, which can automate the start/stop/restart process. This help article should help you create and use such a script.
+
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 32: Line 33:
  
 
=Use=
 
=Use=
Manage the application with
+
==Login linger mode==
** Initial load of the configuration to enable the service
+
* 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
 
  systemctl --user enable projprod
** Reload configuration (after every change of the systemd service script)
+
* Reload configuration (after every change of the systemd service script)
 
  systemctl --user daemon-reload
 
  systemctl --user daemon-reload
** Start service
+
* Start service
 
  systemctl --user start projprod
 
  systemctl --user start projprod
** Stop service
+
* Stop service
 
  systemctl --user stop projprod
 
  systemctl --user stop projprod
** Restart service
+
* Restart service
 
  systemctl --user restart projprod
 
  systemctl --user restart projprod
** Check if the service is running
+
* Check if the service is running
 
  systemctl --user status projprod
 
  systemctl --user status projprod
  
Start the application on pubweb[1,2] servers.
+
===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 https://wiki.archlinux.org/title/Systemd/User]

Latest 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