>  기사  >  백엔드 개발  >  Python 배포에 대한 자세한 소개

Python 배포에 대한 자세한 소개

零下一度
零下一度원래의
2017-07-23 10:09:581583검색

한동안 플라스크를 배웠지만 배포한 적이 없어서 어떻게 배포할지 고민하다가 먼저 서비스를 올려볼까 고민을 하게 되었습니다. 여기서 선택은 Flask+uwsgi+Nginx+Ubuntu입니다. 저는 Python 2.7.2를 선택했습니다. 이것은 Ubuntu 시스템과 함께 제공되는 것입니다. 현재는 소프트웨어 연결을 거치지 않고도 쉽게 배울 수 있습니다. python3으로 작성하겠습니다. 일단 이것부터 시작하겠습니다. 일단 알아내면 최적화하기가 매우 쉬울 것입니다. 사실 저는 많은 원리에 대해 잘 모릅니다. 먼저 이것을 설정하고 그 내부의 논리를 천천히 이해해 봅시다.

Nginx

Nginx는 로드 밸런싱으로 사용할 수 있는 효율적인 웹 서버이자 역방향 프록시 서버입니다(n명의 사용자가 서버에 액세스하면 서버에 대한 부담을 덜어주고 공유할 수 있음). Nginx는 Apache와 비교하여 지원합니다. 동시성이 높고 수백만 개의 TCP 연결과 수십만 개의 동시 연결을 지원할 수 있습니다. 배포가 간단하고 메모리를 덜 소비하며 비용이 저렴합니다. 그러나 Nginx에는 Apache만큼 많은 모듈이 없습니다. Nginx는 uWSGI의 uwsgi 프로토콜을 지원하므로 Nginx를 uWSGI와 결합할 수 있으며 Nginx는 처리를 위해 동적 콘텐츠를 uWSGI에 전달합니다. uwsgi_pass

공식 문서가 여기에 있습니다

최고의 Nginx 튜토리얼이 여기에 있습니다

uwsgi

uWSGI는 WSGI 프로토콜, uwsgi, http 및 기타 프로토콜을 구현하는 웹 서버입니다. Nginx에서 HttpUwsgiModule의 기능은 uWSGI 서버와 교환하는 것입니다.
WSGI/uwsgi/uWSGI의 세 가지 개념의 차이점에 주의하세요.
  • 이전 섹션을 읽은 학생들은 WSGI가 통신 프로토콜이라는 것을 분명히 이해할 것입니다.
  • uwsgi는 uWSGI 서버와 다른 네트워크 서버 간의 데이터 통신에 일반적으로 사용되는 통신 프로토콜이 아닌 라인 프로토콜입니다.
  • 그리고 uWSGI는 uwsgi와 WSGI 두 가지 프로토콜을 구현한 웹 서버입니다.
uwsgi 프로토콜은 전송되는 정보 유형을 정의하는 데 사용됩니다. 각 uwsgi 패킷의 처음 4바이트는 전송되는 정보 유형을 설명합니다.
준비, 먼저 필요한 패키지를 설치해보겠습니다. 일단 제가 새로 설치한 시스템이라 pip가 없으므로 pip를 먼저 설치하겠습니다
sudo apt-get install python-pip
다음 명령어로 이동하세요. 플라스크

pip install flask
를 설치한 후 테스트할 수 있습니다.

플라스크 가져오기

오류가 보고되지 않아 플라스크가 성공적으로 설치되었음을 증명할 수 있습니다. 이제 우리가 해야 할 일은 ngnix와 uwsgi를 설치하는 것입니다.

sudo apt-get install nginx
설치 후 먼저 시작할 수 있습니다. nginx는 직접 명령줄 시작으로 간단하고 조잡합니다.

이렇게 하면 nginx가 성공적으로 시작됩니다. 다음으로 pip를 사용하여 uwsgi

를 설치합니다. 설치한 후 시작하겠습니다.

먼저 hellowflak 아래에 앱의 Python 패키지를 만듭니다.

#app/__init__.pyfrom flask import Flask
app = Flask(__name__)from app import view
다음으로 view.py

from app import app
@app.route('/')def index():return 'hellow'
를 만듭니다. 그런 다음 hello.py

from app import appif __name__ == "__main__":
    app.run()
를 만듭니다. 앱과 동일한 디렉터리에 있으면 Python을 사용하여 프로그램을 로컬에서 디버깅할 수 있습니다.

그런 다음 브라우저에서 확인하고 주소를 입력하면 다음과 같은 내용을 얻을 수 있습니다. 우리 플라스크 프로그램에는 문제가 없습니다.

그럼 다음으로 해야 할 일은 nginx가 웹 서비스를 맡게 하는 것입니다.

내가 여기서 하는 일은 간단하고 무례하게 nginx 구성 파일을 삭제하는 것입니다

$ sudo rm /etc/nginx/sites-enabled/default
다음으로 hellowflask 아래에 구성 파일을 만들었습니다

server {
    listen      8081;
    server_name 127.0.0.1;
    charset     utf-8;
    client_max_body_size 75M;

    location / { try_files $uri @app; }
    location @app {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9000;
    }
}
약간의 설명: server_name은 도메인 이름일 수도 있고, IP 주소를 쓰세요. uwsgi_pass는 Nginx와 uwsgi 간의 통신 방법을 나타냅니다. 여기서 선택한 것은 지정된 포트 번호입니다.

그런 다음 구성을 nginx에 소프트 연결해 보겠습니다.

<code class="hljs groovy">sudo ln -s <span class="hljs-regexp"><span class="hljs-regexp">/home/liwanlei/Desktop/hellowflask/<span class="hljs-regexp">helloflask_nginx.conf /etc<span class="hljs-regexp">/nginx/conf.d/<br>这样我们再去启动我们的nginx,</span></span></span></span></code>
sudo /etc/init.d/nginx restart
여기 있는 것은 환영이 아니라 502 오류입니다. 현재 uwsgi 파일이 아직 구성되지 않았고 uwsgi를 시작하지 않았기 때문에 다음 단계는 이 uwsgi를 가져오는 것입니다. 나 구성.

[uwsgi]    
    base = /home/liwanlei/Desktop/hellowflask
    app = hello#module = %(app)pidfile = /var/run/uwsgi.pid
    master = true
    wsgi-file = /home/liwanlei/Desktop/hellowflask/hello.py
    pythonpath = /usr/bin/python
    chdir = /home/liwanlei/Desktop/hellowflask
    socket = 127.0.0.1:9000callable = app
    logto = %n.log
    plugins = python
    processes = 8master = true
이제 uwsgi가 구성되었으니 시작해 보겠습니다.

sudo /usr/bin/uwsgi --ini/home/liwanlei/Desktop/hellowflask/helloflask_uwsgi.ini

我们去重新启动我们的nginx,

<code class="hljs bash">sudo nginx <span class="hljs-_">reload<br>平滑重启可以用用,重新加载配置文件,用新的工作进程代替旧的工作进程。<br></span></code>
sudo nginx -s reload
<code class="hljs bash"><span class="hljs-_"><br>启动后,我这里修改了地址,这里就可以直接访问了,那么我们的部署这样就算可以了,简单的。<br><img src="https://img.php.cn/upload/article/000/000/001/25f4d9be3a729ae5fc17c2fefb915c9c-3.jpg" alt=""></span></code>
 <br>

完工之后,感觉还是很简单的 有问题那么就去看log,只要log配置得当,那么排除错误是很快的。

위 내용은 Python 배포에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.