Django 배포 상위 uwsgi+nginx+django

5032 단어
Python3 설치tar xf Python-3.7.1.tgz필요한 소프트웨어를 먼저 설치해야 합니다.
yum -y install gcc-c++
yum -y install zlib zlib-devel
yum -y install bzip2 bzip2-devel
yum -y install ncurses ncurses-devel
yum -y install readline readline-devel
yum -y install openssl openssl-devel
yum -y install openssl-static
yum -y install xz lzma xz-devel
yum -y install sqlite sqlite-devel
yum -y install gdbm gdbm-devel
yum -y install tk tk-devel
yum -y install libffi libffi-devel

그리고 나서./configure --prefix=/usr/local/python3 --enable-shared CFLAGS=-fPIC make && make install# 설치
보충: 여기--enable-shared와 -fpIC를 더하면python3의 동적 링크 라이브러리를 컴파일할 수 있습니다. 기본적으로lib 아래에 python3.xm.a만 있는 파일을 컴파일할 수 있습니다.
python 자체는 정상적으로 사용할 수 있지만 제3자 라이브러리를 컴파일할 때python 인터페이스, 예를 들어caffe 등이 필요하면 오류가 발생합니다.그래서 여기에는 위의 방식에 따라 배치하는 것을 권장합니다. 그리고 만약에
openssl은 시스템yum에 설치되지 않고 자신이 컴파일한 비교적 새로운 버전으로 --with-openssl=/usr/local/openssl 지정할 수 있습니다. 다음 디렉터리는
오픈스sl에 실제 설치된 디렉터리입니다. 또한 오픈스sl의lib 디렉터리를ld가 실행될 때 디렉터리에 추가하면 됩니다.
필요하시죠 동적 라이브러리를 시스템 파일에서 CP로 옮기면 됩니다cp libpython3.7m.so.1.0 /usr/lib64/설치가 끝난 후에 간단하게 설정을 해야 합니다:python 라이브러리 경로를 /etc/ld.so.conf 설정에 추가한 다음 ldconfig 실행을 실행합니다.$LD_LIBRARY_PATH에 추가하면 다음python3을 실행하면 라이브러리 파일을 찾을 수 없는 오류가 발생하지 않습니다.
시스템에 있는python은/usr/bin/python에 있습니다.ls-l을 통해python은 소프트 링크로 이 디렉터리에 있는python2에 연결됩니다.7
이것은 삭제하지 마십시오. 기본 환경을 수정하지 않고,python3의 소프트 링크만 새로 만들면 됩니다.python3 코드를 실행해야 할 때python을python3로 바꾸거나,python 스크립트 헤더 해석기를 #!/usr/bin/python3로 바꾸십시오.
여기에는 다음과 같은 소프트 링크가 있습니다.
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

이렇게 하면 만들어져서 앞으로python3 명령을 직접 실행하면python3을 호출할 수 있고pip3을 실행하면 필요한python3 모듈을 설치할 수 있다.또한python 설치 디렉터리에 있는bin 디렉터리를 자세히 보면 실제로python3도 소프트 링크로python3에 연결됩니다.5.1 이렇게 여러 번 링크하는 것도 여러 버전의 관리를 더욱 편리하게 하기 위해서이다
1. WSGI의 개념 해석
WSGI는 웹 서버(예를 들어nginx)와 응용 서버(예를 들어 uWSGI)가 통신하는 규범(프로토콜)이다.공식 정의는 the Python 웹 서버 Gateway
Interface.이름만 봐도 알 수 있듯이 이 물건은 게이트웨이, 즉 스위치다.게이트웨이의 역할은 프로토콜 간에 전환을 하는 것이다.
생산 환경에서python 웹 서버로 WSGI를 사용합니다.파이썬 웹 서버 인터페이스
.WSGI는 하나의 프로토콜과 비슷하기 때문에 이러한 프로토콜을 따르기만 하면 WSGI 응용 프로그램(Application)은 모든 서버(Server)에서 실행할 수 있다.
uWSGI
uWSGI는 WSGI의 모든 인터페이스를 실현하고 신속하고 자기 복구, 개발자와 시스템 관리자의 우호적인 서버이다.HTTP 프로토콜을 언어가 지원하는 네트워크 프로토콜로 바꿉니다.uWSGI 세대
코드는 완전히 C로 작성되어 효율이 높고 성능이 안정적이다.
uwsgi (주의: 여기는 소문자로 다른 것입니다. uWSGI와 다릅니다) uwsgi는 통신 프로토콜이 아니라 uWSGI 서버에서 다른 네트워크 서버와 데이터 통신에 자주 사용됩니다.uwsgi 프로토콜은 uWSGI 서버 자체의 프로토콜로 정의에 사용됩니다
정보를 전송하는 유형입니다.
요약: WSGI --> 게이트웨이, 인터페이스 uWSGI --> 일종의 서비스 uwsgi --> 회선 프로토콜
2. 부팅 정지 재부팅
uWSGI는 xxx.ini가 시작되면 같은 디렉터리에 xxx를 생성합니다.pid 파일, 한 줄만 uWSGI의 메인 프로세스의 프로세스 번호입니다.
시작: uwsgi --ini xxx.ini재부팅: uwsgi --reload xxx.pid중지: uwsgi --stop xxx.pidvim setting.py
ALLOWED_HOSTS = ['*']

vim uwsgi.ini
# uwsig        
[uwsgi]
#     
chdir=/data/www/
#      application
module=lyh_project.wsgi:application
#   sock            
socket=/tmp/django_uwsgi.sock
#            
workers=10
pidfile=/tmp/uwsgi.pid
#   IP         
http=0.0.0.0:8080
#       
static-map=/static=/data/www/hc/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=/var/log/django_uwsgi.log

vim nginx.conf
    server {
        listen 80;
        server_name 192.168.1.11;
        index index.php index.html;
        location / {
            include    uwsgi_params;
            uwsgi_pass  unix:/tmp/django_uwsgi.sock;
            uwsgi_param UWSGI_CHDIR  /data/www/lyh_project;
            uwsgi_param UWSGI_SCRIPT django_wsgi;
            access_log /var/log/nginx/access.log;
            }
        location /static {
          alias /data/www/hc/static;
        }
      }

nginx의 역방향 에이전트conf
    upstream hc {
               server 192.168.1.11:8001;
            }
    server {
        listen 8080;
        server_name localhost;
        index index.php index.html;
        location / {   
            include    uwsgi_params;
            uwsgi_pass  unix:/tmp/django_uwsgi.sock;
            uwsgi_param UWSGI_CHDIR  /data/www/lyh_project;
            uwsgi_param UWSGI_SCRIPT django_wsgi;
            access_log /var/log/nginx/access.log;
            }
        location /static {
          alias /data/www/hc/static;
        }
      }
     server {
            listen 80;
            server_name localhsot;
            index index.php index.html;
            location / {
                    proxy_pass http://hc;
                    access_log /var/log/nginx/access_nginx.log;
                      }
         }

좋은 웹페이지 즐겨찾기