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

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


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

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
сайты:настройка_django_python3_uwsgi [2017.05.22 09:32] adminсайты:настройка_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. Подробное руководство]]+
  
-===== Установка python 3.5 на Centos 7.x =====+===== Ставим uwsgi из репозитория =====
  
-<code bash> +  apt install uwsgi uwsgi-plugin-python3 -y
-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 +<code bash /etc/uwsgi/apps-available/myprodject.ini>
-usermod -a -G uwsgi nginx +
- +
-</code+
- +
- +
-добавить имя хоста в секцию ALLOWED_HOSTS в файле settings.py  +
- +
-<code python mysite.wsgi> +
-import os, sys +
-sys.path.append('/home/user/web/www.example.net/'+
-os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' +
-from django.core.wsgi import get_wsgi_application +
-application = get_wsgi_application() +
-</code> +
- +
-<code 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; +
-</code> +
- +
-<code bash 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 -s /home/user/web/www.example.net/mysite/mysite_uwsgi.ini /etc/uwsgi.d/mysite.ru.ini +  delaycompress 
- +  missingok 
- +  notifempty
-===== Дополнение к VestaCP ===== +
- +
-== Apache не используется для него создадим пустой файл-шаболон с переводом строки == +
-/usr/local/vesta/data/templates/web/httpd/empty.tpl +
- +
-== 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%/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; 
-    } 
-} 
 </code> </code>
  
-<code - /usr/local/vesta/data/templates/web/nginx/uwsgi-django.sh> +===== Финальные настройки Django приложения ===== 
-#!/bin/bash +добавить имя хоста в секцию ALLOWED_HOSTS в файле settings.py 
-# 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 
-</code> 
сайты/настройка_django_python3_uwsgi.1495445548.txt.gz · Последнее изменение: 2017.05.22 09:32 — admin