우분투 +의 nginx + uwsgi 배포 장고 프로젝트
머리말
장고의 배포가 윈도우에서 IIS 또는 Apache를 사용하는 방법은 여러 가지가있을 수있다, Nginx에가 될 수 있습니다.
의 nginx + uwsgi 방식을 사용하여 모든 요청이 가장 프런트 엔드 서버로 nginx를하고,보다 일반적인 방법 중 하나입니다, 그것은 WEB 통합 관리 요청을 받게됩니다. 자신의 손으로 모든 정적 요청을 nginx에. 그런 다음, nginx를 모든 요청은 장고에 비 정적 uwsgi 통과, 그것은 장고에 의해 처리됩니다, WEB는 요청을 완료합니다. 다리에 비슷한 효과를 Uwsgi 다리의 역할을한다.
지역 개발 장고 프로젝트는 우분투에 uwsgi 서버를 배포하고의 nginx를 구성, 라인에 장고의 nginx + uwsgi +에서 실행 완료합니다. 관련 절차의 다음 컴파일.
1 서버 구성 VIRTUALENV
직접 파이썬 런타임 환경을 사용하지 않으려면, 당신은 설치하고 서버의 가상 ENV를 구성해야합니다. 파이썬 환경의 직접 사용하는 경우이 단계를 건너 뛸 수 있습니다.
pip install virtualenv
pip install virtualenvwrapper
우리는 명령을 사용할 수 있도록 환경 변수를 구성해야합니다 :
다음을 추가, ~에서 .bash_profile을 만들기 :
수출 WORKON_HOME = $ 홈 / .virtualenvs
수출 PROJECT_HOME = $ HOME / 작업 공간
소스 /usr/local/bin/virtualenvwrapper.sh
그런 다음 명령을 실행 : 소스 ~ / .bash_profile에를
구성이 완료됩니다. 다음 명령을 사용합니다 :
mkvirtualenv # its_name 가상 ENV의 작성
its_name #이 (당신이 its_name를 지정하지 않은 경우)는 기존의 모든 ENV 나열하는 것입니다 낮은 ENV로 전환 workon을
현재 ENV가 비활성화 # 출구
rmvirtualenv을 its_name # 가상 ENV 삭제
2, 설치 종속성
첫째, 지역의 개발은 핍 종속성 목록을 보내야합니다.
pip freeze > plist.txt
서버 환경 및 종속 배치 설치에이 파일을 넣습니다.
workon [虚拟环境名称] pip install -r plist.txt -i https://mirrors.tuna.tsinghua.edu.cn # 这里使用
清华大学镜像源
安装
3, 장고 프로젝트를 수정
당신은 settings.py 파일을 수정해야 디버그 모드를 닫습니다.
DEBUG = False
ALLOW_HOSTS=['*','ipdress'] #加入访问服务器的ip
4 구성 uwsgi
설치 : uwsgi를 설치 PIP
루트 디렉토리에 필요한 장고 프로젝트 (manage.py와 같은 디렉토리), 새로운 uwsgi.ini 파일 구성을 쓰기 :
Myweb_uwsgi.ini 파일 #
[uwsgi]
소켓 = 8080 # 실제 서비스 포트,
# 장고 프로젝트 루트 디렉토리 (절대 경로)
= CHDIR / 홈 / 사용자 이름 / myweb 프로젝트에서 #의 wsgi.py 파일 위치 모듈 = myweb.wsgi = 마스터 실제 실행하려면 프로세스의 # 4 = 수 처리 = true로 진공使用nginx连接时,使用socket
uwsgi 명령으로 프로젝트를 시작 myweb_uwsgi.ini 파일을 읽고, myweb 디렉토리 아래 프로젝트로 전환합니다.
启动uwsgi : uwsgi --ini xxx.ini
关闭uwsgi : uwsgi --stop xxx.pid
무게启uwsgi : uwsgi --reload xxx.pid
상태를 시작합니다 :
[uWSGI] myweb_uwsgi.ini에서 INI 구성을 받고
*** 시작 uWSGI 2.0.12 (32 비트)에 [토 3월 12일 13시 5분 6초 2019] ***이
버전으로 컴파일 : 4.8.4 26 2016년 1월 6시 14분 : 41
운영 체제 : 리눅스 3.19.0-25 제네릭 # 26 ~ 14.04.1 - 우분투 SMP 금 7월 24일 세계 협정시 21시 18분 0초 2015
노드 이름 : 우분투
기계 :는 i686
클럭 소스 : 유닉스
감지 CPU 코어의 수 : 2
현재 작업 디렉토리 : / 홈 / fnngj / pydj / myweb는
바이너리 경로를 감지 : / usr / 지방 / 빈 / uwsgi
! 더 내부 라우팅 지원은 PCRE 지원 재 구축!
/ 가정 / fnngj / pydj / myweb에 CHDIR ()
귀하의 프로세스 번호 제한은 15962입니다
메모리 페이지 크기는 4096 바이트입니다
최대 파일 기술자 수를 감지 : 1024
강력한 뮤텍스는 pthread : 잠금 엔진
천둥 잠금 : 장애인 (당신이 --thunder-잠금을 활성화 할 수 있습니다)
TCP 주소에 바인딩 uwsgi 소켓 0 : 8000 FD 3
파이썬 버전 : 3.4.3 (기본 10 월 (14) 2015 년 20:37 : 06) [4.8.4 GCC]
*** 파이썬 스레드 지원이 비활성화됩니다. 당신은 *** --enable-스레드를 활성화 할 수 있습니다
0x8b52dc0 초기화 파이썬 주요 통역
백 로그 (100 개) 연결로 제한됩니다들을 서버 소켓
노동자 우아한 작업에 대한 당신의 자비은 60 초입니다
매핑 4 개 코어의 319,920 바이트 (312킬로바이트)
* ** 운영 모드 : ***는 preforking
통역 0x8b52dc0 PID의 1 초 WSGI 응용 프로그램 0 (마운트 포인트 = '') 준비 : 7158 (기본 응용 프로그램)
*** uWSGI 여러 인터프리터 모드에서 실행 ***
(PID : 7158)를 uWSGI 마스터 과정을 양산
(uWSGI 노동자 1을 양산 PID : 7160, 코어 : 1)
uWSGI 작업자 2 스폰 (: 7161, 코어 : PID 1)
uWSGI 작업자 3 (: 7162, 코어 1 PID) 스폰
uWSGI 작업자 4 스폰 (: 7163, 코어 : PID 1)
잘못이 있다면, 우리는 설정 파일이 잘못 설정의 매개 변수를 확인해야합니다보기 시작 정보 uwsgi를합니다.
5, 구성의 nginx
1, nginx를 설치 :
sudo apt install nginx
2, 디렉토리 구조 :
/ 등의 우분투 Nginx의 구성 파일 / nginx를 디렉토리, 주요 구성 파일 nginx.conf,
구성 파일 사이트-가능 / 다운 / 디렉토리에있는 fefault 포함 / 사이트 지원 / 링크 파일은 같은 이름을 가지고있다. Nginx에와 아파치 우분투 디렉토리 구조에서, 구성 파일은 기본적으로 동일합니다. )
3, Nginx에이 구성된다 :
cd /etc/nginx/sites-available
vim default
다음과 같이 할 수 있습니다 :
# 다음은 nginx.conf 서버에 제공하는 부분이다
서버 {
이 포트에 액세스하는 데 사용되는 #
80 듣고 ,
서버 _ 로컬 호스트가 ; . UTF-을 캐릭터 세트 (8) , 루트의 / var / WWW / HTML , 인덱스있는 index.html index.htm으로 debian.html - index.nginx ; # 파일 access_log가 로그 /var/log/nginx/access.log ;의 error_log /var/log/nginx/error.log , client_max_body_size의 75M ; #은 위치의 핵심 부분입니다 uwsgi 서비스 연결을 지정 / {는 uwsgi_params 포함 ; # uwsgi 같은 내용 127.0.0.1:8080 uwsgi_pass ; # 30 링크 타임 아웃 uwsgi_read_timeout을 ; } 정적 폴더 설정 # 소재지 / 정적 / {ON 자동 색인 , 별칭 / 홈 / 사용자 이름 / 장고 - 프로젝트 / 정적 /; } # 업로드 폴더 설정 위치 / 미디어 / {ON 자동 색인 , 별칭 / 홈 / 사용자 이름 / 장고 - 프로젝트 / 미디어 / ;
}
}
참고 : 내장 장고 관리 백엔드를 사용하는 경우 방법은 / 정적 구성 할 수 있도록 관리자 정적 디렉토리 장고 관리자 정적 디렉토리에서 다음 소스 또는 관리자 디렉토리 관리자가 프로젝트의 정적 디렉토리에 복사 / 액세스 할 수 없습니다 .
4, nginx를 서비스를 시작합니다.
nginx를 시작 : 서비스 nginx를 시작
가까이의 nginx를 : 서비스 nginx를 정지
다시 시작의 nginx를 : 서비스 nginx를 다시 시작
보기 상태 : 서비스의 nginx 상태를
浏览器访问http://localhost/ 可看到django项目已运行。
도 6은, 합산
- 테스트 장고 프로젝트, 정상적인 작동을 보장하기 위해;
- 설치 uwsgi, 장고 프로젝트 파일, 구성 uwsgi.ini는 uwsgi를 시작합니다;
- 의 nginx, 구성 nginx.conf를 설치, nginx를 시작합니다.
- 사용자의 권한 설정, 프로젝트 폴더, 폴더 권한 파일 및 데이터베이스 설정을 업로드 할 수 있습니다, 네트워크 사용자는 www가 데이터입니다.
머리말
장고의 배포가 윈도우에서 IIS 또는 Apache를 사용하는 방법은 여러 가지가있을 수있다, Nginx에가 될 수 있습니다.
의 nginx + uwsgi 방식을 사용하여 모든 요청이 가장 프런트 엔드 서버로 nginx를하고,보다 일반적인 방법 중 하나입니다, 그것은 WEB 통합 관리 요청을 받게됩니다. 자신의 손으로 모든 정적 요청을 nginx에. 그런 다음, nginx를 모든 요청은 장고에 비 정적 uwsgi 통과, 그것은 장고에 의해 처리됩니다, WEB는 요청을 완료합니다. 다리에 비슷한 효과를 Uwsgi 다리의 역할을한다.
지역 개발 장고 프로젝트는 우분투에 uwsgi 서버를 배포하고의 nginx를 구성, 라인에 장고의 nginx + uwsgi +에서 실행 완료합니다. 관련 절차의 다음 컴파일.
1 서버 구성 VIRTUALENV
직접 파이썬 런타임 환경을 사용하지 않으려면, 당신은 설치하고 서버의 가상 ENV를 구성해야합니다. 파이썬 환경의 직접 사용하는 경우이 단계를 건너 뛸 수 있습니다.
pip install virtualenv
pip install virtualenvwrapper
우리는 명령을 사용할 수 있도록 환경 변수를 구성해야합니다 :
다음을 추가, ~에서 .bash_profile을 만들기 :
수출 WORKON_HOME = $ 홈 / .virtualenvs
수출 PROJECT_HOME = $ HOME / 작업 공간
소스 /usr/local/bin/virtualenvwrapper.sh
그런 다음 명령을 실행 : 소스 ~ / .bash_profile에를
구성이 완료됩니다. 다음 명령을 사용합니다 :
mkvirtualenv # its_name 가상 ENV의 작성
its_name #이 (당신이 its_name를 지정하지 않은 경우)는 기존의 모든 ENV 나열하는 것입니다 낮은 ENV로 전환 workon을
현재 ENV가 비활성화 # 출구
rmvirtualenv을 its_name # 가상 ENV 삭제
2, 설치 종속성
첫째, 지역의 개발은 핍 종속성 목록을 보내야합니다.
pip freeze > plist.txt
서버 환경 및 종속 배치 설치에이 파일을 넣습니다.
workon [虚拟环境名称] pip install -r plist.txt -i https://mirrors.tuna.tsinghua.edu.cn # 这里使用
清华大学镜像源
安装
3, 장고 프로젝트를 수정
당신은 settings.py 파일을 수정해야 디버그 모드를 닫습니다.
DEBUG = False
ALLOW_HOSTS=['*','ipdress'] #加入访问服务器的ip
4 구성 uwsgi
설치 : uwsgi를 설치 PIP
루트 디렉토리에 필요한 장고 프로젝트 (manage.py와 같은 디렉토리), 새로운 uwsgi.ini 파일 구성을 쓰기 :
Myweb_uwsgi.ini 파일 #
[uwsgi]
소켓 = 8080 # 실제 서비스 포트,
# 장고 프로젝트 루트 디렉토리 (절대 경로)
= CHDIR / 홈 / 사용자 이름 / myweb 프로젝트에서 #의 wsgi.py 파일 위치 모듈 = myweb.wsgi = 마스터 실제 실행하려면 프로세스의 # 4 = 수 처리 = true로 진공使用nginx连接时,使用socket
uwsgi 명령으로 프로젝트를 시작 myweb_uwsgi.ini 파일을 읽고, myweb 디렉토리 아래 프로젝트로 전환합니다.
启动uwsgi : uwsgi --ini xxx.ini
关闭uwsgi : uwsgi --stop xxx.pid
무게启uwsgi : uwsgi --reload xxx.pid
상태를 시작합니다 :
[uWSGI] myweb_uwsgi.ini에서 INI 구성을 받고
*** 시작 uWSGI 2.0.12 (32 비트)에 [토 3월 12일 13시 5분 6초 2019] ***이
버전으로 컴파일 : 4.8.4 26 2016년 1월 6시 14분 : 41
운영 체제 : 리눅스 3.19.0-25 제네릭 # 26 ~ 14.04.1 - 우분투 SMP 금 7월 24일 세계 협정시 21시 18분 0초 2015
노드 이름 : 우분투
기계 :는 i686
클럭 소스 : 유닉스
감지 CPU 코어의 수 : 2
현재 작업 디렉토리 : / 홈 / fnngj / pydj / myweb는
바이너리 경로를 감지 : / usr / 지방 / 빈 / uwsgi
! 더 내부 라우팅 지원은 PCRE 지원 재 구축!
/ 가정 / fnngj / pydj / myweb에 CHDIR ()
귀하의 프로세스 번호 제한은 15962입니다
메모리 페이지 크기는 4096 바이트입니다
최대 파일 기술자 수를 감지 : 1024
강력한 뮤텍스는 pthread : 잠금 엔진
천둥 잠금 : 장애인 (당신이 --thunder-잠금을 활성화 할 수 있습니다)
TCP 주소에 바인딩 uwsgi 소켓 0 : 8000 FD 3
파이썬 버전 : 3.4.3 (기본 10 월 (14) 2015 년 20:37 : 06) [4.8.4 GCC]
*** 파이썬 스레드 지원이 비활성화됩니다. 당신은 *** --enable-스레드를 활성화 할 수 있습니다
0x8b52dc0 초기화 파이썬 주요 통역
백 로그 (100 개) 연결로 제한됩니다들을 서버 소켓
노동자 우아한 작업에 대한 당신의 자비은 60 초입니다
매핑 4 개 코어의 319,920 바이트 (312킬로바이트)
* ** 운영 모드 : ***는 preforking
통역 0x8b52dc0 PID의 1 초 WSGI 응용 프로그램 0 (마운트 포인트 = '') 준비 : 7158 (기본 응용 프로그램)
*** uWSGI 여러 인터프리터 모드에서 실행 ***
(PID : 7158)를 uWSGI 마스터 과정을 양산
(uWSGI 노동자 1을 양산 PID : 7160, 코어 : 1)
스폰 uWSGI 작업자 2 (PID : 7161, 코어 1)
uWSGI 작업자 3 (: 7162, 코어 : PID 1) 스폰
uWSGI 작업자 4 스폰 (: 7163, 코어 : PID 1)
잘못이 있다면, 우리는 설정 파일이 잘못 설정의 매개 변수를 확인해야합니다보기 시작 정보 uwsgi를합니다.
5, 구성의 nginx
1, nginx를 설치 :
sudo apt install nginx
2, 디렉토리 구조 :
/ 등의 우분투 Nginx의 구성 파일 / nginx를 디렉토리, 주요 구성 파일 nginx.conf,
구성 파일 사이트-가능 / 다운 / 디렉토리에있는 fefault 포함 / 사이트 지원 / 링크 파일은 같은 이름을 가지고있다. Nginx에와 아파치 우분투 디렉토리 구조에서, 구성 파일은 기본적으로 동일합니다. )
3, Nginx에이 구성된다 :
cd /etc/nginx/sites-available
vim default
다음과 같이 할 수 있습니다 :
# 다음은 nginx.conf 서버에 제공하는 부분이다
서버 {
이 포트에 액세스하는 데 사용되는 #
80 듣고 ,
서버 _ 로컬 호스트가 ; . UTF-을 캐릭터 세트 (8) , 루트의 / var / WWW / HTML , 인덱스있는 index.html index.htm으로 debian.html - index.nginx ; # 파일 access_log가 로그 /var/log/nginx/access.log ;의 error_log /var/log/nginx/error.log , client_max_body_size의 75M ; #은 위치의 핵심 부분입니다 uwsgi 서비스 연결을 지정 / {는 uwsgi_params 포함 ; # uwsgi 같은 내용 127.0.0.1:8080 uwsgi_pass ; # 30 링크 타임 아웃 uwsgi_read_timeout을 ; } 정적 폴더 설정 # 소재지 / 정적 / {ON 자동 색인 , 별칭 / 홈 / 사용자 이름 / 장고 - 프로젝트 / 정적 /; } # 업로드 폴더 설정 위치 / 미디어 / {ON 자동 색인 , 별칭 / 홈 / 사용자 이름 / 장고 - 프로젝트 / 미디어 / ;
}
}
참고 : 내장 장고 관리 백엔드를 사용하는 경우 방법은 / 정적 구성 할 수 있도록 관리자 정적 디렉토리 장고 관리자 정적 디렉토리에서 다음 소스 또는 관리자 디렉토리 관리자가 프로젝트의 정적 디렉토리에 복사 / 액세스 할 수 없습니다 .
4, nginx를 서비스를 시작합니다.
nginx를 시작 : 서비스 nginx를 시작
가까이의 nginx를 : 서비스 nginx를 정지
다시 시작의 nginx를 : 서비스 nginx를 다시 시작
보기 상태 : 서비스의 nginx 상태를
浏览器访问http://localhost/ 可看到django项目已运行。
도 6은, 합산
- 테스트 장고 프로젝트, 정상적인 작동을 보장하기 위해;
- 설치 uwsgi, 장고 프로젝트 파일, 구성 uwsgi.ini는 uwsgi를 시작합니다;
- 의 nginx, 구성 nginx.conf를 설치, nginx를 시작합니다.
- 사용자의 권한 설정, 프로젝트 폴더, 폴더 권한 파일 및 데이터베이스 설정을 업로드 할 수 있습니다, 네트워크 사용자는 www가 데이터입니다.