Skip to content

Hosting

Ruffina Koza edited this page Aug 17, 2019 · 2 revisions

Настройки хостинга для Граней Мира

О том, как настроить сам игровой сервер, расскажет README проекта. В этой статье описывается то, как сейчас работает сайт и веб-клиент.

Основные компоненты:

  • SSL-сертификат, выданный с помощью letsencrypt
  • nginx-сервер, с конфигурацией в /etc/nginx
  • cайт на Django CMS, запускаемый с помощью gunicorn
  • веб-клиент
  • прокси между telnet и websocket, websockify

nginx-сервер

При настройке с нуля надо сперва установить nginx:

sudo apt-get install nginx

Дефаултную конфигурацию (/etc/nginx/sites-available/default) менять не придется и после установки сертификата она будет выглядеть так:

server {
    listen              80;
    listen              [::]:80;
    return              301 https://$host$request_uri;
}

server {
    listen [::]:443 ssl default_server;           
    listen 443 ssl default_server;       
    ssl_certificate /etc/letsencrypt/live/planescape.su/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/planescape.su/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    return 444;
}

Конфигурацию для Django CMS и websockify необходимо создать в файле /etc/nginx/sites-available/planescape.su) и прилинковать из каталога /etc/nginx/sites-enabled. Итоговый файл после установки сертификата:

upstream websockify {
        server 127.0.0.1:4321;
}

server {

        server_name planescape.su;

        root /var/www/planescape.su;
        index index.html;

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/planescape.su/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/planescape.su/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

        location /static/ {
                root /home/django/planescape/;
                expires 30d;
        }

        location /media/ {
                root /home/django/planescape/;
                expires 30d;
        }

        location /robots.txt {
                alias /home/django/planescape/robots.txt;
        }
        location /mudjs/ {
                root /var/www/planescape.su/;
        }

        location /mudjs-ws {
            proxy_pass http://websockify;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_read_timeout 86400;
            proxy_send_timeout 86400;
        }

        location / {
                proxy_pass_header Server;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Scheme $scheme;
                proxy_connect_timeout 10;
                proxy_read_timeout 10;
                proxy_pass http://localhost:8000/;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto https;  # <-
        }

}

server {
    if ($host = planescape.su) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80;
        listen [::]:80;
    server_name planescape.su;
    return 404; # managed by Certbot
}

SSL-сертификат

Для установки certbot с нуля понадобится инструкция с официального сайта.

Чтобы получить новый сертификат и отредактировать конфигурацию nginx:

sudo certbot --nginx

Для добавления нового домена в существующий сертификат:

sudo certbot certonly --nginx --cert-name planescape.su -d planescape.su,ps.virtustan.tk

Веб-клиент

Веб-клиент для Граней Мира является форком клиента mudjs.

Websockify

Clone this wiki locally