サーチ…


GunicornでDjangoアプリケーションを実行する

  1. ガンコンをインストールする

    pip install gunicorn

  1. 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オプションを使用してデーモンプロセスとして実行する

  1. gunicornが正常に起動すると、コンソールに次の行が表示されます

    Starting gunicorn 19.5.0

    Listening at: http://127.0.0.1:[port number] ([pid])

    .... (その他のガーコンサーバーに関する追加情報)

Herokuで展開する

  1. Heroku Toolbeltをダウンロードしてください

  2. Djangoアプリケーションのソースのルートに移動します。あなたはtkが必要です

  3. heroku create [app_name]ます。アプリ名を指定しないと、Herokuはランダムに生成します。アプリのURLはhttp://[app name].herokuapp.com

  4. Procfileという名前のテキストファイルを作成します。最後に拡張子を入れないでください。

    web: <bash command to start production server>
    

    ワーカープロセスがある場合は、追加することもできます。次の形式で別の行を追加しますworker-name: <bash command to start worker>

  5. requirements.txtを追加します。

  • 仮想環境を使用している場合は、 pip freeze > requirements.txt実行しpip freeze > requirements.txt
  • それ以外の場合は、仮想環境を取得してください! 。必要なPythonパッケージを手動でリストすることもできますが、このチュートリアルでは扱いません。
  1. 展開時間です!

    1. git push heroku master

    Herokuはデプロイメントを行うためにgitリポジトリまたはDropboxフォルダが必要です。代わりに、 heroku.com GitHubリポジトリから自動リロードを設定することもできますが、このチュートリアルでは説明しません。

    1. heroku ps:scale web=1

    これにより、ウェブの「dynos」の数が1になります。あなたはダイノスについてもっと知ることができます。

    1. heroku openか、 http://app-name.herokuapp.com heroku open移動します

    ヒント: heroku openは、デフォルトブラウザのherokuアプリへのURLを開きます。

  2. アドオン追加します 。 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つの基本的なツール。

  1. nginxフリー、オープンソース、高性能HTTPサーバとリバースプロキシ、高性能。
  2. gunicorn - 'Green Unicorn'はUNIX用のPython WSGI HTTPサーバーです(サーバーの管理に必要です)。
  3. スーパーバイザー - ユーザーが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設定にある場合にのみ使用できます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow