diff options
Diffstat (limited to 'extra/deployment')
-rw-r--r-- | extra/deployment/collectd_statsd.conf | 22 | ||||
-rw-r--r-- | extra/deployment/nginx_fatcat-api | 39 | ||||
-rw-r--r-- | extra/deployment/nginx_fatcat-web | 35 | ||||
-rw-r--r-- | extra/deployment/systemd_fatcat-web.service | 16 | ||||
-rw-r--r-- | extra/deployment/uwsgi_fatcat-web.sh | 16 |
5 files changed, 128 insertions, 0 deletions
diff --git a/extra/deployment/collectd_statsd.conf b/extra/deployment/collectd_statsd.conf new file mode 100644 index 00000000..a434ed9f --- /dev/null +++ b/extra/deployment/collectd_statsd.conf @@ -0,0 +1,22 @@ + +# This configures collectd to accept statsd metrics. They will end up under, +# eg, <hostname>.statsd.derive-*. On a local machine they can be viewed with, +# eg, kcollectd, which is helpful for basic debugging of metrics. +# +# To use, copy this file to, eg: /etc/collectd/collectd.conf.d/fatcat_statsd.conf +# then restart collectd: sudo service collectd restart + +LoadPlugin statsd + +<Plugin statsd> + Host "127.0.0.1" + #Host "::1" + Port "8125" + DeleteSets true + DeleteCounters true + DeleteTimers true + DeleteGauges true + + TimerCount true + #CounterSum false +</Plugin> diff --git a/extra/deployment/nginx_fatcat-api b/extra/deployment/nginx_fatcat-api new file mode 100644 index 00000000..13c1da99 --- /dev/null +++ b/extra/deployment/nginx_fatcat-api @@ -0,0 +1,39 @@ + +upstream fatcatd { + server localhost:9411; +} + +server { + listen 80; + listen [::]:80; + listen 443 ssl spdy; + listen [::]:443 ssl spdy; + server_name api.fatcat.wiki; + + ssl_certificate /etc/letsencrypt/live/fatcat.wiki/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/fatcat.wiki/privkey.pem; + + #add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'"; + add_header X-Frame-Options "SAMEORIGIN"; # 'always' if nginx > 1.7.5 + add_header X-Content-Type-Options "nosniff"; # 'always' if nginx > 1.7.5 + add_header X-Xss-Protection "1"; + # Enable STS with one year period (breaks http; optional) + #add_header Strict-Transport-Security "max-age=31557600; includeSubDomains"; + + access_log /var/log/nginx/access.log; + + location / { + root /srv/http/default/www/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_redirect off; + proxy_pass http://fatcatd; + } + + # Let's Encrypt SSL Certs + location /.well-known/acme-challenge/ { + root /var/www/letsencrypt; + autoindex off; + } +} diff --git a/extra/deployment/nginx_fatcat-web b/extra/deployment/nginx_fatcat-web new file mode 100644 index 00000000..7909b0be --- /dev/null +++ b/extra/deployment/nginx_fatcat-web @@ -0,0 +1,35 @@ + +server { + listen 80; + listen [::]:80; + listen 443 ssl spdy; + listen [::]:443 ssl spdy; + server_name fatcat.wiki www.fatcat.wiki; + + ssl_certificate /etc/letsencrypt/live/fatcat.wiki/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/fatcat.wiki/privkey.pem; + + #add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'"; + add_header X-Frame-Options "SAMEORIGIN"; # 'always' if nginx > 1.7.5 + add_header X-Content-Type-Options "nosniff"; # 'always' if nginx > 1.7.5 + add_header X-Xss-Protection "1"; + # Enable STS with one year period (breaks http; optional) + #add_header Strict-Transport-Security "max-age=31557600; includeSubDomains"; + + access_log /var/log/nginx/access.log; + + location / { + try_files $uri @fatcat-web; + } + + location @fatcat-web { + include uwsgi_params; + uwsgi_pass unix:/var/run/fatcat-web/uwsgi.sock; + } + + # Let's Encrypt SSL Certs + location /.well-known/acme-challenge/ { + root /var/www/letsencrypt; + autoindex off; + } +} diff --git a/extra/deployment/systemd_fatcat-web.service b/extra/deployment/systemd_fatcat-web.service new file mode 100644 index 00000000..ad8b2bec --- /dev/null +++ b/extra/deployment/systemd_fatcat-web.service @@ -0,0 +1,16 @@ +[Unit] +Description=fatcat web interface +# TODO: would add syslog.target here if we used it +After=network.target + +[Service] +WorkingDirectory=/srv/fatcat/src/python +SyslogIdentifier=fatcat-web +#Environment="TMPDIR=/run/grobid/tmp/" +# XXX: insert uwsgi_fatcat-web.sh here +ExecStart= +User=fatcat +Type=simple + +[Install] +WantedBy=multi-user.target diff --git a/extra/deployment/uwsgi_fatcat-web.sh b/extra/deployment/uwsgi_fatcat-web.sh new file mode 100644 index 00000000..112d7857 --- /dev/null +++ b/extra/deployment/uwsgi_fatcat-web.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -eu + +# sudo mkdir /var/run/fatcat-web +# sudo chown bnewbold:bnewbold /var/run/fatcat-web/ + +FATCAT_WEB_DIR=python +cd $FATCAT_WEB_DIR + +uwsgi \ + -s /var/run/fatcat-web/uwsgi.sock \ + --manage-script-name --mount \ + --plugin python3 \ + --virtualenv .venv \ + --mount /:fatcat:app |