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

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


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

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
сайты:настройка_django_python3_uwsgi [2020.12.20 19:04] feserсайты:настройка_django_python3_uwsgi [2024.01.29 11:11] (текущий) feser
Строка 2: Строка 2:
  
 ===== Введение ===== ===== Введение =====
-  * python 3.5 из репозитория [[https://ius.io/|IUS]] 
   * python с виртуальным окружением   * python с виртуальным окружением
   * проекты поднимаются из-под uwsgi   * проекты поднимаются из-под uwsgi
-  * uwsgi стандартный из Centos +  * uwsgi стандартный из Debian 12
-  * написано по мотивам [[https://habrahabr.ru/post/226419/|Django на production. uWSGI + nginx. Подробное руководство]]+
  
-== Для загрузки большого дампа базы в phpmyadmin == +===== Ставим uwsgi из репозитория =====
-<code - php.ini>+
  
-post_max_size=20M +  apt install uwsgi uwsgi-plugin-python3 -y
-upload_max_filesize=20M +
-</code> +
- +
-===== Установка python 3.5 на Centos 7.x ===== +
- +
-<code bash> +
-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 +
-</code> +
-===== Ставим uwsgi глобально ===== +
- +
-<code bash> +
-deactivate +
- +
-yum install uwsgi uwsgi-logger-file uwsgi-plugin-python35u -y +
-usermod -a -G uwsgi nginx +
- +
-</code>+
  
 ===== Конфигурационные файлы ===== ===== Конфигурационные файлы =====
  
-<code - /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; +<code bash /etc/uwsgi/apps-available/myprodject.ini>
-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; +
-</code> +
- +
-<code bash /home/user/web/www.example.net/mysite_uwsgi.ini> +
-#mysite_uwsgi.ini+
 [uwsgi] [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 
-# Корневая папка проекта (полный путь) 
-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 
 </code> </code>
  
-== Чтобы uwsgi смог загрузить настройки вассалов == +<code - /etc/logrotate.d/uwsgi> 
-<code+"/var/log/uwsgi/app/*.log" { 
-chown uwsgi: mysite_uwsgi.ini +  copytruncate 
-</code> +  daily 
- +  rotate 5 
-== Ссылки для каждого вассала == +  compress 
-  ln -/home/user/web/www.example.net/mysite/mysite_uwsgi.ini /etc/uwsgi.d/mysite.ru.ini+  delaycompress 
 +  missingok 
 +  notifempty 
 +}
  
-== Ошибка MySQL server has gone away (error 2006) == 
-<code - /etc/my.cnf> 
-wait_timeout=50 # было 10 
 </code> </code>
  
Строка 106: Строка 42:
  
  
-===== Дополнение к VestaCP ===== 
- 
-== Apache не используется для него создадим пустой файл-шаболон с переводом строки == 
-<code - /usr/local/vesta/data/templates/web/httpd/empty.tpl> 
- 
- 
-</code> 
- 
-== Nginx - шаблоны == 
-<code - /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; 
-    } 
-} 
-</code> 
- 
-<code - /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 
-</code> 
- 
-== Пакет для Django сайта == 
-<code - /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' 
-</code> 
  
-==== Пакеты для Centos 8 === 
-[[http://linux-mirrors.fnal.gov/linux/centos/8/cloud/x86_64/openstack-ussuri/Packages/u/|linux-mirrors.fnal.gov]] 
сайты/настройка_django_python3_uwsgi.1608491058.txt.gz · Последнее изменение: 2020.12.20 19:04 — feser