Django + uWSGI 최신 nginx 배치, 병행 향상

5043 단어
프로젝트 프로 세 스
  • 클 라 이언 트 접근 요청 을 nginx
  • 로 보 냅 니 다.
  • nginx 는 static 요청 을 직접 처리 하고 웹 socket 을 통 해 uWSGI
  • 에 동적 요청 을 전달 합 니 다.
  • uWSGI 는 받 은 가방 을 처리 하여 wgi
  • 에 게 전달 합 니 다.
  • wgi 는 요청 에 따라 django 프로젝트 의 함 수 를 호출 한 결과 wgi
  • 에 게 되 돌려 줍 니 다.
  • wgi 는 결 과 를 포장 하여 uWSGI
  • 에 게 전달 합 니 다.
  • uWSGI 는 가방 을 nginx
  • 에 게 다시 전달 합 니 다.
  • nginx 는 결 과 를 클 라 이언 트 에 게 되 돌려 줍 니 다
  • Django
    설치 하 다.
    diango 설치 패키지
  • django
  • django-cors-headers

  • 이 항목 에 필요 한 설치 패키지
  • librosa
  • soundfile
  • sklearn
  • ...

  • soundfile 참조 오류 가 발생 하면: OSError: sndfile library not found 솔 루 션 = > apt - get install libsndfile 1
    테스트
    python manage.py runserver 0.0.0.0:8000
    

    Django 사 이 트 를 정상적으로 방문 할 수 있 는 지 확인 하 세 요.정상적으로 접근 할 수 있 으 면 Django 프로젝트 가 성공 적 으로 구축 되 었 습 니 다.
    주: 본 논문 의 프로젝트 경 로 는 127.0.0.1:8000 이다.
    Virtualenv
    root@iZ8vb7ux6dyyb6a2jkpo2kZ:~# apt-get update
    root@iZ8vb7ux6dyyb6a2jkpo2kZ:~# apt-get install python3-pip
    root@iZ8vb7ux6dyyb6a2jkpo2kZ:~# pip3 install virtualenv
    root@iZ8vb7ux6dyyb6a2jkpo2kZ:~# mkdir vpservers
    root@iZ8vb7ux6dyyb6a2jkpo2kZ:~# cd vpserver
    root@iZ8vb7ux6dyyb6a2jkpo2kZ:~/vpserver# virtualenv -no-site-packages venv
    

    즉, 새로운 venv 환경 을 만 들 었 고 원래 시스템 의 Python 환경 과 가방 을 포함 하지 않 습 니 다.
    source venv/bin/activate
    

    새로운 환경 활성화, 새로운 여정 시작
    uWSGI
    설치 하 다.
    pip3 install uwsgi
    

    테스트
    새 test. py
    def application(env, start_response):
        start_response('200 OK', [('Content-Type','text/html')])
        return [b"Hello World"]
    

    python 3 시 return 은 b "xxx" 를 사용 해 야 합 니 다. 그렇지 않 으 면 테스트 할 때 빈 페이지 가 나타 나 고 "hello world" 가 표시 되 지 않 습 니 다.
    운행 하 다.
    uwsgi --http 0.0.0.0:8000 --wsgi-file test.py
    

    uwsgi 를 사용 하여 test. py 파일 을 실행 하고 http 모드, 포트 8000 을 사용 합 니 다.
    접근 /root/ai_security_platform, 페이지 에 "hello World" 가 나타 나 면 실행 에 성공 합 니 다.
    Django + uWSGI
    uwsgi --http 0.0.0.0:8000 --chdir /root/ai_security_platform --wsgi speaker_recognition.wsgi
    

    -- chdir 지정 작업 경로 -- wsgi 지정 wsgi 파일, 그 중 speakerrecognition. wsgi 는 speakerrecognition 폴 더 의 wsgi. py 파일
    접근 127.0.0.1:8000, 성공 적 인 접근 은 django + uWSGI 연결 성공 을 표시 합 니 다.
    Nginx
    설치 하 다.
    apt-get install nginx
    

    배치 하 다.
    인터넷 의 많은 튜 토리 얼 에서 nginx. conf 는 새 버 전에 서 삭제 되 었 습 니 다.
    이 파일 의 설정 수정 127.0.0.1:8000:
    vim /etc/nginx/sites-available/default
    
    # default    :
    upstream django {
            server 127.0.0.1:8001;  #web socket  
    }
    
    server {
            listen 8000 default_server;
            listen [::]:8000 default_server;
    
            # root /var/www/html;
    
            # Add index.php to the list if you are using PHP
            index index.html index.htm index.nginx-debian.html;
    
            server_name _;
    
            location / {
                    # First attempt to serve request as file, then
                    # as directory, then fall back to displaying a 404.
                    root /root/ai_security_platform;
                    uwsgi_pass django;
                    include /root/ai_security_platform/speaker_recognition/uwsgi_params;
    
            }
    }
    

    테스트
    nginx
    

    nginx 서 비 스 를 시작 합 니 다. 포트 가 점용 되면 포트 를 풀 거나 바 꾸 어 열 었 습 니 다. 브 라 우 저 는 ip: port 를 방문 합 니 다. /etc/nginx/sites-available/default 가 나타 나 면 성공 적 으로 시작 되 었 음 을 설명 합 니 다. 웹 의 socket 포트 가 설정 되 지 않 았 기 때문에 502 Bad Gateway 오류 가 발생 했 습 니 다.
    nginx + uWSGI
    test. py 를 사용 하여 테스트 실행
    uwsgi --socket :8001 --wsgi-file test.py
    

    다른 것 은 이번 테스트 가 실 행 된 명령 에서 http 는 -- socket 으로 바 뀌 었 고 포트 는 위 에 nginx 를 설정 한 웹 socket 포트 8001 로 바 뀌 었 습 니 다.
    이전 섹 션 에서 nginx 를 시작 하 는 페이지 에 접근 하면 502 연결 이 성공 합 니 다.
    nginx + uWSGI + Django
    uwsgi --socket :8001 --chdir /root/ai_security_platform --wsgi speaker_recognition.wsgi
    

    ip: port 에 접근 하면 django 프로젝트 에 성공 적 으로 접근 하면 연결 이 성공 합 니 다.
    프로필 화
    프로젝트 에 uwsgi 설정 파일 uwsgi. ini 추가:
    [uwsgi]
    socket = 127.0.0.1:8001
    chdir = /root/ai_security_platform/
    module = speaker_recognition.wsgi
    master = true
    processes = 2
    threads = 2
    max-requests = 2000
    chmod-socket = 664
    vacuum = true
    daemonize = /root/ai_security_platform/log/uwsgi.log
    
  • 502 nginx 에 설 치 된 socket 포트 와 일치 합 니 다
  • chdir 는 프로젝트 파일 경로
  • module 은 프로젝트 의 wsgi 경로, speakerrecognition. wsgi 표시 speakerrecognition 폴 더 아래 wsgi. py 파일
  • daemonize 는 배경 에서 실행 되 고 log 출력 파일
  • 을 지정 합 니 다.
    실행:
    uwsgi --ini uwsgi.ini
    

    nginx 설정 주 소 를 방문 하고 django 프로젝트 사 이 트 를 정상적으로 방문 하면 연결 이 성공 합 니 다.
    흔 한 문제
  • Nginx : worker-connections are not enough. Solution: hello world
  • events {
        worker_connections  2048;
    }
    

    좋은 웹페이지 즐겨찾기