CGI: пишем простой сайт на Python. Часть 4: Публикация в сети Интернет

В первых трёх частях мы написали более-менее работающее приложение и запустили его на локальном сервере.

Остаётся самый важный вопрос: "Как это заставить работать на сайте"? На него я постараюсь дать ответ в четвёртой части.

Для наших приложений обычный хостинг не подойдёт, поэтому нужен виртуальный сервер.

Для тестирования нашего приложения желателен тестовый период, поэтому для тестового приложения я остановился на виртуальном сервере от IHC.

Регистрируемся по ссылке выше и заказываем трёхдневный тестовый период.

Создаём виртуальный сервер с операционной системой Ubuntu 14.10 (Utopic Unicorn) 64-bit (так как она удобнее всего в обращении).

Заходим на созданный виртуальный сервер по SSH (это можно сделать через консоль в linux, или через программу PUTTY для Windows) (логин - ubuntu, пароль - какой задали, сервер - ip сервера, который вам выдали. У меня это 176.103.149.168).

Теперь нам нужно установить программы, которые позволят нам запустить cgi на виртуальном сервере.

sudo apt-get install nginx fcgiwrap
sudo apt-get install mc
sudo mcedit /etc/nginx/sites-enabled/default

Мы открыли на редактирование файл default с конфигурацией нашего сервера.

Покажу, что в итоге должно остаться:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    charset utf-8;
    root /home/ubuntu/www;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }

    location /cgi-bin/ {
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /home/ubuntu/www$fastcgi_script_name;
    }
}

Создаём директорию, в которой будут храниться файлы (собственно, в файле конфигурации мы указали /home/ubuntu/www):

mkdir /home/ubuntu/www

Заходим по FTP (это можно сделать с помощью программ WinSCP, FileZilla, Total Commander, файлового менеджера Nautilus в linux и других программ).

Копируем в созданную папку файлы из примеров (я скопирую из этого примера).

В form.py в начале файла (но после строчки #!/usr/bin/env python3) дописываем:

import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())

Иначе кириллица не заработает.

Всё. Осталось поменять права:

cd /home/ubuntu/www
chmod 644 index.html
chmod 755 cgi-bin/form.py
sudo service nginx restart
sudo service fcgiwrap restart

И наслаждаться (до тех пор, пока не кончится тестовый период).

А когда кончится, можно остаться на IHC, перейти на digitalocean (подороже, но меня ни разу не подводил) или firstvds (дешево и сердито).

Для вставки кода на Python в комментарий заключайте его в теги <pre><code class="python3">Ваш код</code></pre>
Опечатка в тексте:
Послать сообщение об ошибке автору?