24 часа чистой головы на VPS
Срок действия моего студенческого пакета GitHub истек более года назад, и у меня остались страницы GitHub для размещения моей веб-страницы. И только после создания веб-приложения, которое анализирует и перечисляет зависимости пакета Python, мне остро понадобился сервер. Я раскрутил сервер DigitalOcean и взломал учебные пособия по DO. Я подумал, почему бы не написать шаги где-нибудь. Я делаю это в основном потому, что знаю, что в конечном итоге я буду делать какие-то сумасшедшие вещи, и когда-нибудь в будущем мне самому понадобится учебник.
я использую
Ubuntu 14.04 LTS (из-за последней версии LTS с выскочкой)
nginx (потому что у apache2 слишком много конфигураций!)
Фласк (Джанго тяжелый, Фласк ❤)
uWSGI (потому что это работает, и я не очень понимаю, что это значит)
Приобретите VPS (виртуальный частный сервер) у DigitalOcean или Amazon AWS. Попробуйте поискать образовательные предложения, студенты получают первые месяцы бесплатно в обоих случаях. Выполните начальную настройку сервера и несколько обходных путей, если вы находитесь за прокси.
Теперь почти все шаги вперед взяты из оригинального учебника по DO, но я переписываю его, потому что в нем не акцентируются на распространенных ошибках, которые делают люди. Я не буду предлагать объяснения во всех местах, поэтому, пожалуйста, обращайтесь к оригинальному руководству по всем вашим вопросам.
Использование Python 3
Вы, вероятно, многое упускаете, если застряли с версией Python по умолчанию для Ubuntu — 2.7. См. Слайды Аарона Мёрера, чтобы немного мотивировать то, что я собираюсь узнать.
# Check the default Python's version ➜ python --version 2.7.12 # Check the location of the executable ➜ which python /usr/bin/python # Remove the executable and create a symbolic link of Python 3 ➜ sudo rm /usr/bin/python ➜ sudo ln -s /usr/bin/python3 /usr/bin/python # Peace ! ➜ python --version Python 3.5.2
Вы можете отменить шаги в любое время, удалив и создав символическую ссылку /usr/bin/python2.7
в том же месте.
Установка пипа
pip — это менеджер пакетов python для Python 2. pip3 — это менеджер пакетов python для Python 3.
➜ sudo apt-get install python3-pip
После установки pip3 создайте символическую ссылку pip3 как pip.
➜ which pip3 /usr/local/bin/pip3 ➜ sudo ln -s /usr/local/bin/pip3 /usr/local/bin/pip
Обратите внимание, что в этом руководстве я не буду использовать virtualenv. Это потому, что я лично никогда не чувствовал этого требования. Хотя это отличный инструмент и метод разработки.
Настройка приложения Flask
Если вы думаете, что изучать Python легко, попробуйте Flask! Если вы считаете, что код Python не может быть короче, попробуйте Flask! Если вы считаете, что веб-серверы и RESTful API не для новичков, попробуйте Flask!
Вот исходный код: https://github.com/OrkoHunter/orkohunter.net
Обратите внимание, что для настройки требуются только два файла: app.py
и wsgi.py
.
Установка и использование uwsgi
Некоторые установки
➜ sudo pip install uwsgi ➜ sudo pip install -r require
Перейдите в корень вашего проекта и запустите
uwsgi --socket 0.0.0.0:8000 --protocol=http -w wsgi
Попробуйте посетить http://<your_ip>:8000
, вы можете увидеть свой веб-сайт вживую. :)
В логах вышеуказанной команды можно найти несколько предупреждений и возможности улучшений. Ну, конечно, они нам нужны в долгосрочной перспективе.
Создайте файл конфигурации uWSGI myproject.ini
в корне проекта.
[uwsgi]
module = wsgi
master = true
processes = 5
socket = myproject.sock
chmod-socket = 666
vacuum = true
die-on-term = true
Опять же, обратитесь к оригинальному учебнику для объяснений. Но используйте 666
вместо 660
, иначе долго будете ломать голову. myproject.sock
— это файл сокета, который будет передавать запросы из внешнего мира нашему фляжному приложению. Мы будем использовать nginx
, который будет действовать как прокси для этого файла для большей мощности.
Использование выскочки
Upstart используется для запуска процессов при загрузке. Создайте и откройте /etc/init/myproject.conf
и напишите
description "uWSGI server instance configured to serve myproject" start on runlevel [2345] stop on runlevel [!2345]
respawn setuid user
chdir /home/user/myproject exec uwsgi --ini myproject.ini
--socket unix:orkohunter.net.sock
Замените user
и myproject
своим именем пользователя и названием проекта.
Попробуйте запустить
sudo start myproject
и это создаст процесс, и теперь будет создан файл сокета. Теперь нам нужен сервер, чтобы открыть сокет для порта 80
.
Nginx
Двигатель-Х
Установите nginx с помощью apt-get. Создайте и отредактируйте файл /etc/nginx/sites-available/myproject
. Добавьте в него следующие строки
server {
listen 80;
server_name server_domain_or_IP;
location / {
include uwsgi_params;
uwsgi_pass unix:/home/user/myproject/myproject.sock;
}
}
Вот и все. Создайте символическую ссылку на каталог sites-enabled
.
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
Проверьте синтаксис по sudo nginx -t
. Перезагрузите сервер
sudo nginx restart
На этом учебник DigitalOcean заканчивается, и ваш веб-сайт должен быть запущен. Но я хотел бы продолжить некоторые мои личные моменты.
Журналы
Вам нужно просматривать журналы для отладки. Хотя журналы nginx и upstart хранятся в /var/log/<dir>
, они не содержат ошибок, вызванных в приложении Flask. Откройте файл myproject.ini
и добавьте в него следующую строку
logto = /var/log/uwsgi/error.log
Теперь вы можете видеть журналы Python!
Переменные среды
Я фанатик с открытым исходным кодом и, следовательно, для конфиденциальности я объявляю секретные ключи переменными среды. Лучший способ объявить переменную среды — добавить ее в файл конфигурации Upstart. Откройте файл /etc/init/myproject.conf
и добавьте
env APP_SECRET_KEY="not so secret"
объявить переменную окружения APP_SECRET_KEY
. В Python вы можете использовать эту переменную как os.environ["APP_SECRET_KEY"]
.
Теперь вам нужно сделать
sudo restart myproject
Это все на данный момент. Ваше здоровье !