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 (дешево и сердито).