Django
配置
サーチ…
GunicornでDjangoアプリケーションを実行する
ガンコンをインストールする
pip install gunicorn
djangoプロジェクトフォルダ(manage.pyがあるフォルダと同じフォルダ)から、次のコマンドを実行して、現在のdjangoプロジェクトをgunicornで実行します
gunicorn [projectname].wsgi:application -b 127.0.0.1:[port number]
--env
オプションを使用して、設定をロードするパスを設定することができますgunicorn --env DJANGO_SETTINGS_MODULE=[projectname].settings [projectname].wsgi
または
-D
オプションを使用してデーモンプロセスとして実行する
gunicornが正常に起動すると、コンソールに次の行が表示されます
Starting gunicorn 19.5.0
Listening at: http://127.0.0.1:[port number] ([pid])
....
(その他のガーコンサーバーに関する追加情報)
Herokuで展開する
Heroku Toolbeltをダウンロードしてください 。
Djangoアプリケーションのソースのルートに移動します。あなたはtkが必要です
heroku create [app_name]
ます。アプリ名を指定しないと、Herokuはランダムに生成します。アプリのURLはhttp://[app name].herokuapp.com
Procfile
という名前のテキストファイルを作成します。最後に拡張子を入れないでください。web: <bash command to start production server>
ワーカープロセスがある場合は、追加することもできます。次の形式で別の行を追加します
worker-name: <bash command to start worker>
requirements.txtを追加します。
- 仮想環境を使用している場合は、
pip freeze > requirements.txt
実行しpip freeze > requirements.txt
- それ以外の場合は、仮想環境を取得してください! 。必要なPythonパッケージを手動でリストすることもできますが、このチュートリアルでは扱いません。
展開時間です!
-
git push heroku master
Herokuはデプロイメントを行うためにgitリポジトリまたはDropboxフォルダが必要です。代わりに、
heroku.com
GitHubリポジトリから自動リロードを設定することもできますが、このチュートリアルでは説明しません。-
heroku ps:scale web=1
これにより、ウェブの「dynos」の数が1になります。あなたはダイノスについてもっと知ることができます。
-
heroku open
か、http://app-name.herokuapp.com
heroku open
移動します
ヒント:
heroku open
は、デフォルトブラウザのherokuアプリへのURLを開きます。-
アドオンを追加します 。 Djangoアプリケーションを、Herokuで提供されているデータベースを「アドオン」としてバインドするように設定する必要があります。この例ではこれについては説明しませんが、Herokuでデータベースを展開する場合のパイプラインの例もあります。
シンプルなリモート展開fabfile.py
Fabricは、Python(2.5-2.7)ライブラリとコマンドラインツールで、アプリケーションのデプロイメントやシステム管理のためのSSHの使用を合理化します。コマンドラインから任意のPython関数を実行することができます。
pip install fabric
インストールファブリックを介してファブリックをpip install fabric
ルートディレクトリにfabfile.py
を作成します。
#myproject/fabfile.py
from fabric.api import *
@task
def dev():
# details of development server
env.user = # your ssh user
env.password = #your ssh password
env.hosts = # your ssh hosts (list instance, with comma-separated hosts)
env.key_filename = # pass to ssh key for github in your local keyfile
@task
def release():
# details of release server
env.user = # your ssh user
env.password = #your ssh password
env.hosts = # your ssh hosts (list instance, with comma-separated hosts)
env.key_filename = # pass to ssh key for github in your local keyfile
@task
def run():
with cd('path/to/your_project/'):
with prefix('source ../env/bin/activate'):
# activate venv, suppose it appear in one level higher
# pass commands one by one
run('git pull')
run('pip install -r requirements.txt')
run('python manage.py migrate --noinput')
run('python manage.py collectstatic --noinput')
run('touch reload.txt')
ファイルを実行するには、単にfab
コマンドを使用しfab
。
$ fab dev run # for release server, `fab release run`
注意:githubのsshキーを設定することはできず、ログインとパスワードは手動で入力するだけですが、fabfileはキーと同じように実行します。
Heroku Djangoスターターテンプレートを使用する。
HerokuであなたのDjango Webサイトをホストする予定の場合は、Heroku Django Starter Templateを使用してプロジェクトを開始できます:
django-admin.py startproject --template=https://github.com/heroku/heroku-django-template/archive/master.zip --name=Procfile YourProjectName
静的ファイル、データベース設定、Gunicornなどのプロダクション対応の設定と、WhiteNoiseによるDjangoの静的ファイル提供機能の拡張機能を備えています。これはあなたの時間を節約します。それはHerokuでのホスティングのためのオールレディです。このテンプレートの上にあなたのウェブサイトを構築するだけです
Herokuでこのテンプレートを展開するには:
git init
git add -A
git commit -m "Initial commit"
heroku create
git push heroku master
heroku run python manage.py migrate
それでおしまい!
Djangoデプロイメントの指示。 Nginx + Gunicorn + Supervisor on Linux(Ubuntu)
3つの基本的なツール。
- nginxフリー、オープンソース、高性能HTTPサーバとリバースプロキシ、高性能。
- gunicorn - 'Green Unicorn'はUNIX用のPython WSGI HTTPサーバーです(サーバーの管理に必要です)。
- スーパーバイザー - ユーザーがUNIXライクなオペレーティングシステム上の多くのプロセスを監視および制御できるようにするクライアント/サーバーシステム。あなたがアプリやシステムクラッシュ時に使用、あなたのdjango /セロリ/セロリカムなどを再起動します。
簡単にするために、あなたのアプリが/home/root/app/src/
ディレクトリにあると仮定して、 root
ユーザーを使用します(ただし、あなたのアプリケーション用に別のユーザーを作成する必要があります)。また、仮想環境は/home/root/app/env/
pathにあります。
NGINX
nginxから始めましょう。 nginxがまだマシンにない場合は、 sudo apt-get install nginx
。後でnginxディレクトリ/etc/nginx/sites-enabled/yourapp.conf
新しい設定ファイルを作成する必要があります。 default.conf
という名前のファイルがある場合は削除します。
ソケットファイルを使用してサービスを実行しようとするnginx confファイルのベローコード。後でガンコーンの構成があります。ソケットファイルは、nginxとgunicornの間で通信するためにここで使用されます。また、ポートを使用して行うこともできます。
# your application name; can be whatever you want
upstream yourappname {
server unix:/home/root/app/src/gunicorn.sock fail_timeout=0;
}
server {
# root folder of your application
root /home/root/app/src/;
listen 80;
# server name, your main domain, all subdomains and specific subdomains
server_name yourdomain.com *.yourdomain.com somesubdomain.yourdomain.com
charset utf-8;
client_max_body_size 100m;
# place where logs will be stored;
# folder and files have to be already located there, nginx will not create
access_log /home/root/app/src/logs/nginx-access.log;
error_log /home/root/app/src/logs/nginx-error.log;
# this is where your app is served (gunicorn upstream above)
location / {
uwsgi_pass yourappname;
include uwsgi_params;
}
# static files folder, I assume they will be used
location /static/ {
alias /home/root/app/src/static/;
}
# media files folder
location /media/ {
alias /home/root/app/src/media/;
}
}
GUNICORN
今、私たちのGUNICORNスクリプトは、サーバー上でdjangoアプリケーションを実行する責任があります。まず、ガンコンをインストールして、仮想環境にpip install gunicorn
。
#!/bin/bash
ME="root"
DJANGODIR=/home/root/app/src # django app dir
SOCKFILE=/home/root/app/src/gunicorn.sock # your sock file - do not create it manually
USER=root
GROUP=webapps
NUM_WORKERS=3
DJANGO_SETTINGS_MODULE=yourapp.yoursettings
DJANGO_WSGI_MODULE=yourapp.wsgi
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source /home/root/app/env/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
# Start your Django Gunicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec /home/root/app/env/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name root \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-
gunicornの起動スクリプトを実行できるようにするには、実行モードを有効にする必要があります
sudo chmod u+x /home/root/app/src/gunicorn_start
今、あなただけの使用であなたのgunicornサーバーを起動することができるようになります./gunicorn_start
監督者
最初に述べたように、私たちはスーパーバイザーが失敗したときにアプリケーションを再開させたいと思っています。スーパバイザがまだsudo apt-get install supervisor
でサーバにインストールされていない場合sudo apt-get install supervisor
。
最初にスーパーバイザーをインストールします。次に、作成.conf
メインディレクトリ内のファイルを/etc/supervisor/conf.d/your_conf_file.conf
設定ファイルの内容:
[program:yourappname]
command = /home/root/app/src/gunicorn_start
user = root
stdout_logfile = /home/root/app/src/logs/gunicorn_supervisor.log
redirect_stderr = true
クイックブリーフ、最初に[program:youappname]
が必要です。これは私たちの識別子になります。また、 stdout_logfile
は、ログがアクセスとエラーの両方に格納されるファイルです。
それが完了したら、上司に新しい設定ファイルを追加したことを伝える必要があります。これを行うために、異なるUbuntuのバージョンのための異なるプロセスがあります。
Ubuntu version 14.04 or lesser
以下の場合は、以下のコマンドを実行してください:
sudo supervisorctl reread
- >スーパバイザカタログ内のすべての設定ファイルを読み直します 。これは次のように表示されます : yourappname:available
sudo supervisorctl update
- >スーパーバイザーを新しく追加された設定ファイルに更新します。 yourappname:プロセスグループを追加してください
Ubuntu 16.04
場合:
sudo service supervisor restart
あなたのアプリが正しく動作しているかどうかを確認するために
sudo supervisorctl status yourappname
これが表示されます:
yourappname RUNNING pid 18020, uptime 0:00:50
この手順のライブデモンストレーションをするには、このビデオを見てください 。
apache / nginxを設定せずにローカルにデプロイする
静的コンテンツを提供するためにApache / Nginxを使用するためのプロダクションデプロイメントの推奨方法。したがって、 DEBUG
がfalseの場合、静的およびメディアの内容はロードされません。ただし、アプリケーションでApache / Nginxサーバーを設定しなくても、静的コンテンツをデプロイメントに読み込むことができます。
python manage.py runserver --insecure
これはローカル展開(LANなど)のみを対象としており、 staticfiles
は使用しないでくださいstaticfiles
アプリケーションがプロジェクトのINSTALLED_APPS
設定にある場合にのみ使用できます。