django-uwsgi

django项目部署(linux)

1.安装uwsgi

uwsgi在windows系统上安装会失败,一般都用于linux系统

pip install uwsgi
  • 这个uwsgi非常重要,不然后面搞什么都弄不清楚,他就跟平时开发时用的python manage.py runserver一个概念,开启服务,其实在服务器上就runserver运行,通过ip地址同样可以访问django编写的网站或接口,只不过性能较弱而已,但是runserver占用的系统资源要远大于uwsgi!
2. uwsgi配置文件

在django主目录下创建uwsgi配置文件,为了不与uwsgi启动命令混淆,配置文件我取名为drf.ini;为了django项目目录与主目录(有settings.py那个)不混淆,我项目目录取名为django-drf,主目录取名为test_drf,以下为配置文件

#添加配置选择
[uwsgi]
# 127.0.0.1/0.0.0.0/云服务器的内网ip都可以
# http和socket二选一,直接启动用http
#http = :8000
#配置和nginx连接用socket,注意这个端口号9000不是后端启动端口,而是socket的端口
socket= 127.0.0.1:9000
#配置项目路径,项目的所在目录
chdir=/root/project/django-drf
#配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名
wsgi-file=test_drf/wsgi.py
#配置启动的进程数
processes=2
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=drf.pid
#配置dump日志记录
daemonize=drf.log
# python路径(虚拟环境一定要指定虚拟环境路径,不然会找默认解释器)
pythonpath = /root/venv/djangoenv/lib/python3.8/site-packages

3. uwsgi操作

操作drf.ini配置文件要指定文件路径,当前目录下操作直接用以下

  • 注意:如果是虚拟环境一定要在激活虚拟环境下执行
  • 启动服务
uwsgi --ini drf.ini
  • ps -ef | grep uwsgi查看一手,这个就是配置文件中的一个主进程master=True,开启2个进程processes=2,有点像nginx的一个master带2个worker
root       10092       1  0 00:11 ?        00:00:04 /root/venv/djangoenv/bin/uwsgi --ini drf.ini
root       10116   10092  0 00:13 ?        00:00:00 /root/venv/djangoenv/bin/uwsgi --ini drf.ini
root       10117   10092  0 00:13 ?        00:00:00 /root/venv/djangoenv/bin/uwsgi --ini drf.ini
root       11575   11481  0 21:40 pts/0    00:00:00 grep --color=auto uwsgi
  • netstat -nltp 查看一手,其中有如下结果,监听的是9000端口号,其实这个时候你配置为socket套接字的话,服务是开启了,要想访问要借助于nginx
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      10092/uwsgi   
  • 重启服务
uwsgi --reload drf.pid
  • 停止服务
uwsgi --stop drf.pid
4. nginx配置

老规矩,nginx.conf不动他,在conf.d下面新建一个drf.conf的文件,丢以下进去

server {
    listen 8000;
    server_name  loacalhost; #域名或者Ip
    charset utf-8;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9000;  #端口要和uwsgi里配置的一样
    }
}

此时应该就可以了,如果报错有可能是端口号占用kill -9杀了就行,没有报错访问不到可能是云服务器防火墙没有开你nginx监听的端口号,到控制台打开即可,我知道阿里云默认给你开启的好像是22 80 443 这几个常用的.

5. 其实单独部署django项目linux系统比windows系统IIS服务器简单,只不过一直以来习惯了windows系统,linux系统可能操作上不熟悉导致失误报错找不到头.我的习惯都是以最简单的方式先实现基本功能,因此总结以下思路就是:
  • uwsgi代替runserver后台启动django项目 -> uwsgi启动的django项目通过socket转发到nginx -> 再通过nginx代理转发出去(可以看做是优化后的runserver的全过程)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值