ジャンゴ+ 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に注意してください。