しばらくフラスコを勉強していましたが、デプロイしたことがなかったので、どうやってデプロイするかを考えていました。まずサービスを立ち上げましょう。ここでの選択は Flask+uwsgi+Nginx+Ubuntu です。私は Python 2.7.2 を選択しました。これは、ソフトウェア接続を介さずに学習するのが簡単だと思います。 Python3 で書かれています。これを理解したら、最適化は非常に簡単になります。実際、私は多くの原則についてあまり知りません。まずこれを設定して、内部のロジックをゆっくり理解しましょう。
Nginx
Nginx は、負荷分散として使用できる効率的な Web サーバーおよびリバース プロキシ サーバーです (n 人のユーザーがサーバーにアクセスすると、サーバーの負荷を軽減し、負荷を分散できます)。Apache と比較して、Nginx はサポートしています。同時実行性が高く、数百万の TCP 接続と数十万の同時接続をサポートできます。展開が簡単で、メモリ消費量が少なく、コストが低くなります。ただし、Nginx には Apache ほど多くのモジュールがありません。 Nginx は uWSGI の uwsgi プロトコルをサポートしているため、Nginx と uWSGI を組み合わせることができ、Nginx は動的コンテンツを処理のために uWSGI に渡します。 uwsgi_pass
公式ドキュメントはこちらです
最高のNginxチュートリアルはこちらです
uwsgi
uWSGIは、WSGIプロトコル、uwsgi、http、およびその他のプロトコルを実装するWebサーバーです。 Nginx の HttpUwsgiModule の機能は、uWSGI サーバーとのやり取りです。
WSGI / uwsgi / uWSGI の 3 つの概念の違いに注意してください。
- 前のセクションを読んだ生徒は、WSGI が通信プロトコルであることを明確に理解しているでしょう。
- uwsgi は通信プロトコルではなく回線プロトコルで、uWSGI サーバーと他のネットワーク サーバー間のデータ通信によく使用されます。
- そして、uWSGIは、uwsgiとWSGIという2つのプロトコルを実装するWebサーバーです。
uwsgi プロトコルは、送信される情報の種類を定義するために使用される uWSGI パケットです。これは、WSGI とは 2 つの異なるものです。 。
準備、まず必要なパッケージをインストールしましょう まず、これは新しくインストールしたシステムなので、pip をインストールします
1 | sudo apt-get install python-pip
|
ログイン後にコピー
次のコマンドを使用します。フラスコ
をインストールした後、
import flask
フラスコが正常にインストールされたことを証明するエラーは報告されません。したがって、次にしなければならないことは、ngnix と uwsgi をインストールすることです。
1 | sudo apt-get install nginx
|
ログイン後にコピー
インストール後、まず、nginx をコマンドラインから直接起動します。シンプルかつ粗雑です
このようにして、nginx は正常に起動します。次に、pip を使用して uwsgi をインストールします
。インストールしたら、始めましょう
まず、helloflak の下にアプリの Python パッケージを作成します
1 2 | #app/__init__.pyfrom flask import Flask
app = Flask(__name__)from app import view
|
ログイン後にコピー
次に、view.py
1 2 | from app import app
@app.route( '/' )def index(): return 'hellow'
|
ログイン後にコピー
を作成します。アプリと同じディレクトリにある場合は、Python を使用してプログラムをローカルでデバッグできます
次に、ブラウザでチェックアウトし、アドレスを入力してこれを取得できます。 この観点から見ると、次のようになります。フラスコプログラムでは問題ありません。

次に私たちがしなければならないことは、nginx に Web サービスを引き継がせることです。
ここでやっていることは、単純かつ無作法にnginx設定ファイルを削除することです

1 2 | from app import appif __name__ == "__main__" :
app.run()
|
ログイン後にコピー
次に、helloflaskの下に設定ファイルを作成しました
1 | $ sudo rm /etc/nginx/sites-enabled/ default
|
ログイン後にコピー
少し説明します:server_nameはドメイン名にすることもできますし、 write ip Address、uwsgi_passはNginxとuwsgi間の通信方式を示します。ここで選択するのは指定されたポート番号です。
次に、設定を nginx にソフト接続しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 | 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;
}
}
|
ログイン後にコピー
1 | 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>
|
ログイン後にコピー
ここにあるのは歓迎ではなく、502 エラーです。現在の uwsgi ファイルがまだ構成されておらず、uwsgi を開始していないため、次のステップはこの uwsgi を取得することです。私設定。
1 | sudo /etc/init.d/nginx restart
|
ログイン後にコピー
この時点で、uwsgi は設定されているので、それを開始しましょう、
1 2 3 4 5 6 7 8 9 10 11 | [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
|
ログイン後にコピー
我们去重新启动我们的nginx,
1 | sudo nginx <span class = "hljs-_" >reload<br/>平滑重启可以用用,重新加载配置文件,用新的工作进程代替旧的工作进程。<br/></span>
|
ログイン後にコピー
1 | <span class = "hljs-_" ><br/>启动后,我这里修改了地址,这里就可以直接访问了,那么我们的部署这样就算可以了,简单的。<br/><img src= "/static/imghw/default1.png" data-src= "https://img.php.cn/upload/article/000/000/001/25f4d9be3a729ae5fc17c2fefb915c9c-3.jpg" class = "lazy" alt= "" /></span>
|
ログイン後にコピー
完工之后,感觉还是很简单的 有问题那么就去看log,只要log配置得当,那么排除错误是很快的。