セロリとREDISでDjangoを展開すること
ほとんどの場合、プロジェクト自体の実行前にプロジェクト展開の困難について考えています.このポストを書くことの私の目的は、Linuxマシンでdjangoプロジェクトを展開することがいかに簡単かを示すことです.
Djangoの主要な配備プラットホームは、そうですWSGI , WebサーバとアプリケーションのPython標準.Djangoを実行するアートはNginx、Gunicorn、Virtualenv、監督などのツールが含まれています.あまりにもなく、圧延を取得しましょう!
我々が始める前に、我々が配備のためにどんな環境を使用するかについて理解しましょう. オペレーティングシステム- Ubuntu Python 3.7.3link 最新版をインストールするには
私たちはあなたが持っていると仮定します
第二に、Gitを通してクローンに利用できるJjangoプロジェクトがあると仮定します.我々のDjangoプロジェクトは、バックグラウンドタスク処理のためにセロリとREDISを必要とします.
📘 ノート あなたのプロジェクトはセロリとRedisを必要としないかもしれません、したがって、あなたはDjango配備だけに集中するために対応するセクションをスキップすることができます インストールする必要があります すべてのコマンドは 簡単にするには、次の手順に分けます. 必須パッケージのインストール Djangoプロジェクトの設定 セロリ用redisのインストール ガンコーンの設置 スーパーバイザーの設置 nginxの設定
我々のシステムが最新であることを確認することから始めましょう
Pythonプロジェクトを設定する最初のステップは、パッケージマネージャをインストールすることです
プロジェクトの仮想環境を作成する前に、セットアップフォルダの構造を理解しましょう.デフォルトでは、Ubuntuはこのベースフォルダに私たちを着陸させます
仮想環境を創ろう
プロジェクトのクローン
仮想環境をアクティブにし、プロジェクトのすべての依存関係をインストールする
Celery 分散メッセージパッシングに基づく非同期タスクキュー/ジョブキューです.タスクキューは、スレッドやマシン間でワークを配布するメカニズムとして使用されます.セロリの使用例のいくつかは、電子メール、スケジューリングタスク、非同期実行などを送信しています.セロリはメッセージ転送をRabbitmq、Redisなどのメッセージを送受信する必要があります.
Redisのインストール
生産では、我々はDjangoのシングルスレッド開発サーバーを使用していませんが、専用のアプリケーションサーバーと呼ばれる
アプリケーションの仮想環境でgunicornをインストールします
< div >
<高橋潤子>スタートアップスクリプト< br/>に実行可能ビットを設定する
<> P >
クラスをハイライト表示する
<高橋潤子>
<> P >
クラスをハイライト表示する
スクリプトスクリプトInsight
<ウル> プロジェクトの設定に合わせてパスとファイル名を設定する必要があります オプション エラーが発生した場合 < ull >
< p >最も重要なステップの一つは設定することです
監視者のサーバピースを命名します
<高橋潤子>
<> P >
クラスをハイライト表示する
管理者は設定ファイル(. conf)で処理を管理します.見つけるでしょう
< OL >
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/idris-rampurawala/d34954a476141f7b7bdf00eeca6ee1dd.js?file=gunicorn-監督.conf "/>
< div >
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/idris-rampurawala/809a673261ef2713285797670c124c20.js?file=celery-ビート監督.conf "/>
< div >
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/idris-rampurawala/5c6027a9a875471997e8199778f55361.js?file=celery-労働監督.conf "/>
< div >
< OL >
これらの設定ファイルを保存したら、コマンドラインユーティリティを使用して変更のスーパーバイザに通知する必要があります
<> P >
クラスをハイライト表示する
< p >役に立つ
<> P >
クラスをハイライト表示する
< p >はジャンゴを設定する複雑さを感じていますか?続けて!これが最後の一歩です😬 nginxの設定は簡単です.br/>
<> P >
クラスをハイライト表示する
最後に、nginx設定ファイルを作成します
<> P >
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/idris-rampurawala/7fb3b78c2c43fe8e1919f1a9efd78ca4.js?file=nginx- gunicorn.conf "/>
< div >
そして、我々は日のためにされます!br/>
<> P >
クラスをハイライト表示する
我々は、我々から我々のジャンゴルートにアクセスすることができなければなりません
< p >おめでとう!👏 我々は首尾よくセロハンとRedisと一緒にUbuntuの上でdjangoプロジェクトを設定している.チェックするのを忘れないでください
<ウル> virtualenv Gunicorn Supervisor Celery Redis < ull >
私の以前のポストをチェックアウト
<> P >
< div class ="Lagagchen - chen link "
< div >
< p >私の次のポストまで😋
Djangoの主要な配備プラットホームは、そうですWSGI , WebサーバとアプリケーションのPython標準.Djangoを実行するアートはNginx、Gunicorn、Virtualenv、監督などのツールが含まれています.あまりにもなく、圧延を取得しましょう!
環境
我々が始める前に、我々が配備のためにどんな環境を使用するかについて理解しましょう.
必要条件
私たちはあなたが持っていると仮定します
root
Ubuntuシステムへのアクセスに必要なパッケージをインストールします.私たちはubuntu
ユーザー(AWS Ubuntu AMIが付属しているデフォルト)は、以下の構成のすべてを実行します.第二に、Gitを通してクローンに利用できるJjangoプロジェクトがあると仮定します.我々のDjangoプロジェクトは、バックグラウンドタスク処理のためにセロリとREDISを必要とします.
📘 ノート
Database
or RabbitMQ
非常に簡単で、インストールスクリプトから離れて走るどんなサーバー構成も必要としないあなたのプロジェクトに従ってubuntu
として示されているrootアクセスを持つユーザ$
このポストを通してリストされるコマンドで.接頭辞(myproj_env)$
, コマンドは仮想環境で実行されなければなりません必須パッケージのインストール
我々のシステムが最新であることを確認することから始めましょう
$ sudo apt-get update
次に、実行するアプリケーションのグローバルパッケージをインストールします(Djangoプロジェクト依存関係に基づいて、追加のパッケージを必要とする場合があります).$ sudo apt-get install libmysqlclient-dev python3-dev
Djangoプロジェクトの設定
pip
) 仮想環境を設定します.私たちはvirutalenv
パッケージ# installing pip for Python 3.7
$ curl https://bootstrap.pypa.io/get-pip.py | sudo -H python3.7
# installing virtualenv
$ sudo pip3 install virtualenv
/home/ubuntu/
. マシン上のプロジェクトを正しく識別するにはwebapps
フォルダを作成し、その下のすべてのログ、プロジェクトフォルダを作成します.プロジェクトの構造は次のようになります# base folder
/home/ubuntu/webapps/
# under webapps
/webapps
│---projects # Base folder for our project
│---myproj_env # Django project virtual environment
│---myproj # Django project directory
│ │---manage.py
│ │---Myproj
│ |---requirements.txt
logs # All our logs would be inside this folder
│---gunicorn
│---redis
│---nginx
|---celery
上から、プロジェクト名はmyproj
( git - repo )と仮想環境名myproj_env
projects
上記のフォルダ$ cd /home/ubuntu/webapps/projects # create folders if you haven't created
# virutal environment for python 3.7
$ virtualenv -p python3.7 myproj_env
myproj
インprojects
フォルダ$ cd /home/ubuntu/webapps/projects
# clone the repository
$ git clone <myproj-git-link>
$ cd /home/ubuntu/webapps/projects
# activate virtual envrionment
$ source myproj_env/bin/activate
# installing project dependencies
(myproj_env)$ cd /home/ubuntu/webapps/projects/myproj
(myproj_env)$ pip install -r requirements.txt
# optionally, check if django is running locally
(myproj_env)$ python manage.py runserver
セロリにredisをインストールする
Celery 分散メッセージパッシングに基づく非同期タスクキュー/ジョブキューです.タスクキューは、スレッドやマシン間でワークを配布するメカニズムとして使用されます.セロリの使用例のいくつかは、電子メール、スケジューリングタスク、非同期実行などを送信しています.セロリはメッセージ転送をRabbitmq、Redisなどのメッセージを送受信する必要があります.
Redisのインストール
$ sudo apt-get install redis-server
# check if Redis is working
$ redis-cli ping
PONG
# Autostart Redis on server restart
$ sudo systemctl enable redis-server.service
セロリは、プロジェクト依存ファイルに一般的に含まれるプロジェクトの仮想環境にインストールできますrequirements.txt
GunCornの設定
生産では、我々はDjangoのシングルスレッド開発サーバーを使用していませんが、専用のアプリケーションサーバーと呼ばれる
gunicorn
.アプリケーションの仮想環境でgunicornをインストールします
$ cd /home/ubuntu/webapps/projects
# activate virtual envrionment
$ source myproj_env/bin/activate
# installing gunicorn
$ cd /home/ubuntu/webapps/projects/myproj
(myproj_env):$ pip install gunicorn
# optionally, check if it is running
(myproj_env):$ gunicorn Myproj.wsgi:application --bind 8001
[2019-11-04 04:52:01 +0000] [2010] [INFO] Starting gunicorn 19.9.0
[2019-11-04 04:52:01 +0000] [2010] [INFO] Listening at: http://0.0.30.60:8000 (2010)
[2019-11-04 04:52:01 +0000] [2010] [INFO] Using worker: sync
[2019-11-04 04:52:01 +0000] [2013] [INFO] Booting worker with pid: 2013
# make sure you kill Gunicorn process after you have tested to move further
Gunicornは我々のアプリのリクエストを提供する準備が整いました.私たちは今からGunicornサーバーにアクセスできるようになりましたhttp://<server-IP-address>:8001
. を作成しましょうBash
スクリプトを自動的にいくつかのカスタム設定でgunicornサーバーを起動します.このbashスクリプトを保存しますprojects
フォルダとしてgunicorn_start.bash
それで、我々のフォルダ構造は以下のように見えます/webapps
│---projects # Base folder for our project
│---myproj_env # Django project virtual environment
│---run # create this folder to hold gunicorn sock file
│---gunicorn.sock # just create this empty file
│---myproj # Django project directory
│---gunicorn_start.bash # Gunicorn Bash script
スクリプトスクリプト< div >
<高橋潤子>スタートアップスクリプト< br/>に実行可能ビットを設定する
<> P >
クラスをハイライト表示する
# make sure you are in the projects folder
$ chmod u+x gunicorn_start.bash
< div ><高橋潤子>
<> P >
クラスをハイライト表示する
# make sure you are in the projects folder
$ ./gunicorn_start.bash
# make sure you kill Gunicorn process after you have tested to move further
< div >スクリプトスクリプトInsight
<ウル>
--workers (NUM_WORKERS)
gunicornがトラフィックを処理するために産卵するプロセスプロセスを指定します.一般的な考えは、式に従って設定することです2 * CPUs + 1
/run/gunicorn.sock: No such file or directory
, 空を作るgunicorn.sock
インrun
フォルダスーパーバイザの設定
< p >最も重要なステップの一つは設定することです
Supervisor
. スーパーバイザは、ユーザーがUnixのようなオペレーティングシステムで多くのプロセスをモニターして、コントロールすることができるシステムです.私たちは、サーバー(GunCorn)が自動的にシステムを起動し、それが予期せずに終了した場合に自動的に再起動することができますことを確認する必要があります.これらのタスクはスーパーバイザによって簡単に扱うことができます.p >監視者のサーバピースを命名します
supervisord
そして、コマンドラインピースsupervisorctl
.<高橋潤子>
<> P >
クラスをハイライト表示する
$ sudo apt-get install supervisor
< div >管理者は設定ファイル(. conf)で処理を管理します.見つけるでしょう
supervisord.conf
イン/etc/supervisor
管理者プロセスに関連するグローバル設定を設定する.プロジェクト関連のプロセスを設定するには/etc/supervisor/conf.d
プロセスを管理する< OL >
gunicorn.conf
- 前の手順で設定したgunicornサーバを管理し、bashスクリプトを使用して自動的に実行します< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/idris-rampurawala/d34954a476141f7b7bdf00eeca6ee1dd.js?file=gunicorn-監督.conf "/>
< div >
celery_beat.conf
- 定期的にタスクをキックオフするスケジューラ< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/idris-rampurawala/809a673261ef2713285797670c124c20.js?file=celery-ビート監督.conf "/>
< div >
celery_worker.conf
- セロリの仕事を実行するセロリ労働者< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/idris-rampurawala/5c6027a9a875471997e8199778f55361.js?file=celery-労働監督.conf "/>
< div >
これらの設定ファイルを保存したら、コマンドラインユーティリティを使用して変更のスーパーバイザに通知する必要があります
supervisorctl
<> P >
クラスをハイライト表示する
# for every change in conf file, we need to execute the following commands
$ sudo supervisorctl reread
$ sudo supervisorctl update
$ sudo supervisorctl start all # starting all our processes
< div >< p >役に立つ
supervisorctl
コマンド< br/><> P >
クラスをハイライト表示する
# to check the status of our processes
$ sudo supervisorctl status <program_name|all>
# example
$ sudo supervisorctl status all
celery RUNNING pid 1413, uptime 7:59:29
celerybeat RUNNING pid 1411, uptime 7:59:29
my_proj RUNNING pid 1412, uptime 7:59:29
# to start, stop, restart all or some of the processes
$ sudo supervisorctl start <program_name|all>
$ sudo supervisorctl restart <program_name|all>
$ sudo supervisorctl stop <program_name|all>
< div >nginxの設定
< p >はジャンゴを設定する複雑さを感じていますか?続けて!これが最後の一歩です😬 nginxの設定は簡単です.br/>
<> P >
クラスをハイライト表示する
# installing Nginx
$ sudo apt-get install nginx
# optionally execute following command to autostart nginx on system reboot
$ sudo update-rc.d nginx defaults
< div >最後に、nginx設定ファイルを作成します
myproj.conf
アット/etc/nginx/conf.d
NGinxからGunicorn < br/>へのリクエストを開始するには<> P >
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/idris-rampurawala/7fb3b78c2c43fe8e1919f1a9efd78ca4.js?file=nginx- gunicorn.conf "/>
< div >
そして、我々は日のためにされます!br/>
<> P >
クラスをハイライト表示する
$ sudo service nginx restart
< div >我々は、我々から我々のジャンゴルートにアクセスすることができなければなりません
http://<server-IP-address>
最終語
< p >おめでとう!👏 我々は首尾よくセロハンとRedisと一緒にUbuntuの上でdjangoプロジェクトを設定している.チェックするのを忘れないでください
Useful Links
このポストで使用されるツール/ライブラリについての詳細を読むためのリンクを見つけるために.p >便利なリンク⭐
<ウル>
私の以前のポストをチェックアウト
Configure SSH for git
すべてのgitプルでパスワードを入力を取り除く😎<> P >
< div class ="Lagagchen - chen link "
gsh用のsshの設定
イリスランプルワラ・ 8月7日・ 4分読む
#git
#devops
#ssh
< div >
< p >私の次のポストまで😋
Reference
この問題について(セロリとREDISでDjangoを展開すること), 我々は、より多くの情報をここで見つけました https://dev.to/idrisrampurawala/deploying-django-with-celery-and-redis-on-ubuntu-3fo6テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol