0 부터 Ubuntu 에 Django + uwsgi + nginx 배치

7395 단어
전체 설치 프로 세 스 설치 ubuntu, pip 설치, uwsgi 설치, django 설치 nginx 전체 요청 논리 사용자 접근 - > nginx - > uwsgi - > django 중 정적 파일 은 nginx 에서 직접 처리 합 니 다.
  • Ubuntu 를 설치 하여 다운로드 할 때 mini 버 전이 몇 십 메 가 밖 에 안 되 는 것 을 보고 mini 버 전 링크 를 선택 하여 이곳 에 설치 할 때 많은 것 을 뒤에서 다운로드 해 야 하지만 괜 찮 습 니 다. 설치 하면 됩 니 다
  • ssh server ssh server 를 설치 하면 다른 컴퓨터 에서 지원 하 는 명령 행 도구 (예 를 들 어 mac 아래 단말기, windows 아래 putty) 를 통 해 원 격 으로 연결 할 수 있 습 니 다. 그러면 기계 옆 을 지 키 지 않 아 도 됩 니 다. 제 가 설치 할 때 이 항목 을 빠 뜨 렸 습 니 다. 설 치 된 Ubuntu 는 ssh 서버 가 없 으 니 직접 설치 해 야 합 니 다. 설치 방법 은 다음 과 같 습 니 다.이미 있 으 면 건 너 뛰 기 (다른 컴퓨터 에서 ssh root @ 를 실행 할 수 있 습 니 다. 연결 이 거부 되 었 다 면 설치 되 지 않 았 음 을 표시 합 니 다)
  • sudo apt-get update
    sudo apt-get install openssh-server
    service ssh start
    
  • pip pip 를 설치 하 는 것 은 python 의 패키지 관리 도구 로 각종 python 의 제3자 도 구 를 편리 하 게 설치 할 수 있 습 니 다. iOS 가 개발 한 Cocoapod
  • 와 유사 합 니 다.
    curl -O https://bootstrap.pypa.io/get-pip.py 
    sudo python3 get-pip.py
    
  • pip 미 러 를 설정 합 니 다. 기본 서버 가 외국 에 있 기 때문에 방문 속도 가 정말 감동 적 입 니 다. 다행히 각종 국내 미 러 가 빠르게 방문 할 수 있 습 니 다. 여 기 는 청화대학 교 미 러 서비스
  • 를 사용 합 니 다.
    cd ~
    mkdir .pip
    cd .pip
    cat -e "[global]
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple" > pip.config
  • uwsgi 설치
  • python - dev 를 설치 하여 uwsgi 를 설치 하 는 과정 에서 컴 파일 이 필요 합 니 다. 먼저 python 개발 판
  • 을 설치 해 야 합 니 다.
    sudo apt-get install python3-dev
    
  • gcc 를 설치 하고 uwsgi 를 설치 하려 면 C 컴 파일 러 가 필요 하기 때문에 gcc
  • 를 설치 해 야 합 니 다.
    sudo apt-get install gcc
    
  • uwsgi 설치 모든 준비 가 완료 되면 uwsgi 를 설치 할 수 있 습 니 다
  • sudo pip3 install uwsgi
    

    정확 한 설치 여 부 를 확인 하기 위해 서 uwsgi --version 를 사용 할 수 있 습 니 다.
  • 테스트 uwsgi 테스트 테스트 테스트 내용 은 다음 과 같 습 니 다
  • # test.py
    def application(env, start_response):
        start_response('200 OK', [('Content-Type','text/html')])
        return [b"Hello World"]
    

    이 파일 의 디 렉 터 리 에서 명령 을 실행 합 니 다.
    uwsgi --http :8000 --wsgi-file test.py
    

    브 라 우 저 를 열 어 서버 의 ip 를 입력 하 십시오. 포트 8000 에서 hello 를 볼 수 있다 면 World 는 uwsgi 를 설치 하 는 데 성 공 했 습 니 다.
  • django 설치
  • sudo pip install django
    
  • 테스트 용 django 프로젝트 를 만 듭 니 다
  • django-admin startproject Hello
    

    현재 디 렉 터 리 구 조 는 이 럴 것 입 니 다.
    Hello/ 
        manage.py 
        Hello/ 
            __init__.py 
            settings.py 
            urls.py 
            wsgi.py
    
  • setting. py 를 편집 합 니 다. 1.10 이상 django (명령 실행 가능 django-admin --version 를 설치 하여 버 전 을 볼 수 있 습 니 다. 다른 컴퓨터 에서 페이지 를 봐 야 합 니 다. ALLOWED_HOSTS setting. py 의
  • 을 찾 아야 합 니 다.
    ...
    DEBUG = True
    ALLOWED_HOSTS = []
    ...
    

    ALLOWED 에서HOSTS 에 서버 의 ip 주 소 를 입력 합 니 다. 예 를 들 어
    ...
    DEBUG = True
    ALLOWED_HOSTS = ["192.168.1.5"]
    ...
    
  • django 내 장 된 서버 를 사용 하여 프로젝트 의 루트 디 렉 터 리 에서 명령 을 실행 하 는 지 테스트 합 니 다
  • python3 manage.py runserver
    

    이 명령 은 기본적으로 8000 포트 에 서버 를 실행 하고 이 컴퓨터 (서버) 의 요청 만 감청 합 니 다. 서버 이외 의 컴퓨터 에서 탐색 할 필요 가 있 으 면 이 명령 으로 변경 해 야 합 니 다.
    python3 manage.py runserver 0.0.0.0:8000
    

    브 라 우 저 에 서버 의 주 소 를 입력 하고 포트 를 추가 하면 테스트 페이지 를 볼 수 있 습 니 다. 그러나 이것 은 개발 용 테스트 서버 입 니 다. 실제 배치 항목 이 필요 하 다 면 이 서버 를 사용 하지 마 십시오.
  • 프로젝트 루트 디 렉 터 리 (manage. py 디 렉 터 리 있 음) 에서 uwsgi 테스트 Django 프로젝트 를 실행 합 니 다
  • uwsgi --http :8000 --module Hello.wsgi
    

    브 라 우 저 입력 서버 의 ip 를 엽 니 다. 포트 8000 django 테스트 페이지 를 볼 수 있다 면 django 와 uwsgi 가 정상적으로 작 동 하고 있 음 을 표시 합 니 다.
  • nginx 설치
  • sudo apt-get install nginx
    

    설치 가 완료 되면 nginx 서비스 가 자동 으로 열 립 니 다. 기본 포트 80, 브 라 우 저 를 열 고 서비스 주 소 를 입력 하면 nginx 테스트 페이지 를 볼 수 있 습 니 다.
  • nginx 를 설정 하려 면 먼저 uwsgiparams 파일 을 프로젝트 폴 더 에 복사 합 니 다. 복사 한 후 이 파일 은 수정 할 필요 가 없습니다. 원본 uwsgiparams 파일 은 / etc / nginx / 디 렉 터 리 에 nginx 프로필 을 새로 만 듭 니 다. Hellonginx. conf 내용 은 다음 과 같 습 니 다
  • upstream django {
            server 127.0.0.1:8001;
    }
    server {
            # the port your site will be served on
            listen      8000; #    
            # the domain name it will serve for
            server_name 10.0.9.176; #     ip     
            charset     utf-8;
        
            # Django media
            location /media  {
                alias /home/yww/djangotest/Hello/media; #          
            }
    
            location /static {
                alias /home/yww/djangotest/Hello/static; #          
            }
             # max upload size
            client_max_body_size 75M;   # adjust to taste
    
            # Finally, send all non-media requests to the Django server.
            location / {
                uwsgi_pass  django;
                include     /home/yww/djangotest/Hello/uwsgi_params; #uwsgi_params   
            }
    }
    

    이 프로필 은 nginx 에 게 파일 시스템 에서 media 와 static 파일 을 서비스 로 끌 어 올 리 는 동시에 django 의 request 에 응답 하여 / etc / nginx / sites - enabled 디 렉 터 리 에서 이 파일 의 연결 을 만 들 고 nginx 가 사용 할 수 있 도록 합 니 다.
    sudo ln -s /home/yww/djangotest/Hello/Hello_nginx.conf /etc/nginx/sites-enabled/
    
  • django 의 setting 파일 에 정적 파일 을 배치 하고 다음 줄 의 내용 을 추가 합 니 다.
  • STATIC_ROOT = os.path.join(BASE_DIR, "static/")
    

    그리고 실행
    python3 manage.py collectstatic
    
  • nginx 정적 파일 과 미디어 파일 서 비 스 를 테스트 하려 면 먼저 nginx 서 비 스 를 다시 시작 합 니 다.
  • service nginx restart
    

    정적 파일 이 http: / /: 8000 / static / admin / css / base. css 에 접근 할 수 있 는 지 확인 한 다음 미디어 파일 이 프로젝트 루트 디 렉 터 리 에 미디어 폴 더 를 정상적으로 새로 만 들 었 는 지 확인 하고 임의의 그림 을 넣 습 니 다. 이름 은 test. jpg 로 변경 하여 http: /: 8000 / media / test. jpg 에 접근 하여 그림 을 정상적으로 표시 하 는 지 확인 하 십시오.
  • 테스트 nginx + uwsgi 에서 6 단계 로 만 든 test. py 를 찾 아 Django 프로젝트 루트 디 렉 터 리 에 테스트 실행 명령
  • uwsgi --socket :8001 --wsgi-file test.py
    

    http: /: 8000 / hello 를 표시 할 수 있다 면 World 를 방문 하면 됩 니 다.
  • TCP port 대신 UNIX socket 대 Hellonginx. conf 는 다음 과 같이 수정 합 니 다
  • upstream django {
            #server 127.0.0.1:8001; #     
            server unix:///home/yww/djangotest/Hello/Hello.sock; #     
    }
    ...
    

    그리고 서버 를 다시 시작 하고 uWSGI 를 실행 합 니 다. 코드 는 다음 과 같 습 니 다.
    service nginx restart
    uwsgi --socket Hello.sock --wsgi-file test.py --chmod-socket=662
    
  • 테스트 nginx + uwsgi + django 는 uwsgi 만 시작 하면 됩 니 다. nginx 는 다시 시작 할 필요 가 없습니다
  • uwsgi --socket Hello.sock --module Hello.wsgi --chmod-socket=662
    

    http: /: 8000 / django 테스트 페이지 를 표시 할 수 있다 면 큰 성 과 를 거 두 었 습 니 다.
  • ini 파일 을 사용 하여 uwsgi 위의 명령 을 실행 하 는 것 은 너무 길 고 잘못 쓰기 도 쉽 습 니 다. uwsgi 를 실행 하기 위해 파일 을 쓸 수 있 습 니 다. 프로젝트 루트 디 렉 터 리 아래 Hello 를 만 들 수 있 습 니 다.uwsgi.ini
  • # Hello_uwsgi.ini file
    [uwsgi]
    # Django-related settings
    # the base directory (full path)
    chdir           = /home/yww/djangotest/Hello
    # Django's wsgi file
    module          = Hello.wsgi
    # process-related settings
    # master
    master          = true
    # maximum number of worker processes
    processes       = 10
    # the socket (use the full path to be safe)
    socket          = /home/yww/djangotest/Hello/Hello.sock
    chmod-socket    = 662
    # clear environment on exit
    vacuum          = true
    

    uwsgi 를 실행 할 때 이 명령 만 실행 하면 됩 니 다.
    uwsgi --ini Hello_uwsgi.ini
    

    좋은 웹페이지 즐겨찾기