Ubuntu 에서 Nginx 와 uwsgi 로 flask 프로젝트 를 배치 합 니 다.
#wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
이때 wget 이 없 으 면 yum install wget 을 통 해 설치 할 수 있 습 니 다.
#tar jxvf Python-2.7.5.tar.bz2
#cd Python-2.7.5
#./configure --prefix=/usr/local
#make && make install
이 때 python 2.7 은 우리 시스템 에서 사용 할 python 이 아 닙 니 다.따라서 시스템 의 기본 python 이 python 2.7 을 가리 키 도록 소프트 연결 을 만들어 야 합 니 다.
#mv /usr/bin/python /usr/bin/python2.4.3 // python
#ln -s /usr/local/bin/python27 /usr/bin/python
새 버 전의 python 을 사용 하면 yum 설치 소프트웨어 가 잘못 되 었 습 니 다. yum 이 python 2.7 을 호 환 하지 않 았 기 때문에 yum 이 사용 하 는 python 버 전 을 지정 해 야 합 니 다.
#vi /usr/bin/yum
편집 모드 에 들 어가 면 \ #! /usr / bin / python 을 \ #! /usr/bin/python2.7
관련 개발 도구 상자 와 가방 을 설치 하 다.
#yum groupinstall "Development tools"
#yum install zlib zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
pip 설치
# wget https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz --no-check-certificate
pip 를 다운로드 하 는 것 은 https 프로 토 콜 을 기반 으로 하기 때문에 wget url 뒤에 -- no - check - certificate 를 추가 해 야 합 니 다. 그렇지 않 으 면 다운로드 할 수 없습니다.
압축 해제 및 설치 pip
#chmod +x pip-1.3.1.tar.gz
#tar xzvf pip-1.3.1.tar.gz
#cd pip-1.3.1
#python setup.py install
마지막 단계 에서 "ImportError: No module named setuptools" 를 잘못 알 릴 수 있 습 니 다. setuptools 가 설치 되 어 있 지 않 기 때 문 입 니 다.
설치 setuptools
#wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg --no-check-certificate
#chmod +x setuptools-0.6c11-py2.7.egg
#sh setuptools-0.6c11-py2.7.egg
이 단 계 는 "zlib not available" 를 잘못 보고 할 수도 있 습 니 다. \ # rpm - qa | grep zlib 를 사용 하여 사용 가능 한 설치 패 키 지 를 볼 수 있 습 니 다. 설치 되 지 않 은 설치 상 태 를 볼 수 있 습 니 다. (위 에 zlib 와 zlib - devel 이 설치 되 어 있 습 니 다)
sh setuptools - 0.6c 11 - py 2.7. egg 를 다시 실행 합 니 다. 잘못된 것 을 발견 하 셨 습 니까?같은 잘못?
그러면 이것 은 zlib 의 문제 가 아니 라 python 의 문제 일 것 입 니 다. python 2.7.5 를 다시 컴 파일 해 야 합 니 다. 컴 파일 하기 전에 Modules / setup. dist 파일 을 수정 해 야 합 니 다.찾아내다
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
설명 을 지우 고 python 2.7 을 다시 컴 파일 합 니 다.
#cd Python-2.7.5
#./configure --prefix=/usr/local
#make && make install
이렇게 하면 zlib 는 사용 할 수 있 을 것 입 니 다. setuptools 의 설치 로 돌아 가 pip 의 설치 로 돌아 가 이번 에는 드디어 pip 를 설치 하 게 되 었 습 니 다.전역 환경 에서 fllask 와 관련 된 패 키 지 를 설치 할 수 있 습 니 다. (서버 에 한 항목 만 실행 하고 싶다 면) 패 키 지 를 가상 환경 에 설치 할 수도 있 습 니 다.
프로젝트 코드 를 서버 에 업로드 합 니 다.
다음은 flask 프로젝트 코드 를 서버 에 업로드 할 수 있 습 니 다. flashFXP 나 FileZilla 를 사용 하여 업로드 할 수 있 습 니 다. 여 기 는 제 업로드 디 렉 터 리 에 따라 다음 절 차 를 소개 합 니 다. 제 flask 프로젝트 코드 는 / home / www / WebBlogold (WebBlogold 는 제 프로젝트 폴 더 입 니 다) 에 놓 여 있 습 니 다.리 눅 스 디 렉 터 리 구 조 를 모 르 시 겠 습 니까? 서버 에 여러 항목 이 있다 면 virtualenv 가상 환경 을 설치 하 는 것 을 권장 합 니 다. virtualenv 는 프로젝트 와 프로젝트 간 에 같은 가방 의 다른 버 전에 대한 의존 문 제 를 해결 할 수 있 습 니 다. pip 를 사용 하여 virtualenv 가상 환경 을 설치 합 니 다.
pip install virtualenv
프로젝트 디 렉 터 리 에 들 어가 서 디 렉 터 리 에 virtualenv venv 를 입력 하 십시오. 그 중에서 venv 는 당신 이 만 들 가상 환경 폴 더 의 이름 입 니 다. 결 과 는 다음 두 줄 이 나타 납 니 다.
New python executable in venv/bin/python
Installing setuptools, pip...done.
폴 더 가 만 들 어 졌 음 을 설명 합 니 다. source venv / bin / activate 명령 을 사용 하여 가상 환경 을 사용 합 니 다. 사용 하면 현재 경로 이름 앞 에 (venv) 가 있 습 니 다.
가상 환경 에서 flask 관련 패 키 지 를 설치 하면 하나씩 설치 할 수도 있 고 모든 패 키 지 를 txt 파일 에 써 서 한꺼번에 설치 할 수도 있 습 니 다.
flaskrelated. txt 파일:
Flask==0.10.1
Flask-Login==0.2.11
Flask-Mail==0.9.1
Flask-Moment==0.4.0
Flask-PageDown==0.1.5
Flask-SQLAlchemy==2.0
...
프로젝트 폴 더 에 저장 하고 가상 환경 에서 pip install - r flaskrelated. txt 를 입력 하여 설치 합 니 다.
서버 에이전트 설정
내 서버 프 록 시 는 전역 에 설치 되 어 있 습 니 다. 물론 가상 환경 에서 도 설치 할 수 있 습 니 다.
사용 하 는 프 록 시 는 모두 두 개 입 니 다. nginx 와 uwsgi 입 니 다. 먼저 nginx 처럼 프로젝트 에 접근 하지 않 으 면 nginx 를 사용 하 는 목적 은 안전 과 부하 균형 을 위 한 것 입 니 다. nginx 를 전단 프 록 시 로 설정 하고 uwsgi 를 백 엔 드 프 록 시 로 하 는 서버 (여기 서 말 하 는 앞 뒤 는 상대 적 인 위치 이 며 실제 적 인 의미 가 없습니다)인터넷 에서 온 요청 을 처리 할 때 nginx 의 처 리 를 거 쳐 nginx 는 요청 을 uwsgi 에 게 건 네 주 고 uwsgi 를 거 쳐 야 프로젝트 자 체 를 방문 할 수 있 습 니 다.
nginx 가 없고 uwsgi 만 있 는 서버 는 인터넷 요청 이 uwsgi 에서 직접 처리 되 고 프로젝트 에 피드백 되 었 습 니 다. nginx 는 안전 여과, DDoS 방지 등 안전 을 보호 하 는 작업 을 실현 할 수 있 으 며 여러 대의 서버 를 설정 하면 nginx 는 서버 의 부하 가 상대 적 으로 균형 을 이 룰 수 있 습 니 다.
한편, uwsgi 는 웹 서버 로 WSGI 프로 토 콜 (Web Server Gateway Interface), http 프로 토 콜 등 을 실현 하여 요청 을 수신 하고 처리 하 며 응답 을 보 낼 수 있 기 때문에 uwsgi 만 사용 해도 된다.
uwsgi 먼저 설치
pip install uwsgi
프로젝트 루트 디 렉 터 리 아래 프로필 을 만 듭 니 다. uwgiconfig. ini (uwsgi 는 다양한 프로필 형식, xml, ini, json 등 을 지원 합 니 다)
[uwsgi]
socket = 127.0.0.1:8001 // , flask ,
// 127.0.0.1:5000,
// uwsgi , uwsgi ,
// uwsgi, 。
chdir = /home/www/ //
wsgi-file = manage.py //flask ,
// python manage.py runserver
callable = app // application
processes = 4 //
threads = 2 //
stats = 127.0.0.1:9191 // uwsgi
설정 파일 을 저장 합 니 다. uwsgi uwgiconfig. ini 를 입력 하여 uwsgi 를 시작 할 수 있 습 니 다.
nginx 설치: nginx 가 yum 설치 소프트웨어 원본 에 없 기 때문에 추가 합 니 다.
#rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
#yum install nginx
nginx 명령
시작: nginx 정지: nginx - s - stop 강제 정지: pkill - 9 nginx 설정 파일 적용 여부 보기: nginx - t 보기 버 전: nginx - v 우리 nginx 프 록 시 서버 를 급 하 게 시작 하지 말고 nginx 설정 파일 을 먼저 쓰 십시오.
nginx 의 프로필 은 / etc / nginx / conf. d / 폴 더 에 있 을 수도 있 습 니 다. / etc / nginx / sites - enabled / default 에 있 을 수도 있 습 니 다. 기본 프로필 을 엽 니 다. 대부분의 내용 은 주석 이 붙 어 있 습 니 다. 수정 이 필요 합 니 다.
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80; // web
server_name xxx.xxx.xxx.xxx; // ip
#charset koi8-r;
access_log /home/www/WebBlogold/logs/access.log; // ,
//
//logs , 。
error_log /home/www/WebBlogold/logs/error.log; //
location / {
include uwsgi_params; // uwsgi
uwsgi_pass 127.0.0.1:8001; // uwsgi socket
// , uwsgi 。
uwsgi_param UWSGI_PYHOME /home/www/WebBlogold/venv; //python ( )
uwsgi_param UWSGI_CHDIR /home/www/WebBlogold; //
uwsgi_param UWSGI_SCRIPT manage:app; // (
// flask
// )
}
}
}
nginx 를 시작 할 때 "98: Address already in use" 를 잘못 알 았 다 면 조급해 하지 마 세 요. nginx 가 시작 되 었 기 때 문 일 수 있 습 니 다.
netstat - ntlp 를 통 해 포트 점용 상황 을 보고 nginx 가 사용 하 는 80 포트 인지 확인 하 십시오. nginx 의 기본 80 포트 를 사용 하 는 다른 프로그램 이 발견 되면 이 프로 세 스 를 죽 이 고 nginx 를 시작 할 수 있 습 니 다.
여기까지, 우 리 는 마침내 모든 일 을 완 성 했 으 니, 곧 자신의 프로젝트 를 방문 할 수 있 을 것 이다.
현재 nginx 의 프로필 이 nginx - t 를 사용 하 는 지 확인 하 십시오. 성공 적 으로 적용 되 지 않 았 다 면 프로필 을 확인 하 십시오.
nginx 를 입력 하여 nginx 를 시작 합 니 다.
프로젝트 관련 모듈 의 도입 경로 가 잘못 되 었 을 수도 있 습 니 다. 수정 하면 됩 니 다. 잘못 보고 하지 않 았 다 면 브 라 우 저 를 열 고 서버 IP 주 소 를 입력 하거나 해당 도 메 인 이름 이 있 으 면 IP 를 분석 하고 도 메 인 이름 을 입력 하 셔 도 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.