온라인 프로덕션 환경 배포 Djngao + Nginx에 + Uwsgi

혹시 윈도우에서 리눅스로 장고 프로젝트 마이그레이션을 실행 싶었다, 리눅스 성능은 물론 온라인 클라우드 환경은 리눅스 머신 장고 프로젝트를 실행하는 방법을 장고의 아주 적절한 친구를 실행하는 서버, 공유 오늘로 알려져 있습니다.

客户端访问服务端的流程
1.首先客户端请求服务资源, 
2.nginx作为直接对外的服务接口,接收到客户端发送过来的http请求,会解包分析。
3.如果是静态文件请求就根据nginx配置的静态文件目录,返回请求的资源,否则会根据django配置文件设置的static目录去找资源。
4.如果是动态的请求,nginx就通过配置文件,将请求传递给uwsgi;
5.uwsgi 将接收到的包进行处理,并转发给wsgi, wsgi根据请求调用django工程的某个文件或函数,处理完后,django将返回值交给wsgi, wsgi将返回值进行打包,转发给uwsgi,
6.uwsgi接收后转发给nginx,nginx最终将返回值返回给客户端(如浏览器)。

그 지식을 추가
1.wsgi 웹 서버 및 웹 프로그램 인터페이스 사이의 낮은 수준이다
2.uwsgi하는 계약을 uwsgi 할 수있는 웹 기반 인터페이스입니다, WSGI는, 단순히 uwsgi를 통해 파일에 대한 장고 웹 액세스 프로토콜 및 프로토콜 인 HTTP를

첫째, 환경을 준비

  1. 리눅스 서버
  2. Nginx의 패키지
  3. MySQL의 패키지
  4. 장고 프로젝트

둘째, 배포 환경
1. 리눅스는 파이썬을 설치해야합니다 프로젝트의 자신의 버전에 따라, 파이썬 설치

1.1安装相关依赖
냠 설치 ZLIB-(STABLE)의의 bzip2-(STABLE)하려면 openssl-(STABLE)의 ncurses-(STABLE) sqlite가-(STABLE)의 readline-(STABLE)의 TK-(STABLE)

1.2 컴파일 및 설치

cd /usr/local/
tar xf Python-3.5.1.tgz 
cd Python-3.5.1/
./configure --enable-optimizations
cd Python-3.5.1/
make && make install

1.3 파이썬 파일을 수정

mv /usr/bin/python /usr/bin/python2.7.5
ln -s /usr/local/bin/python3.5 /usr/bin/python
python -V   #这里输出是你编译版本就OK啦
Python 3.5.1

파이썬 파일에 개정, yum을 사용할 수 없으므로 1.4, 냠 구성 파일을 수정

vim /usr/bin/yum 
#!/usr/bin/python2.7.5   修改为之前移动的python文件

이 설치가 위의에 따라 수정 될 수 있기 때문에 일부 오류가 있습니다 얌

2. 모듈 설치

2.1 安装uwsgi模块
pip3 install uwsgi
2.2 安装pymysql模块
pip3 install pymysql
2.3 安装django
pip3 install django==2.0

3. 구성 파일이 장고 수정
데이터베이스에 연결되지 않습니다 카자흐스탄을 작성하지 않은 경우, 코드를 작성하여 프로젝트에 3.1 초기화 파일을

import pymysql
pymysql.install_as_MySQLdb()

3.2 설정 파일을 수정 setting.py

DEBUG = False    #这里需要改为False,不然程序报错,会在WEB页面显示出来
ALLOWED_HOSTS = ['IP']      #这里设置你允许哪些IP访问
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  #这是指连接数据库的驱动
        'NAME': 'xxxxx',                      #你的项目数据库名
        'USER': 'xxxxx',                       #连接数据库用户
        'PASSWORD': xxxxxxxxx',      #数据库密码
        'HOST': "xxxxxxxx",                 #主机
        'PORT': '3306',                         #端口
    }
}
TIME_ZONE = 'Asia/Shanghai'               #修改为中国区域
USE_TZ = False                                      #关闭
STATIC_ROOT= "/data/autoops/static"    #设置为你的静态目录

4. 컴파일하고 niginx을 설치
MySQL을 설치 5. 바이너리를
필요에 따라 지정된 디렉토리에 리눅스 서버에 6 업로드 장고 프로젝트 코드를
온라인 프로덕션 환경 배포 Djngao + Nginx에 + Uwsgi
(강조 7. 쓰기 uwsgi 파일, /data/autoops/script/uwsgi.ini 내 파일 )

[uwsgi]
# 项目目录
chdir=/data/autoops/
# 指定项目的application
module=autoops.wsgi:application
# 进程个数
workers=8
pidfile=/data/autoops/script/uwsgi.pid
# 指定IP端口
#http=192.168.10.155:8003    ##可以不启用,利用socket文件,如果只是测试,需要启用
# 指定静态文件目录
static-map=/static=/data/autoops/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/data/autoops/script/uwsgi.log
# 指定sock的文件路径
socket=/data/autoops/script/uwsgi.sock
die-on-term=true 

8.uwsgi 명령

uwsgi --reload uwsgi.pid  重启
uwsgi --stop uwsgi.pid 关闭
uwsgi --ini uwsgi.ini 启动

시작하기 전에 당신이 DEBUG가 꺼져 설정하는 경우 9. 당신이 관심을 지불 할 필요가, 당신이 장고 프로젝트에 파이썬 manage.py의 collectstatic을 실행해야합니다, 장고 프로젝트의 역할은 관련된 모든 정적 자원을 수집하는 것입니다, 통계는 STATIC_ROOT 관리를 넣어 당신이하지 않으면, 방문, 당신은 장고 프로젝트는 JS 스크립트, CSS 스타일을로드 할 수 없습니다 수 있습니다.
아래와 같이
온라인 프로덕션 환경 배포 Djngao + Nginx에 + Uwsgi

10. 초기화 ORM의 장고 프로젝트

   1. python manage.py makemigrations 把models.py里面的改动记录下来,记录到migrations文件夹下面
   2. python manage.py migrate   把改动翻译成SQL语句去数据库执行

11. Nginx의 구성 파일과 구문 시작 점검

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       你的端口号;
        server_name  公网IP;
        location / {
                include uwsgi_params;             
                uwsgi_connect_timeout 30;          
                uwsgi_pass unix:/data/autoops/script/uwsgi.sock;    #你的uwsgi.sock文件位置
        }
    }
}

12. 시작 uwsgi와의 nginx

[root@xxxxxxxxx08:56:29/data/autoops]# uwsgi --ini script/uwsgi.ini 
[uWSGI] getting INI configuration from script/uwsgi.ini
[uwsgi-static] added mapping for /static => /data/autoops/static

셋째, 테스트 액세스의 nginx
온라인 프로덕션 환경 배포 Djngao + Nginx에 + Uwsgi

요약 : 어려운 배포, 메모를 취할 필요 기사는 어떤 장소 그가 생각할 수있는 것을 말하지 않았다 설명 하, 다음 시간 점유율

추천

출처blog.51cto.com/beckoning/2422101