文章目录
Nginx+uwsgi部署Django
#0 GitHub
None
#1 环境
CentOS6.9 ( 腾讯云服务器 )
Python 3.6.4
Django==2.0.7
#2 开始
#2.1 新建一个Django项目
项目根目录(把django项目放在opt目录下)
/opt
#2.2 项目结构
工程名:pro
app名:app
.
├── app
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── manage.py
├── pro
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── templates
#2.3 修改settings.py
因为不涉及到数据库,所以把数据库配置删掉
#DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# }
允许所有url访问
ALLOWED_HOSTS = ["*"]
#3 uwsgi
#3.1 安装uwsgi
pip3 install uwsgi
#3.2 使用uwsgi启动django项目
安装django
pip3 install django==2.0.7
进入项目根目录(/opt/pro)
cd /opt/pro/
uwsgi --http 0.0.0.0:8080 --file pro/wsgi.py --static-map=/static=static
解释上述命令
--http 0.0.0.0:8080 # 指定ip,因为我用的是云服务器,所以是0.0.0.0,如果用的是虚拟机,把0.0.0.0改成虚拟机内网ip(猜测,没有实践过)
--file pro/wsgi.py # 指定django项目中wsgi.py文件
--static-map=/static=static # 静态文件
#3.3 使用uwsgi配置文件启动django项目(重点)
在项目根目录下新建文件夹 script
cd /opt/pro/
mkdir script
在script目录下新建 uwsgi.ini
cd script
vim uwsgi.ini
填入以下内容
# uwsig使用配置文件启动
[uwsgi]
# 项目目录
chdir=/opt/pro/
# 指定项目的application
module=pro.wsgi:application
# 指定sock的文件路径
socket=/opt/pro/script/uwsgi.sock
# 进程个数
workers=5
pidfile=/opt/pro/script/uwsgi.pid
# 指定IP端口 云服务器需要改成 0.0.0.0
http=0.0.0.0:8080
# 指定静态文件
static-map=/static=/opt/pro/pro/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/opt/pro/script/uwsgi.log
启动uwsgi
cd /opt/pro/script/
uwsgi --ini uwsgi.ini # 启动uwsgi
uwsgi相关操作
uwsgi --ini uwsgi.ini # 启动
uwsgi --stop uwsgi.pid # 关闭
#4 Nginx
#4.1 安装Nginx
配置yum源
vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
# 下面这行centos根据你自己的操作系统修改比如:OS/rehel
# 6是你Linux系统的版本,可以通过URL查看路径是否正确
baseurl=http://nginx.org/packages/centos/6/\$basearch/
gpgcheck=0
enabled=1
安装nginx
yum -y install nginx
测试是否安装完成,命令启动nginx
/etc/init.d/nginx start
#4.2 Django + Uwsgi + Nginx
创建配置文件
cd /etc/nginx/conf.d/
vim pro.conf
server {
listen 80;
server_name 192.144.190.22;
access_log /var/log/nginx/access.log main;
charset utf-8;
gzip on;
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# 指定项目路径uwsgi
location / {
include uwsgi_params;
uwsgi_connect_timeout 30;
uwsgi_pass unix:/opt/pro/script/uwsgi.sock;
}
# 指定静态文件路径
location /static/ {
alias /opt/pro/pro/static/;
index index.html index.htm;
}
完美 !!!
Nginx相关命令
/etc/init.d/nginx start # 开始
/etc/init.d/nginx stop # 关闭
/etc/init.d/nginx restart # 重启
#5 注意
- 用Nginx+uwsgi部署django,必须Nginx和uwsgi都启动