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

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


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

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


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

Введение

  • python с виртуальным окружением
  • проекты поднимаются из-под uwsgi
  • uwsgi стандартный из Debian 12

Ставим uwsgi из репозитория

apt install uwsgi uuwsgi-plugin-python3 -y

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

/etc/uwsgi/apps-available/myprodject.ini
[uwsgi]
plugins       = python3
virtualenv    = /var/www/myprodject/env
chdir         = /var/www//myprodject/myprodject
env           = DJANGO_SETTINGS_MODULE=myprodject.settings
module        = django.core.wsgi:get_wsgi_application()
py-autoreload = 1

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

добавить имя хоста в секцию 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%/media;
    }

    location /static {
        alias %home%/%user%/web/%domain%/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 media
mkdir 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.1706524572.txt.gz · Последнее изменение: 2024.01.29 10:36 — feser