Django + uWSGI + nginx 배치 Python 웹 응용 프로그램
일부 알고리즘 모델 을 실현 한 후에 고려 한 것 은 바로 모델 의 배치 이다.OCR 인식 엔진 등 상대 적 으로 독립 된 모델 응용 에 대해 독립 된 웹 응용 으로 배치 하여 API 를 제공 하 는 다른 시스템 호출 방식 이 좋 은 해결 방안 이 될 것 이다.이 방안 의 장점 은 다음 과 같은 몇 가지 가 있다.
본문 사용 환경
1. Django 의 설치 와 사용
pip install Django
django-admin startproject demosite
현재 디 렉 터 리 아래 웹 프로젝트 를 만 들 것 입 니 다. 프로젝트 디 렉 터 리 구 조 는 다음 과 같 습 니 다.
demosite/
├── demosite
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
demosite / demosite / 디 렉 터 리 에 views. py 파일 을 만 들 고 코드 를 입력 하 십시오:
from diango.http import HttpResponse
def hello(request):
return HttpResponse("Hello World! [CSD]")
urls. py 파일 에 추가:
from demosite.views import hello
url patterns 에 url 경 로 를 추가 합 니 다:
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', hello),
]
settings. py 파일 을 수정 하여 로 컬 IP 를 ALLOWED 에 추가 합 니 다.HOSTS = [], 예:
ALLOWED_HOSTS = ['192.168.0.100']
python manage.py runserver 192.168.0.100:8000
그리고 브 라 우 저 에 url 을 입력 하 십시오:
http://192.168.0.100:8000/hello/
보 실 수 있 습 니 다. 돌아 갈 수 있 습 니 다.
Hello World! [CSD]
Django 의 더 높 은 사용 과 설정 은 공식 문 서 를 참고 할 수 있 습 니 다.https://docs.djangoproject.com/en/2.2/
2. uWSGI 를 사용 하여 Django 응용 프로그램 관리
uWSGI 를 사용 하면 간단 한 Django 웹 애플 리 케 이 션 을 배치 할 수 있 습 니 다. WEB 가 좋 은 동시 방문 을 요청 하 는 것 을 관리 할 수 있 습 니 다.또한 uWSGI 는 Django 가 추천 하 는 방식 입 니 다. How to use Django with uWSGI, 자세 한 내용 은 uWSGI 홈 페이지 를 참고 하 십시오.
conda install -c conda-forge uwsgi
[uwsgi]
chdir = /home/csd/demosite
wsgi-file = demosite/wsgi.py
buffer-size = 65536
master = true
processes = 8
threads=10
http = 192.168.0.100:8080
vaccum = true
daemonize = /home/csd/demosite/logs/demo_uwsgi.log
데모 사이트 디 렉 터 리 에 폴 더 만 들 기: logs /
시작 명령 은 다음 과 같 습 니 다:
uwsgi --ini demo_uwsgi.ini --enable-threads
--enable-threads
매개 변 수 는 다 중 스 레 드 지원 을 시작 하 는 데 사 용 됩 니 다.링크 에 접근 할 수 있 습 니 다:
http://192.168.0.100:8080/hello/
이 때 항목 을 닫 으 려 면 실행 해 야 합 니 다:
killall -9 uwsgi
uwsgi: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
libiconv 를 설치 해 야 합 니 다.
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxvf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure
sudo make
sudo make install
make 오류 가 발생 하면:
/stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function)
_GL_WARN_ON_USE (gets, “gets is a security hole - use fgets instead”);
libiconv - 1.14 / srclib / stdio. in. h 파일 에서 698 줄 의 코드 를:
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
다음으로 바 꾸 기:
#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif
그리고 새로 실행:
./configure
sudo make
sudo make install
설치 완료 후 루트 계 정 을 전환 하고 다음 명령 을 입력 하 십시오:
echo '/usr/local/lib' >> /etc/ld.so.conf
ldconfig
마지막 입력:
iconv --version
실행 할 수 있다 면 설치 가 정확 합 니 다.
3. nginx 배치
nginx 서버 배 치 를 사용 하여 부하 균형 을 실현 하고 WEB 요청 을 관리 할 수 있 습 니 다.
nginx-1.14.0.tar.gz
nginx_uploadprogress_module-0.9.0.tar.gz
openssl-1.0.2o.tar.gz
pcre-8.42.tar.gz
압축 을 풀 고 nginx - 1.14.0 / 컴 파일 에 들 어가 nginx 를 설치 합 니 다:
./configure --prefix=/home/csd/nginx --with-openssl=../openssl-1.0.2o --with-pcre=../pcre-8.42 --add-module=../masterzen-nginx-upload-progress-module-a788dea --without-http_gzip_module
make
make install
작업 프로 세 스 를 4 로 설정 합 니 다:
worker_processes 4;
nginx 기본 감청 80 포트 이기 때문에 80 포트 가 점용 되 었 는 지 확인 할 필요 가 있 습 니 다.
netstat -lnp|grep 80
점용 되면 다른 포트 로 변경 합 니 다. server 설정 에 다음 설정 이 추 가 됩 니 다.
server {
listen 90;
server_name 192.168.0.100;
large_client_header_buffers 4 16k;
client_max_body_size 300m;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_buffer_size 256k;
proxy_buffers 16 256k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 512k;
location / {
root html;
index index.html index.htm;
include uwsgi_params;
uwsgi_pass unix:/home/csd/demosite/uwsgi.sock;
}
location /static {
alias /home/csd/demosite/static;
}
location /media {
alias /home/csd/demosite/media;
}
}
이 어 demosite 디 렉 터 리 아래
static/
와 media/
두 개의 폴 더 를 만 듭 니 다.장 demo_uwsgi.ini
중http = 192.168.0.100:8080
으로 변경
socket = /home/csd/demosite/uwsgi.sock
settings.py
파일 마지막 에 추가:STATIC_ROOT = os.path.join(BASE_DIR, "static/")
python manage.py collectstatic
시작 uwsgi:
uwsgi --ini demo_uwsgi.ini --enable-threads
시작 nginx:
sudo /home/csd/nginx/sbin/nginx
이 때 접근:
http://192.168.0.100:90/hello/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.