Инструменты пользователя

Инструменты сайта


сайты:настройка_django_python3_uwsgi

Это старая версия документа!


Настройка Django+python3+uWSGI

Введение

Установка python 3.5 на Centos 7.x

yum install https://centos7.iuscommunity.org/ius-release.rpm -y
yum install python35u python35u-pip uwsgi-plugin-python35u gcc python35u-devel -y
 
pip3.5 install virtualenv
virtualenv -p python3.5 env
source env/bin/activate
pip install django
django-admin startproject mysite .
python manage.py migrate

Ставим uwsgi глобально

deactivate
 
yum install uwsgi uwsgi-logger-file uwsgi-plugin-python35u -y
usermod -a -G uwsgi nginx

Конфигурационные файлы

/home/user/web/www.example.net/uwsgi_params
uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;
/home/user/web/www.example.net/mysite_uwsgi.ini
#mysite_uwsgi.ini
[uwsgi]
 
# Настройки, связанные с Django
# Корневая папка проекта (полный путь)
chdir           = /home/user/web/www.example.net/mysite
# Django wsgi файл
module          = mysite.wsgi
# полный путь к виртуальному окружению
home            = /home/user/web/www.example.net/env
 
# общие настройки
# master
master          = true
# максимальное количество процессов
processes       = 3
# полный путь к файлу сокета
socket          = /tmp/uwsgi.sock
# права доступа к файлу сокета
 chmod-socket    = 664
# очищать окружение от служебных файлов uwsgi по завершению
vacuum          = true
 
logger = file:/home/user/web/www.example.net/logs/uwsgi.log
 
plugins = python35u,logfile
Чтобы uwsgi смог загрузить настройки вассалов
chown uwsgi: mysite_uwsgi.ini
Ссылки для каждого вассала
ln -s /home/user/web/www.example.net/mysite/mysite_uwsgi.ini /etc/uwsgi.d/mysite.ru.ini

Финальные настройки приложения

добавить имя хоста в секцию ALLOWED_HOSTS в файле settings.py

Дополнение к VestaCP

Apache не используется для него создадим пустой файл-шаболон с переводом строки
Nginx - шаблоны
/usr/local/vesta/data/templates/web/nginx/uwsgi-django.tpl
upstream django_%domain_idn% {
    server unix://run/uwsgi/%domain%.sock; # взаимодействие с uwsgi через Unix-сокет
}

# конфигурация веб-сервера
server {
    listen      %ip%:%proxy_port%;
    server_name    %domain_idn% %alias_idn%;
    charset     utf-8;

    error_log   %home%/%user%/web/%domain%/logs/error.log  debug;
    access_log  %home%/%user%/web/%domain%/logs/access.log combined;

    # максимальный размер загружаемых на сервер данных
    client_max_body_size 75M;

    # обслуживание медиа файлов и статики
    location /media  {
        alias %home%/%user%/web/%domain%/mysite/media;
    }

    location /static {
        alias %home%/%user%/web/%domain%/mysite/static;
    }


    location ~ /\.ht    {return 404;}
    location ~ /\.svn/  {return 404;}
    location ~ /\.git/  {return 404;}
    location ~ /\.hg/   {return 404;}
    location ~ /\.bzr/  {return 404;}



    # Остальные запросы перенаправляются в Django приложение
    location / {
        uwsgi_pass  django_%domain_idn%;
        include     %home%/%user%/web/%domain%/mysite/uwsgi_params;
    }
}
/usr/local/vesta/data/templates/web/nginx/uwsgi-django.sh
#!/bin/bash
# Changing public_html permission
user="$1"
domain="$2"
ip="$3"
home_dir="$4"
docroot="$5"


chmod 755 $docroot

domain_dir=$home_dir/$user/web/$domain

#$docroot==public_html
cd $domain_dir

virtualenv -p python3.5 env
source env/bin/activate
pip install django

mkdir mysite

django-admin startproject mysite mysite
python3.5 mysite/manage.py migrate

mkdir mysite/media
mkdir mysite/static


text='uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;'

echo "$text" > mysite/uwsgi_params

text1="
[uwsgi]

chdir           = $domain_dir/mysite
# Django wsgi файл
module          = mysite.wsgi
# полный путь к виртуальному окружению
home            = $domain_dir/env

# общие настройки
# master
master          = true
# максимальное количество процессов
processes       = 3
# полный путь к файлу сокета
socket          = /run/uwsgi/$domain.sock
# права доступа к файлу сокета
 chmod-socket    = 664
# очищать окружение от служебных файлов uwsgi по завершению
 vacuum          = true
 
logger = file:$domain_dir/logs/uwsgi.log
plugins = python35u,logfile
"

echo "$text1" > mysite/mysite_uwsgi.ini

chown uwsgi: $home_dir/$user/web/$domain/mysite/mysite_uwsgi.ini
ln -s  $home_dir/$user/web/$domain/mysite/mysite_uwsgi.ini /etc/uwsgi.d/$domain.ini

deactivate

exit 0
Пакет для Django сайта
/usr/local/vesta/data/packages/DjangoSite.pkg
WEB_TEMPLATE='empty'
BACKEND_TEMPLATE=
PROXY_TEMPLATE='uwsgi-django'
DNS_TEMPLATE='default'
WEB_DOMAINS='unlimited'
WEB_ALIASES='unlimited'
DNS_DOMAINS='unlimited'
DNS_RECORDS='1'
MAIL_DOMAINS='1'
MAIL_ACCOUNTS='1'
DATABASES='unlimited'
CRON_JOBS='unlimited'
DISK_QUOTA='1000'
BANDWIDTH='1000'
NS='ns1.example.ltd,ns2.example.ltd'
SHELL='nologin'
BACKUPS='1'
TIME='13:30:25'
DATE='2017-05-11'
сайты/настройка_django_python3_uwsgi.1495446232.txt.gz · Последнее изменение: 2017.05.22 09:43 — admin