diff --git a/docs/deploy/systemd.md b/docs/deploy/systemd.md new file mode 100644 index 00000000..fc53e774 --- /dev/null +++ b/docs/deploy/systemd.md @@ -0,0 +1,68 @@ +# Systemd + +Systemd is the default system and service manager on most Linux distributions. It is usually installed by default so no installation is needed on supported Swift distributions. + +## Configure + +Each Vapor app on your server should have its own service file. For an example `Hello` project, the configuration file would be located at `/etc/systemd/system/hello.service`. This file should look like the following: + +```sh +[Unit] +Description=Hello +Requires=network.target +After=network.target + +[Service] +Type=simple +User=vapor +Group=vapor +Restart=always +RestartSec=3 +WorkingDirectory=/home/vapor/hello +ExecStart=/home/vapor/hello/.build/release/Run serve --env production +StandardOutput=syslog +StandardError=syslog +SyslogIdentifier=vapor-hello + +[Install] +WantedBy=multi-user.target +``` + +As specified in our configuration file the `Hello` project is located in the home folder for the user `vapor`. Make sure `WorkingDirectory` points to the root directory of your project where the `Package.swift` file is. + +The `--env production` flag will disable verbose logging. + +### Environment +Otherwise, quoting the values is optional but recommended. + +You can export variables in two ways via systemd. Either by creating an environment file with all the variables set in it: + +```sh +EnvironmentFile=/path/to/environment/file1 +EnvironmentFile=/path/to/environment/file2 +``` + + +Or you can add them directly to the service file under `[service]`: + +```sh +Environment="PORT=8123" +Environment="ANOTHERVALUE=/something/else" +``` +Exported variables can be used in Vapor using `Environment.get` + +```swift +let port = Environment.get("PORT") +``` + +## Start + +You can now load, enable, start, stop and restart your app by running the following as root. + +```sh +systemctl daemon-reload +systemctl enable hello +systemctl start hello +systemctl stop hello +systemctl restart hello +``` diff --git a/mkdocs.yml b/mkdocs.yml index fc3bab38..e905f532 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -23,7 +23,7 @@ theme: palette: primary: black accent: blue - + logo: assets/logo.png favicon: assets/favicon.png @@ -31,10 +31,10 @@ theme: - search.suggest - search.highlight -# Customization +# Customization extra: # Font - font: + font: text: Roboto Slab code: Source Code Pro @@ -74,14 +74,14 @@ plugins: material_alternate: true # Add the new languages here. DON'T CHANGE THE DEFAULT LANGUAGE languages: - en: + en: name: English build: true zh: name: 简体中文 site_name: Vapor 中文文档 build: true - nl: + nl: name: Nederlands site_name: Vapor Documentatie build: true @@ -97,9 +97,9 @@ plugins: nav_translations: nl: Welcome: Welkom - fr: + fr: Welcome: Bienvenue - de: + de: Welcome: Willkommen zh: Welcome: 序言 @@ -210,6 +210,7 @@ nav: - DigitalOcean: "deploy/digital-ocean.md" - Heroku: "deploy/heroku.md" - Supervisor: "deploy/supervisor.md" + - Systemd: "deploy/systemd.md" - Nginx: "deploy/nginx.md" - Docker: "deploy/docker.md" - Version (4.0):