ジャンゴ+ nginxの+ Gunicornの展開

ジャンゴ+ nginxの+ Gunicornの展開

まず、準備

1、バージョン

  • Ubuntuの18
  • python 3.6.5
  • ジャンゴ1.11.12
  • nginxの1.14.0
  • Gunicorn 19.9.0
  • 1.4.0を行商

2、インストール(サーバー)

1、nginxのインストール

sudo apt install nginx

2、インストールのpython3(既にインストール無視してください)

# ubuntu 18 自带的就是3.6.5 其它Ubuntu版本的请使用命令安装
sudo apt update
sudo apt install python3.6

3、ピップをインストール(すでにインストール無視してください)

sudo apt-get install python3-pip

4、仮想環境をインストールします

sudo pip install virtualenv

二、Djangoプロジェクト

1、構成変更

1、ホストを修正し、デバッグを閉じました

#在Django的settings配置文件中将DEBUG,ALLOWED_HOSTS

DEBUG = False

#设置允许访问的ip地址,*代表所有,也可以写具体的ip地址
ALLOWED_HOSTS = [ '*' ]

図2は、図1のデータ接続を変更します。
ここに画像を挿入説明
3、静的リソース・パッケージを
ここに画像を挿入説明
コマンドcollectstaticを使用
ここに画像を挿入説明
。4、ライブラリはルートに依存するプロジェクトにプロジェクトをエクスポート

pip freeze > requirements.txt

2、アップロードされたアイテム

1、注

最好将本地项目复制一份,然后将项目下的虚拟环境删除

図2に示すように、窓のグラフィカルインタフェースツールまたはXshel WinSCPのに使用することができます

scp -r 本地项目根目录绝对路径 服务器用户名@服务器ip地址:上传服务器的目录

コマンドを使用して、3、LinuxまたはMAC

scp -r 本地项目根目录绝对路径 服务器用户名@服务器ip地址:上传服务器的目录
例如:scp /home/xxx/work/PycharmProjects/DjangoDeployExample [email protected]:/home/www/django

3、仮想環境を作成するために、リモート・サーバへの接続

1.説明

由于python兼容性的问题,不建议在全局环境中部署,而且一个服务器有可能部署多个项目,所以推荐在虚拟环境中部署
连接远程服务器
ssh 用户名@IP地址 -p 端口号(默认80)

2、インストールされた仮想環境

sudo pip install virtualenv

仮想環境を作成するための3、

# 在项目的根目录(建议),也可以在其他地方均可
cd /home/www/django

# 创建虚拟环境,名字随意
virtualenv venv

4、仮想環境を活性化させます

source .venv/bin/activate

4、仮想環境をインポート

ピップを使用してください

pip install -r requirement.txt

三、Gunicorn

1、インストール

1、プロジェクトの仮想環境にインストールするgunicorn

# 如果下载速度过慢使用国内源
pip3 install gunicorn -i https://pypi.douban.com/simple

2は、仮想環境のプロジェクトにインストールgevent

# 基于协程的库,提高并发量
pip3 install gevent -i https://pypi.douban.com/simple

2、Gunicornでプロジェクトを開始

2.1、コマンドを開始する(推奨されません)

1、コマンド

# 常见的参数
gunicorn -w 10 -k 'gevent' -b 0.0.0.0:9000 DjangoDeployExample.wsgi:application --reload -t 500 -D --access-logfile logs/gunicorn.log

2.パラメータ説明
ここに画像を挿入説明
ここに画像を挿入説明

2.2コンフィギュレーションファイルを介して(共通の)開始

1.ファイルgunicorn.confを作成します。

# 并行工作进程数
workers = 4
# 指定每个进程的线程数
threads = 2
# 监听内网端口8000
bind = '192.168.58.44:8000'
# 设置守护进程(linux有效)
daemon = 'true'
# 工作模式协程
worker_class = 'gevent'
# 设置最大并发量
worker_connections = 2000
# 设置进程文件目录
pidfile = '/home/xxx/work/DjangoDeployExample/product/gunicorn//gunicorn.pid'
# 设置访问日志和错误信息日志路径
accesslog = '/home/xxx/work/DjangoDeployExample/product/gunicorn/logs/gunicorn_acess.log'
errorlog = '/home/xxx/work/DjangoDeployExample/product/gunicorn/logs/gunicorn_error.log'
# 设置日志记录水平
loglevel = 'error'

2、スタート

gunicorn -c gunicorn.conf DjangoDeployExample.wsgi:application

3、注

注意用户权限问题,比如pid文件 访问日志 errorlog 如果权限不够可以给目录授权一下

四、nginxの

1.説明

このチュートリアルでは、通常は/ etc / nginxの/中にデフォルトでインストールされ、インストールするコマンドである、パッケージのインストールをダウンロードしてインストールし、独自の特定のクエリ、特定の詳細のいくつかは、ここで提示されていない、彼らのカタログに応じて設定することができます

注:仮想環境内のすべての上に、コマンドウィンドウシステムを使用してください

2、コマンド

nginxのを開始するかどうかを確認するには1、

ps aux|grep nginx

ここに画像を挿入説明
2、エラーのnginxの設定ファイルを確認してください

# -t 测试     nginx的配置文件
sudo nginx -t xxx/xxx/nginx.conf

設定ファイルによって開始3、

sudo nginx -c xxx/xxx/nginx.conf

4、近いnginxの

nginx -s stop
# 其它方式
sudo pkill -9 nginx 

3.リバースプロキシ

1は、nginx.conf設定ファイルは
直接nginxの設定ファイルを変更することは推奨されません、それはコンフィギュレーションファイルのコピーを指定して起動するのが最善の方法です

# 用户  用户名    用户组
user  zhangwei  zhangwei;
#设置值和CPU核心数一致
worker_processes auto;
# 全局错误日志 (注意权限)
error_log  /home/xxx/work/PycharmProjects/DjangoDeployExample/product/nginx/logs/error.log;
# pid文件所在目录 (注意权限)
pid  /home/xxx/work/PycharmProjects/DjangoDeployExample/product/nginx//nginx.pid;
# events块配置
events {
  # 事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
  use epoll;
  # 单个work进程允许的最大连接数,默认为512
  worker_connections 65535;
}
# http块配置
http {
    # 文件扩展名与文件类型映射表。设定mime类型(邮件支持类型),类型由mime.types文件定义
    # 
    include /etc/nginx/mime.types;
    #默认文件类型,默认为text/plain
    default_type application/octet-stream;
    # http模块的的访问日志
    access_log  /home/zhangwei/work/PycharmProjects/DjangoDeployExample/product/nginx/logs/access.log;
    # #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    #(sendfile系统调用不需要将数据拷贝或者映射到应用程序地址空间中去)
    sendfile  on;
    # 连接超时时间,默认为75s,可以在http,server,location块
    keepalive_timeout  65;
    server {
        listen       80;
        #  有域名的话绑定域名,没域名写ip地址
        server_name  www.hello.com;
        # 全局错误的界面
        error_page  404  /404.html;
        # 反向代理的路径(和upstream绑定),location后面设置映射的路径
        location / { 
           # 注意代理的ip地址一定要和gunicorn里的端口一致
           proxy_pass http://192.168.58.44:8000;
           proxy_pass_header       Authorization;
           proxy_pass_header       WWW-Authenticate;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        # 处理静态文件
        location /static {
            alias  /home/xxx/work/PycharmProjects/DjangoDeployExample/static;
            # 过期30天,静态文件不怎么更新,过期可以设大一点,
             # 如果频繁更新,则可以设置得小一点。
            expires 30d;
        }
     # 多媒体资源等文件 路径
        location /media {
            alias /home/xxx/work/PycharmProjects/DjangoDeployExample/media/;
            # 过期30天,静态文件不怎么更新,过期可以设大一点,
            # 如果频繁更新,则可以设置得小一点。
            expires 30d;
        }
    }
}

直接nginxの上のプロジェクトの下で、この場合は2、

sudo nginx -c xxx/xxx/nginx.conf

3、注

  • ログファイルのパーミッションの問題pidファイルのパーミッションの問題に注意を払う必要があります
  • プロキシのIPアドレスポートは、一貫してgunicornでなければなりません
  • デフォルトのコンフィギュレーション・ファイルのnginxを変更していないので、導入されたパスのmime.typesに注意してください。

おすすめ

転載: blog.csdn.net/qq_38953577/article/details/90672037