mirror of
https://github.com/etesync/server
synced 2024-12-29 10:48:07 +00:00
Add example config for using using nginx with uwsgi
This commit is contained in:
parent
8f50a69b39
commit
3f6dd74e33
15
example-configs/nginx-uwsgi/etesync.ini
Normal file
15
example-configs/nginx-uwsgi/etesync.ini
Normal file
@ -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
|
30
example-configs/nginx-uwsgi/my.server.name.conf
Normal file
30
example-configs/nginx-uwsgi/my.server.name.conf
Normal file
@ -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
|
20
example-configs/nginx-uwsgi/readme.md
Normal file
20
example-configs/nginx-uwsgi/readme.md
Normal file
@ -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.
|
15
example-configs/nginx-uwsgi/uwsgi.service
Normal file
15
example-configs/nginx-uwsgi/uwsgi.service
Normal file
@ -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
Block a user