Bootcamp: 本番環境の蚭定を支揎したす。

䜜成日 2019幎10月17日  Â·  12コメント  Â·  ゜ヌス: vitorfs/bootcamp

こんにちは私は倧孊内の研究者のための゜ヌシャルネットワヌクずしおBootcampを立ち䞊げようずしおいたす。 ただし、いく぀かの制玄により、珟圚、展開のリバヌスプロキシずしおcaddyを䜿甚するこずはできたせん。 代わりにnginxを䜿甚したす。 可胜であれば、本番環境に指定する必芁のあるパラメヌタヌに぀いおのガむダンスを教えおください。 env.exampleファむルを芋たしたが、プロゞェクトは私にずっお新しいので、すべおがどのように盞互に接続されおいるのかわかりたせん。 私は次の゚ラヌで立ち埀生しおいたす

manage.py runworker: error: the following arguments are required: channels

どんな助けでも倧歓迎です。

Support discussion help wanted

最も参考になるコメント

私の堎合、UbuntuサヌバヌマシンでPython3.7.1を䜿甚するIM

オプションのセットアップPythonバヌゞョン
sudo update alternatives --install /usr/bin/python/ python /usr/bin/python3.7.1

このコマンドでは、Python3.7.1が私の最優先事項です

たず、マシンに環境をむンストヌルしたす
sudo -H pip3 install virtualenv

正しいフォルダに倉曎するにはcd /home/pages

プロゞェクトフォルダを䜜成するためのmkdir bootcamp

cd bootcamp/

環境を䜜成する
virtualenv bootcampenv
あなたの環境を掻性化する
source bootcampenv/bin/activate

installl gunicorn
pip3 install gunicorn

ペヌゞディレクトリに戻る
cd ..
ブヌトキャンププロゞェクト甚のフォルダを䜜成したす

django-admin startproject bootcampprojectdir

cd bootcampprojectdir

そしお、芁件をむンストヌルしたす
pip install -U -r requirements/production.txt

別のデヌタベヌスなどを䜿甚しおいる堎合は、移行を開始しおcollectsstatic

ポヌト8000​​を蚱可するようにファむアりォヌルを曎新したす
sudo ufw allow 8000

gunicornwsgiを䜜成する
gunicorn --bind 0.0.0.0:8000 settings.wsgi

システム゜ケットを䜜成する
sudo nano /etc/systemd/system/gunicorn.socket

[単䜍]
説明= gunicorn.sock

[゜ケット]
ListenStream = / run / gunicorn.sock

[むンストヌル]
WantedBy = sockets.target

サヌビスを䜜成する
sudo nano /etc/systemd/system/gunicorn.service

[単䜍]
説明= gunicornデヌモン
Required = gunicorn.socket
After = network.target

[サヌビス]
ナヌザヌ=ペヌゞ
Group = www-data
WorkingDirectory = / home / pages / bootcampprojectdir / bootcampenv / bin / gunicorn
--access-logfile-
-劎働者3
--bind unixrun / gunicorn.sock
settings.wsgi.application

[むンストヌル]
WantedBy = multi-user.target

すべおを有効にする
sudo systemctl start gunicorn.socket
sudo systemctl enable gunicorn.socket

確認しおください
file /run/gunicorn.sock
゚ラヌがなければ倧䞈倫です

ステヌタスを確認する
sudo systemctl status gunicorn.socket

チェックサヌビス
curl --unix-socket /run/gunicorn.sock localhost

htnlコヌドが衚瀺されない堎合は、gunicorn.serviceを䜿甚しおください。

サヌビスが実行されおいるこずを確認しおください
sudo systemctl status gunicorn

すべお問題がなければ、次のステップNGinxはgunicornにパスしたす
nginxをむンストヌルしたす
sudo apt install nginx

nginxでサむトを䜜成する
サヌビスを䜜成する
sudo nano /etc/nginx/sites-available/bootcampproject

サヌバヌ{
80を聞く;
server_name 99.99.99.99

  location = /favicon.ico { access_log off; log_not_found off; }
  location /static/ {
        root /home/pages/bootcampprojectdir;
  }

䜍眮 / {
proxy_paramsを含める;
proxy_pass http// unix /run/gunicorn.sock;
}
}

このファむルを保存しおサむト察応にコピヌしたす
sudo ln -s /etc/nginx/sites-available/bootcampproject /etc/nginx/sites/enabled

nginxの蚭定を確認しおください

sudo nginx -t

゚ラヌがない堎合は、nginxを再起動したす
sudo systemctl restart nginx

nginxファむアりォヌルポヌトを远加したすが、最初にポヌト8000​​をテストから削陀したす

sudo ufw delete allow 8000

nginxを远加
sudo ufw allow 'Nginx Full'

党おのコメント12件

やあ、
キャディを䜿甚しおいたせん。 私はすべおのdjangoプロゞェクトにgunicornを䜿甚しおいたす。

すべおの芁件をむンストヌルしたしたか
チャンネル> = 2.1.1https//github.com/django/channels
チャネル-redis> = 2.2.1 https//github.com/django/channels_redis

コン゜ヌルで確認できたす

$ python -c "import channels"
$ echo $?

0は、存圚するこずを意味したす
1は、モゞュヌルがシステムに存圚しないこずを意味したす

チャネルがむンストヌルされたす。 私は今別の問題に遭遇したす。 これが私のdockerファむルず.envです。 ワヌカヌサヌビスで問題が発生しおいたす。 それが䜕をするのかわからない。 あなたの助けに本圓に感謝しおいたす。あなたのプロゞェクトは非垞に興味深く、これが本番環境に入るず私の倧孊の倚くの人々を助けるこずができたす。

env.txt

docker-compose.txt

これが゚ラヌログです。

worker_1    | /usr/local/lib/python3.6/site-packages/daphne/server.py:13: UserWarning: Something has already installed a non-asyncio Twisted reactor. Attempting to uninstall it; you can fix this warning by importing daphne.server early in your codebase or finding the package that imports Twisted and importing it later on.
worker_1    |   UserWarning,
django_1    | DEBUG 2019-10-17 21:28:37,751 base 1 140450066271560 Configuring Raven for host: https://sentry.io
worker_1    | DEBUG 2019-10-17 21:28:35,663 base 1 140638836505928 Configuring Raven for host: https://sentry.io
worker_1    | Running worker for channels ['channels', 'notifications']
worker_1    | DEBUG 2019-10-17 21:28:36,297 base 1 140638836505928 Sending message of length 5534 to https://sentry.io/api/1782977/store/
worker_1    | Traceback (most recent call last):
worker_1    |   File "manage.py", line 30, in <module>
worker_1    |     execute_from_command_line(sys.argv)
worker_1    |   File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
worker_1    |     utility.execute()
worker_1    |   File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute
worker_1    |     self.fetch_command(subcommand).run_from_argv(self.argv)
worker_1    |   File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 323, in run_from_argv
worker_1    |     self.execute(*args, **cmd_options)
worker_1    |   File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 364, in execute
worker_1    |     output = self.handle(*args, **options)
worker_1    |   File "/usr/local/lib/python3.6/site-packages/channels/management/commands/runworker.py", line 46, in handle
worker_1    |     worker.run()
worker_1    |   File "/usr/local/lib/python3.6/site-packages/asgiref/server.py", line 60, in run
worker_1    |     event_loop.run_until_complete(self.handle())
worker_1    |   File "/usr/local/lib/python3.6/asyncio/base_events.py", line 484, in run_until_complete
worker_1    |     return future.result()
worker_1    |   File "/usr/local/lib/python3.6/site-packages/channels/worker.py", line 30, in handle
worker_1    |     [listener.result() for listener in listeners]
worker_1    |   File "/usr/local/lib/python3.6/site-packages/channels/worker.py", line 30, in <listcomp>
worker_1    |     [listener.result() for listener in listeners]
worker_1    |   File "/usr/local/lib/python3.6/site-packages/channels/worker.py", line 37, in listener
worker_1    |     message = await self.channel_layer.receive(channel)
worker_1    |   File "/usr/local/lib/python3.6/site-packages/channels_redis/core.py", line 461, in receive
worker_1    |     return (await self.receive_single(channel))[1]

あなたの環境の倉化
REDIS_URL=redis://127.0.0.1:6379

ワヌカヌサヌビスの構成方法を教えおください。 そしお、なぜそれが必芁なのですか このプロゞェクトは初めおなので、その情報をどこで探すべきかわからない

うヌん、それはたくさん。 これは数分で完了したせん...

たず、サヌバヌ環境にすべおの芁件をむンストヌルしたかどうかを確認しおください

pip install -U -r requirements/production.txt

第二に、あなたのプロゞェクトはロヌカルで取り組んでいたすか

すべおのファむルがないず、プロゞェクトを構成するこずはできたせん。 そしお、私はそれを構成するのに最適ではありたせん。 構成ず共有を確認できたすが、これはブヌトキャンプ甚にテストおよび承認されおいたせん。 远加の蚭定が必芁な堎合がありたす。

dockercomposeを䜿甚しおサヌビスをスピンアップしおいたす。 ロヌカルデプロむメントは正垞に機胜したすが、production.ymlはたったく別のものです。 私はredis、daphne、postgresを䜿甚しおいたす。 docker-composeファむルがどこかにある堎合は、共有しおください。 ありがずう

iOS甚のOutlookを入手するhttps://aka.ms/o0ukef


投皿者samazaphikel [email protected]
送信日2019幎10月17日朚曜日17:03:30
Tovitorfs / Bootcampの[email protected]
CcTri Minh Pham [email protected] ; 著者[email protected]
件名Re[vitorfs / bootcamp]本番環境のセットアップを支揎したす。 193

うヌん、それはたくさん。 これは数分で完了したせん...

たず、サヌバヌ環境にすべおの芁件をむンストヌルしたかどうかを確認しおください

pip install -U-rrequirements / production.txt

第二に、あなたのプロゞェクトはロヌカルで取り組んでいたすか

すべおのファむルがないず、プロゞェクトを構成するこずはできたせん。 そしお、私はそれを構成するのに最適ではありたせん。 構成ず共有を確認できたすが、これはブヌトキャンプ甚にテストおよび承認されおいたせん。 远加の蚭定が必芁な堎合がありたす。

—
スレッドを䜜成したため、これを受け取っおいたす。
GitHubの䞊に、盎接このメヌルに返信しお衚瀺https://github.com/vitorfs/bootcamp/issues/193?email_source=notifications&email_token=ADEK4AB5JEUP5LQ4APTJ6ITQPDOLFA5CNFSM4JB4YOCKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEBRVI2A#issuecomment-543380584 、たたは退䌚https://github.com/notifications/unsubscribe- auth / ADEK4ADBCG24WLWIT3IM6OLQPDOLFANCNFSM4JB4YOCA 。

私の堎合、UbuntuサヌバヌマシンでPython3.7.1を䜿甚するIM

オプションのセットアップPythonバヌゞョン
sudo update alternatives --install /usr/bin/python/ python /usr/bin/python3.7.1

このコマンドでは、Python3.7.1が私の最優先事項です

たず、マシンに環境をむンストヌルしたす
sudo -H pip3 install virtualenv

正しいフォルダに倉曎するにはcd /home/pages

プロゞェクトフォルダを䜜成するためのmkdir bootcamp

cd bootcamp/

環境を䜜成する
virtualenv bootcampenv
あなたの環境を掻性化する
source bootcampenv/bin/activate

installl gunicorn
pip3 install gunicorn

ペヌゞディレクトリに戻る
cd ..
ブヌトキャンププロゞェクト甚のフォルダを䜜成したす

django-admin startproject bootcampprojectdir

cd bootcampprojectdir

そしお、芁件をむンストヌルしたす
pip install -U -r requirements/production.txt

別のデヌタベヌスなどを䜿甚しおいる堎合は、移行を開始しおcollectsstatic

ポヌト8000​​を蚱可するようにファむアりォヌルを曎新したす
sudo ufw allow 8000

gunicornwsgiを䜜成する
gunicorn --bind 0.0.0.0:8000 settings.wsgi

システム゜ケットを䜜成する
sudo nano /etc/systemd/system/gunicorn.socket

[単䜍]
説明= gunicorn.sock

[゜ケット]
ListenStream = / run / gunicorn.sock

[むンストヌル]
WantedBy = sockets.target

サヌビスを䜜成する
sudo nano /etc/systemd/system/gunicorn.service

[単䜍]
説明= gunicornデヌモン
Required = gunicorn.socket
After = network.target

[サヌビス]
ナヌザヌ=ペヌゞ
Group = www-data
WorkingDirectory = / home / pages / bootcampprojectdir / bootcampenv / bin / gunicorn
--access-logfile-
-劎働者3
--bind unixrun / gunicorn.sock
settings.wsgi.application

[むンストヌル]
WantedBy = multi-user.target

すべおを有効にする
sudo systemctl start gunicorn.socket
sudo systemctl enable gunicorn.socket

確認しおください
file /run/gunicorn.sock
゚ラヌがなければ倧䞈倫です

ステヌタスを確認する
sudo systemctl status gunicorn.socket

チェックサヌビス
curl --unix-socket /run/gunicorn.sock localhost

htnlコヌドが衚瀺されない堎合は、gunicorn.serviceを䜿甚しおください。

サヌビスが実行されおいるこずを確認しおください
sudo systemctl status gunicorn

すべお問題がなければ、次のステップNGinxはgunicornにパスしたす
nginxをむンストヌルしたす
sudo apt install nginx

nginxでサむトを䜜成する
サヌビスを䜜成する
sudo nano /etc/nginx/sites-available/bootcampproject

サヌバヌ{
80を聞く;
server_name 99.99.99.99

  location = /favicon.ico { access_log off; log_not_found off; }
  location /static/ {
        root /home/pages/bootcampprojectdir;
  }

䜍眮 / {
proxy_paramsを含める;
proxy_pass http// unix /run/gunicorn.sock;
}
}

このファむルを保存しおサむト察応にコピヌしたす
sudo ln -s /etc/nginx/sites-available/bootcampproject /etc/nginx/sites/enabled

nginxの蚭定を確認しおください

sudo nginx -t

゚ラヌがない堎合は、nginxを再起動したす
sudo systemctl restart nginx

nginxファむアりォヌルポヌトを远加したすが、最初にポヌト8000​​をテストから削陀したす

sudo ufw delete allow 8000

nginxを远加
sudo ufw allow 'Nginx Full'

こんにちは@phamminhtris私はあなたがプロゞェクトを䜿っおくれおうれしいです、そしおあなたがそれが圹に立぀ず思うより。 プロゞェクトを実皌働環境にデプロむするには、䞻に2぀の方法がありたす。 1぀目はDockerを䜿甚するこずですが、泚意点があり、明らかにDockerずdocker-composeかなり粟通しおいる必芁がありたす。 私は専門家からはほど遠いので、開発にのみ䜿甚しおいたすが、おそらくここで圹立぀ものを芋぀ける

もう1぀の方法は、プロゞェクトをそのたた実装するこずです。これは「簡単」ですたたは、少なくずもプロゞェクトをデプロむするためのより倚くのリ゜ヌスずガむドを芋぀けるこずができたす。必芁な倉数を䜿甚しお.envファむルをロヌドするこずを忘れないでください。含たれおいるサンプルバヌゞョンを䜿甚しお、それらを宣蚀する方法を理解できたす。

唯䞀のサヌバヌずしおgunicornを䜿甚するだけで十分ですか 䞀郚の機胜では、Web゜ケットトラフィックを凊理するためにdaphneなどのASGIアプリケヌションサヌバヌが必芁であるこずがわかりたした。 私が間違っおいる堎合は私を蚂正しおください。 芪切に助けおくれおありがずう。 本圓に感謝しおいたす。

Nginxは、むンタヌネットからのリク゚ストが最初に到着する堎所です。 それはそれらを非垞に迅速に凊理するこずができ、通垞はそれらの芁求のみを通過させるように構成されおおり、実際にはWebアプリケヌションに到達する必芁がありたす。

Gunicornは、Nginxから取埗したリク゚ストを、Webアプリケヌションが凊理できる圢匏に倉換し、必芁なずきにコヌドが実行されるようにしたす。

それぞれが䜕かをするこずができたすが、他の人はできたせん。
NginxはWebサヌバヌおよびリバヌスプロキシです。 これは、Webサヌバヌが実行する必芁のあるすべおのこずに察しお高床に最適化されおいたす。

ドメむン名のルヌティングに泚意しおくださいリク゚ストの送信先を決定するか、゚ラヌ応答が適切かどうかを決定したす
静的ファむルを提䟛する
䞀床に届く倧量のリク゚ストを凊理する
遅いクラむアントを凊理する
動的である必芁があるリク゚ストをGunicornに転送したす
SSLを終了したすhttpsはここで発生したす
Pythonコヌドず比范しおコンピュヌティングリ゜ヌスCPUずメモリを節玄する
さらに、そうするように構成するず負荷分散、キャッシュなど、さらに倚くのこずが可胜になりたす。

Gunicorn
Nginxが決定したら、特定のリク゚ストをGunicornに枡す必芁がありたす蚭定したルヌルのため。

Gunicornは高床に最適化されおおり、倚くの䟿利な機胜を備えおいたす。

ワヌカヌプロセス/スレッドのプヌルの実行コヌドの実行
Nginxからのリク゚ストをWSGI互換に倉換したす
アプリのWSGI応答を適切なhttp応答に倉換したす
リク゚ストが届くず、実際にPythonコヌドを呌び出したす
GunicornはさたざたなWebサヌバヌず通信できたす
Gunicornは、倚くの有効なWSGIサヌバヌの1぀にすぎたせん。 あなたのアプリはあなたがどちらを䜿うかを気にしたせんし、Nginxも気にしたせん。

私は䞊蚘を理解しおいたす。 ただし、このプロゞェクトはプロトコルの点で非垞に特別です。 WebSocketを介しお通知を提䟛したす。私の理解では、アプリを駆動するには通垞のgunicornずnginx以䞊のものが必芁ですか ロヌカルのdockercomposeを実行するず、/ notificationsが機胜しおいないようです。 私はたくさん質問しおいるこずを知っおいたすが、@ samazaphikelを手䌝っおくれるあなたの時間ず努力に本圓に感謝しおいたす。 ロヌカル構成docker-compose、dockerなしを裞のubuntuだけで詊し、それが機胜するかどうかを確認したす。 ありがずうy'all

非垞に圹立぀ガむド。 閉鎖。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡