Настройка ubuntu для сервера Nginx (python3.8)

1. Установка Python3.8 (не на замену основному)


скачивание архива
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
распаковка
tar xzf Python-3.8.0.tgz
установка зависимостей для сборки из бинарников:
sapt-get install build-essential checkinstall
apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev \
    libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev \
zlib1g-dev
установка Python3.8 в систему
cd Python-3.8.0
sudo ./configure --enable-optimizations
sudo make altinstall

2. Установка uwsgi

uwsgi необходим для обработки питоном запросов на сервер. Устанавливается он так:
python3.8 -m pip install --upgrade pip
python3.8 -m pip install uwsgi
Проверить работоспособность uwsgi можно следующим образом: создаётся файл test.py
# test.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"allo, eba, eto ti?"] # python3
    #return ["allo, eba, eto ti?"] # python2
И выполняется команда:
uwsgi --http :8000 --wsgi-file test.py
Если uwsgi работает корректно, то браузером (или curl) можно получить ответ "allo,eba, eto ti?" по порту :8000

Конфиг для uwsgi и ofty (ofty_uwsgi.ini)
# ofty_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /zlab/dist/ofty
# Django's wsgi file
module          = ofty.wsgi:application
# the virtualenv (full path)
home            = /zlab/venv

env             = DJANGO_SETTINGS_MODULE=ofty.settings
env             = LANG=en_US.UTF-8

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe
socket          = 127.0.0.1:8001
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true
Конфиг для nginx и ofty (ofty_nginx.conf)
# ofty_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /zlab/dist/ofty
# Django's wsgi file
module          = ofty.wsgi:application
# the virtualenv (full path)
home            = /zlab/venv

env             = DJANGO_SETTINGS_MODULE=ofty.settings
env             = LANG=en_US.UTF-8

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe
socket          = 127.0.0.1:8001
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

3. Установка в автозапуск nginx+uwsgi

uwsgi может работать в режиме imperror (он тогда следит за конфигами и автоматически запускает приложения). Чтобы это произошло необходимо создать папки в /etc/uwsgi и "положить" туда файлы с конфигами

# create a directory for the vassals
sudo mkdir /etc/uwsgi
sudo mkdir /etc/uwsgi/vassals
# symlink from the default config directory to your config file
sudo ln -s /path/to/your/mysite/mysite_uwsgi.ini /etc/uwsgi/vassals/
# run the emperor
uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data
Проверить, что imperror работает можно командой:
uwsgi --emperor /etc/uwsgi/vassals --uid www-data  --gid www-data
После чего добавить его в автозапуск. Для этого в файл /etc/rc.local добавляется строка:
/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data --daemonize /var/log/uwsgi-emperor.log
Перед строкой exit 0.

Установка прав доступа на базу (и вообще на контент):

sudo chown www-data .

Комментарии

Популярные сообщения из этого блога

Сброс счётчика неудачных попыток входа

python: магические (dunder) методы