Skip to content

Asennus tuotantoserverille

Samu Nuutamo edited this page Feb 2, 2015 · 8 revisions

Ohjelmien asennus

Pakettien asennus

# asennetaan peruspaketit
sudo aptitude install nginx git postgresql python-virtualenv uwsgi uwsgi-plugin-python

# asennetaan pip installin vaatimat jutut
sudo aptitude install python-dev libffi-dev libpq-dev

Käyttäjien ja ryhmien luominen

sudo adduser bottle

# lisätään käyttäjätunnus "bottle" ryhmään "www-data"
sudo usermod -a -G www-data bottle

# luodaan postgresiin käyttäjätunnus "bottle" oikeuksilla createdb, createrole, no-superuser
sudo -u postgres createuser -d -r -S bottle

Sivuston asennus

# vaihdetaan ensin bottle-käyttäjäksi
sudo -u bottle bash

# kloonataan roinat kotihakemistoon
git clone https://github.com/spktklr/kansalaisrajoite.git

# luodaan tietokanta
createdb kansalaisrajoite
psql kansalaisrajoite < kansalaisrajoite/db/create.sql
psql kansalaisrajoite < kansalaisrajoite/db/populate.sql

# luodaan python virtualenv ja asennetaan sinne tarvittavat kirjastot
mkdir python-env
virtualenv python-env
. python-env/bin/activate
pip install -r kansalaisrajoite/python/requirements.txt

SEO-proxyn asennus

# asennetaan node
sudo aptitude install node node-legacy

# asennetaan npm
curl https://www.npmjs.com/install.sh | sudo sh

# asennetaan phantomjs
sudo npm install -g phantomjs

# vaihdetaan bottle-käyttäjäksi
sudo -u bottle bash

# kloonataan seo-proxy kotihakemistoon
git clone https://github.com/carbn/escaped-fragment-proxy

Palvelinten konfigurointi

uwsgi

# cat /etc/uwsgi/apps-enabled/kansalaisrajoite.ini 
[uwsgi]
socket = /run/uwsgi/app/kansalaisrajoite/socket
virtualenv = /home/bottle/python-env
chdir = /home/bottle/kansalaisrajoite/python
master = true
plugins = python
file = main.py
uid = bottle
gid = www-data

# cat /etc/uwsgi/apps-enabled/escaped-fragment-proxy.ini
[uwsgi]
socket = /run/uwsgi/app/escaped-fragment-proxy/socket
virtualenv = /home/bottle/python-env
chdir = /home/bottle/escaped-fragment-proxy
file = app.py
callable = app
master = false
processes = 1
enable-threads = true
uid = bottle
gid = www-data

nginx

# cat nginx/sites-enabled/kansalaisrajoite 
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

server {
        listen 443 ssl default deferred;
        server_name kansalaisrajoite.fi www.kansalaisrajoite.fi;

        ssl_certificate /etc/nginx/certs/ssl.crt;
        ssl_certificate_key /etc/nginx/certs/key.pem;

        ssl_session_cache shared:SSL:50m;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

        root /home/bottle/kansalaisrajoite/static;

        location / {
                include uwsgi_params;

                if ($args ~* _escaped_fragment_) {
                        uwsgi_pass unix:/run/uwsgi/app/escaped-fragment-proxy/socket;
                        break;
                }

                try_files $uri $uri/index.html @uwsgi;
        }

        location @uwsgi {
                include uwsgi_params;
                uwsgi_pass unix:/run/uwsgi/app/kansalaisrajoite/socket;
        }
}

server {
        listen 80;
        server_name kansalaisrajoite.fi www.kansalaisrajoite.fi;
        rewrite ^ https://$host$request_uri permanent;
}

exim4

Koska sivuston tulee pystyä lähettämään emailia, täytyy exim4 konfiguroida uudelleen.

dpkg-reconfigure exim4-config

Olennaiset asetukset:

  • Aseta tyypiksi "internet site"
  • Ellei tarkoitus ole vastaanottaa emailia, aseta daemon kuuntelemaan vain localhostia

Muita: