Add example config for using using nginx with uwsgi
parent
38e0700ac0
commit
b9f20d251a
@ -0,0 +1,15 @@
|
||||
# uwsgi configuration file
|
||||
# typical location of this file would be /etc/uwsgi/sites/etesync.ini
|
||||
|
||||
[uwsgi]
|
||||
socket = /path/to/etesync_server.sock
|
||||
chown-socket = EtesyncUser:www-data
|
||||
chmod-socket = 660
|
||||
vacuum = true
|
||||
|
||||
|
||||
uid = EtesyncUser
|
||||
chdir = /path/to/etesync
|
||||
home = %(chdir)/.venv
|
||||
module = etesync_server.wsgi
|
||||
master = true
|
@ -0,0 +1,30 @@
|
||||
# nginx configuration for etesync server running on https://my.server.name
|
||||
# typical location of this file would be /etc/nginx/sites-available/my.server.name.conf
|
||||
|
||||
server {
|
||||
server_name my.server.name;
|
||||
|
||||
root /srv/http/etesync_server;
|
||||
|
||||
client_max_body_size 5M;
|
||||
|
||||
location /static {
|
||||
expires 1y;
|
||||
try_files $uri $uri/ =404;
|
||||
}
|
||||
|
||||
location / {
|
||||
uwsgi_pass unix:/path/to/etesync_server.sock;
|
||||
include uwsgi_params;
|
||||
}
|
||||
|
||||
# change 443 to say 9443 to run on a non standard port
|
||||
listen 443 ssl;
|
||||
listen [::]:443 ssl;
|
||||
# Enable these two instead of the two above if your nginx supports http2
|
||||
# listen 443 ssl http2;
|
||||
# listen [::]:443 ssl http2;
|
||||
|
||||
ssl_certificate /path/to/certificate-file
|
||||
ssl_certificate_key /path/to/certificate-key-file
|
||||
# other ssl directives as needed
|
@ -0,0 +1,20 @@
|
||||
# Running `etesync` under `nginx` and `uwsgi`
|
||||
|
||||
This configuration assumes that etesync server has been installed in the home folder of a non privileged user
|
||||
called `EtesyncUser` following the instructions in <https://github.com/etesync/server-skeleton>. Also that static
|
||||
files have been collected at `/srv/http/etesync_server` by running the following commands:
|
||||
|
||||
sudo mkdir -p /srv/http/etesync_server/static
|
||||
sudo chown -R EtesyncUser /srv/http/etesync_server
|
||||
sudo su EtesyncUser
|
||||
cd /path/to/etesync
|
||||
ln -s /srv/http/etesync_server/static static
|
||||
./manage.py collectstatic
|
||||
|
||||
It is also assumed that `nginx` and `uwsgi` have been installed system wide by `root`, and that `nginx` is running as user/group `www-data`.
|
||||
|
||||
In this setup, `uwsgi` running as a `systemd` service as `root` creates a unix socket with read-write access
|
||||
to both `EtesyncUser` and `nginx`. It then drops its `root` privilege and runs `etesync` as `EtesyncUser`.
|
||||
|
||||
`nginx` listens on the `https` port (or a non standard port `https` port if desired), delivers static pages directly
|
||||
and for everything else, communicates with `etesync` over the unix socket.
|
@ -0,0 +1,15 @@
|
||||
# systemd unit for running uwsgi in emperor mode
|
||||
# typical location of this file would be /etc/systemd/system/uwsgi.service
|
||||
|
||||
[Unit]
|
||||
Description=uWSGI Emperor service
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
|
||||
Restart=always
|
||||
KillSignal=SIGQUIT
|
||||
Type=notify
|
||||
NotifyAccess=all
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
Loading…
Reference in New Issue