Nginxをインストールする まずcentosイメージをプルします 最新のnginx1.19バージョンをインストールします: ダウンロードアドレス Centos イメージを実行し、次のように入力します。 docker run --name ver -d -p 8051:80 -it nginx_start nginx-1.19.0.tar.gz パッケージをコンテナに配置します。 nginx をインストールする前に、いくつかの依存関係をインストールします。 yum -y gccをインストール gcc-c++ autoconf automake make yum -y インストール zlib zlib-devel openssl openssl-devel pcre pcre-devel 解凍: tar -zxvf nginx-1.19.0.tar.gz #nginx-1.10.1を入力してnginxを設定します nginx-1.19.0をインストールします #nginx を設定する #--prefix はインストール ディレクトリを指定します#/usr/local/nginx はインストール ディレクトリであり、ダウンロードしたファイルのディレクトリと同じにすることはできません#./configure --prefix=/usr/local/nginx #ssl stub_status モジュールで strem モジュール –with-stream を追加して、tcp プロトコルを送信できるようにします #http_stub_status_module ステータス監視 #http_ssl_module https を構成します #stream を転送するように tcp を設定します #http_gzip_static_module 圧縮 #http_sub_module リクエストを置き換えます ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream 注記: ここで、pcre と zlib が見つからないというエラーが発生します。yum 次に インストールが成功すると、 成功を確認するには、 画像を生成する 10. Centos コンテナをミラーとして nginx とともにパッケージ化します Python 2.7環境をインストールする yum インストール gcc openssl-devel bzip2-devel wgetでPython 2.7をダウンロードし、解凍します。 yum -y wget をインストールします /usr/srcディレクトリに入り、wgetを使用してpython 2.7をダウンロードします。 /usr/src に移動します https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz を取得します。 python2.7を再度解凍する tar -zxvf Python-2.7.15.tgz Python 2.7をインストールする 上記で解凍したPython-2.7.15を入力し、以下のコマンドラインを使用して解凍したファイルにインストールします。 Python-2.7.15をインストール ./configure --enable-optimizations altinstall を実行する PIPをインストールする カール "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" python2.7 取得pip.py バージョンが2.7であり、requirements.txtに UWSGIをインストールする
問題を解決するには、 uWSGIサーバーを構成する 関連する [uwsgi] ソケット = /tmp/uwsgi.sock chown-socket = nginx:nginx chmod-ソケット = 664 # SIGTERM での正常なシャットダウンについては、https://github.com/unbit/uwsgi/issues/849#issuecomment-118869386 を参照してください。 フックマスター開始 = unix_signal:15 gracefully_kill_them_all プロジェクト ディレクトリ /app/ に [uwsgi] uwsgi-ソケット = /tmp/uwsgi.sock chmod-ソケット = 777 呼び出し可能 = アプリ wsgi ファイル = main.py バッファサイズ = 65535 プロセス = %(%k * 2) スレッド = %(%k * 20 各パラメータの意味は次のとおりです。 uwsgi-socket: uwsgi-socket 構成項目は、Unix ソケットであるファイル、つまり、ネットワーク アドレスではなくファイル システムを介してアドレス指定され、アクセスされるソケットを指定します。 uwsgi-socket を設定した後、chmod-socket も設定する必要があります。 callable: リクエストを受信したときに、uwsgi によってロードされたモジュール内のどの変数が呼び出されるか設定します。デフォルトは、「application」という名前の変数です。 wsgi-file: 指定された wsgi ファイルをロードします。 buffer-size: uwsgi パケット解析に使用される内部バッファ サイズを設定します。デフォルトは4kです。 プロセスとスレッドはそれぞれ開かれているプロセスとスレッドの数であり、%kはCPUコアの数を表すマジックナンバー変数です。デュアルコアCPUの場合、 スーパーバイザーをインストールする(オプション) 直接 yum インストールを行うと、「 ここで、スーパーバイザーが nginx および uwsgi サービスをリッスンするように設定します。 まず、 supervisord.conf ディレクトリは次のように構成されています。 ; スーパーバイザー設定ファイル [unix_http_サーバー] file=/var/run/supervisor/supervisor.sock ; (ソケットファイルへのパス) chmod=0700 ; sockef ファイル モード (デフォルト 0700) [監督者] logfile=/var/log/supervisor/supervisord.log; (メインログファイル; デフォルト $CWD/supervisord.log) pidfile=/var/run/supervisord.pid; (supervisord pidfile; デフォルト supervisord.pid) childlogdir=/var/log/supervisor; ('AUTO' 子ログディレクトリ、デフォルト $TEMP) ; 以下のセクションはRPCの設定ファイルに残しておく必要があります ; (supervisorctl/webインターフェース)が機能するには、追加のインターフェースが必要になる場合があります。 ; 別々の rpcinterface: セクションで定義することで追加されます [rpcインターフェース:スーパーバイザ] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [スーパーバイザーctl] serverurl=unix:///var/run/supervisor.sock ; unix ソケットの場合は unix:// URL を使用します ; [include]セクションには「files」設定のみを含めることができます。 ; 設定では複数のファイルをリストできます(空白または ; 改行) ワイルドカードも使用できます。ファイル名は ; このファイルからの相対として解釈されます。インクルードされたファイルは*できません* ; ファイル自体を含めます。 [含む] ファイル = /etc/supervisor/conf.d/*.conf 次に、conf.d ディレクトリに [監督者] ノーデーモン=true [プログラム:uwsgi] コマンド=/usr/bin/uwsgi --ini /etc/uwsgi/uwsgi.ini --die-on-term --need-app stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [プログラム:nginx] コマンド=/usr/local/nginx/sbin/nginx stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 # 正常な停止については、http://nginx.org/en/docs/control.html を参照してください。 ストップシグナル=QUIT 上記のパスはすべて実際のディレクトリ構成です。異なる場合は変更する必要があります。 次にスーパーバイザーを起動します。 上記の構成が完了したら、コンテナを再パッケージ化して base_v3から # 作業ディレクトリを作成する RUN mkdir /app # コンテナの起動時に実行されるすべてのコマンドがアプリディレクトリWORKDIR /appで実行されることを指定します # nginx の設定を置き換える COPY nginx.conf /etc/nginx/nginx.conf # ローカルアプリディレクトリの内容をコンテナのアプリディレクトリにコピーします COPY ./app/ /app/ ここで、Dockerfile およびアプリと同じディレクトリに別の nginx.conf ファイルを作成し、nginx.conf の内容を次のように変更します。 ユーザー nginx; ワーカープロセス 1; error_log /usr/local/nginx/logs/error.log 警告; pid /usr/local/nginx/logs/nginx.pid; ワーカー_rlimit_nofile 20480; イベント { epoll を使用します。 ワーカー接続数 20480; multi_accept オン; } http { /usr/local/nginx/conf/mime.types をインクルードします。 デフォルトタイプ アプリケーション/オクテットストリーム; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #リクエスト量が多い場合は、access_logを閉じることをお勧めします #access_log /var/log/nginx/access.log メイン; ファイル送信オン; #tcp_nopush オン; keepalive_timeout 300秒; client_header_timeout 300秒; client_body_timeout 300秒; gzip オン; gzip_min_length 1k; gzip_バッファ 4 16k; gzip_types テキスト/html アプリケーション/javascript アプリケーション/json; /usr/local/nginx/conf.d/*.conf をインクルードします。 サーバー{ 聞く 6666; 文字セット utf-8; クライアントの最大ボディサイズ 75M; 位置 / { uwsgi_params を含めます。 uwsgi_pass unix:///tmp/uwsgi.sock; uwsgi_send_timeout 300; uwsgi_connect_timeout 300; uwsgi_read_timeout 300; } } } 次に、 次に、インターフェース テストをランダムに実行します。 これで、Docker を使用した python Flask + nginx + uwsgi コンテナーの構築に関するこの記事は終了です。Docker を使用した Flask + nginx + uwsgi の構築に関する関連コンテンツの詳細については、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL のソートとページング (order by と limit) と既存の落とし穴
1 はじめにデータベースを設計する場合、画像や音声ファイルをデータベースに挿入することは避けられませ...
目次1. 依存関係をインストールする2. vue.config.js ファイルで pwa を設定しま...
現在このような問題が発生しています 私の状況は、QT が動かなくなってしまったため、仮想マシンを再起...
データベースを作成する右クリック - 新しいデータベースを作成ライブラリ名を入力し、文字セットと並べ...
目次1. インターフェース定義2. 属性2.1 オプション属性2.2 読み取り専用プロパティ3. ク...
序文Linux サーバーを操作および管理するときに、最もよく使用されるコマンドの 1 つが nets...
ゼロ: 古いバージョンをアンインストールするDocker の古いバージョンは、docker、dock...
目次ミックスインの実装フック関数のマージプロジェクト実践伸ばす要約するVue は mixins AP...
SeLinuxを無効にするsetenforce 0永久に閉店: vi /etc/selinux/c...
使用状態useState は、関数コンポーネント内で呼び出すことで、コンポーネントに内部状態を追加し...
1. getBoundingClientRect() 分析getBoundingClientRect...
一般的に、データ テーブル内の列を ID 列として設定すると、ID 列の表示値を手動で ID 列に挿...
目次1. 父から息子へ2. 息子から父へ3. ブラザーコンポーネント通信(バス) 4. ref/re...
vueプロジェクトをパッケージ化してサーバーにデプロイし、正常にログインできるが、ローカルで起動する...
背景ここ 2 日間 Docker を使用していたところ、コンテナの起動後に date -R の出力タ...