uwsgi+nginx部署django项目

开发环境

  • ubuntu18.04
  • python3
  • uwsgi+nginx

使用uwsgi和nginx的意义

在此之前我所有的django项目都是python manage.py runserver启动的,我以为那就是我所有的django知识了,但是实际上python manage.py runserver只是用来调试启动django的。
选择uwsgi启动django的原因是可以配置进程数来并发,这肯定是比单独python manage.py要性能好的多,其次还可以配置输出日志等其他选项。
nginx存在的意义是帮助django把static静态文件单独拿出来做处理服务,不用django自己的,这样做的目的是为了django更好的走自己路由功能,把static文件交给nginx可以分工合作,让django服务性能更好 。

已经存在的项目结构

cccc

收集静态文件

(1)seetings.py下配置STATIC_ROOT 路径:
	STATIC_ROOT = os.path.join(BASE_DIR,"static/")
(2)还得STATICFILES_DIRS注释掉,因为这两个是不能同时存在的
	# STATICFILES_DIRS = [
    # os.path.join(BASE_DIR, 'static')
# ]
(3)运行python manage.py collectstatic命令址行收集静态文件过程
		整个项目的static包括admin后台管理的静态文件都会收集到这个STATIC_ROOT 目录下

uwsgi启动项目

(1)安装uwsgi

pip install uwsgi

(2)测试uwsgi方式启动django

以http方式在8000端口启动mysite.wsgi模块,其中mysite是我项目的名字,mysite.wsgi就是那个wsgi.py文件,
需要注意的是要指明wsgi文件的路径,我这里是在项目文件下所以用的mysite.wgsi就可以了
uwsgi --http :8000 --module mysite.wsgi

启动后访问127.0.0.1:8000端口,访问你的项目,能访问说明测试uwsgi启动django成功

(3)以uwsgi.ini配置文件的方式启动django

因为有许多参数可以配置,如果以命令的形式写出来,会很长,所以采用配置文件的方式启动
在项目目录下新建一个uwsgi.ini的文件,并输入下面配置:

# mysite_uwsgi.ini file
[uwsgi]
# Django-related settings
# the base directory (full path) 项目目录
chdir           = /home/panda/all_envs/Mysite/mysite/
# Django's wsgi file django项目wsgi文件路径
module          = mysite.wsgi
# process-related settings
# master 开启主进程
master          = true
# maximum number of worker processes 4个子进程
processes       = 4
# the socket (use the full path to be safe 8000端口启动项目
socket          = 127.0.0.1:8000
# with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true
# 虚拟环境
virtualenv = /home/panda/all_envs/Mysite
# 日志文件目录|如果配置了该选项就启动的时候看不到日志了,还以为出错了。。。
#logto = /tmp/mylog.log
# 缓存大小,因为之前说我缓存设置国小导致有写请求直接呗抛弃了,我随便设置了一个
buffer-size  = 81920

配置完成以读取配置文件的方式启动

uwsgi -i uwsgi.ini &   # 后台启动看不到输出日志
pkill -f uwsgi # 会先杀死uwsgi然后再重启,在更新代码后可采用的操作

此时访问127.0.0.1:8000应该试不能访问的,必须配置nginx才行。这也是我的疑问,就为啥直接用
uwsgi --http :8000 --module mysite.wsgi这种方式启动就可以访问,把配置文件写好用uwsgi uwsgi.ini的方式启动必须配置nginx才行。所以下面我们需要配置nginx

nginx文件配置

(1)安装nginx

sudo apt-get install nginx

(2)编写nginx配置文件

/etc/nginx/conf.d下新建一个mysite.conf的文件,输入下面内容:

# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8000; # for a web port socket (we'll use this first)
}
# configuration of the server

server {

listen      8081;  # 监听端口
server_name 192.168.1.106 ; # 绑定域名或者ip,比如你主机的ip
charset     utf-8;

# max upload size
client_max_body_size 75M;   # adjust to taste

# Django media
location /media  {
    alias /home/panda/all_envs/Mysite/mysite/media;  # 指向django的media目录
}

location /static {
    alias /home/panda/all_envs/Mysite/mysite/static; # 指向django的static目录
}

# Finally, send all non-media requests to the Django server.
location / {
    uwsgi_pass  django;
    include     uwsgi_params; # the uwsgi_params file you installed
}
}

“”“
大概意思是当访问192.168.1.106:8081端口的时候转发放到上游路由中(127.0.0.0:8000),当访问/static路径文件是,
指向静态文件的地址/home/panda/all_envs/Mysite/mysite/static,当访问/media路径文件时,
指向媒体文件地址/home/panda/all_envs/Mysite/mysite/media
”“”

(3)记得重启nginx

sudo /etc/init.d/nginx restart # 不重启上面的mysite.conf文件不会生效

此时你的uwsgi已经启动,nginx配置成功并重启,现在访问192.168.1.106:8081就可以看到你的django项目了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值