首页 > 技术文章 > Centos7 部署Django项目 uwsgi + nginx

c-keke 2021-08-26 17:44 原文

启动

首先确保你的django项目是可以在虚拟环境中跑起来的,环境管理窝用的是pyenv,pyenv不知道什么东西的可以参考窝之前写过的Pyenv环境管理的安装文。

项目启动

python manager runserver

但是这里有个问题,如果你是虚拟机的话,你就无法通过127的地址来访问你的项目

所以需要配合nginx来使用

nginx配置

centos 的配置nginx和ubuntu的有点不一样,下载的教程网上很多,我就不列了,默认已经安装好nginx ,然后通过find命令找到nginx的默认配置路径

find / -name "nginx.conf"

nginx路径如下

得到nginx的路径,然后开启nginx服务

启动./usr/local/nginx/sbin/nginx
更新 ./sbin/nginx -t 
重载 ./sbin/nginx -s reload

查看nginx日志可以到logs下去看配置日志

err.log为重载日志,access为日常访问日志

这时候,窝们就可以去做反向代理了,不过一般不在主配置文件nginx.conf下增加配置,需要另外起一个nginx的单独配置服务,修改

nginx.conf 在http下增加include 这的是为了配置服务可以被nginx读取到,且如果项目过多的话,好配置一点,配置如下

cd conf
mkdir vhost # 放置项目配置文件
#添加一条
include /usr/local/nginx/conf/vhost/*.conf;

这样,就可以在vhost添加自己项目的conf了

看看我们nginx启动成功没有, 输入 http:ip 地址

没问题。然后在vhost写单独的配置文件

有两种写法,一种是可以直接访问的,不经过uwsgi启动的,可以直接测试,test_centos.conf 配置 如下

server {
    listen 8100;
    server_name  192.168.254.128;

    access_log /var/log/nginx/uwsgi-access.log; # 指定nginx日志存放路径
    error_log  /var/log/nginx/uwsgi-error.log; # 同上

    location / {
        root  /home/dior/yyxx_platform_center;
        proxy_pass http://127.0.0.1:8000/; # 通过ip地址来直接访问,监听的是8100端口,反向代理到8000端口
        access_log off;
        }
}

修改了 nginx 之后需要重载 -t 代表先测试

nginx 日志如下

这时候 访问 http://192.168.254.128:8100/ 这样就可以通过Nginx访问到你服务器本地的服务

当然我们不能让程序这样一直开着,所以我们需要用到uwsgi,来通过后台启动 写nginx的配置

server {
    listen 8100;
    server_name  192.168.254.128;

    access_log /var/log/nginx/uwsgi-access.log;
    error_log  /var/log/nginx/uwsgi-error.log;

    location / {
        root  /home/dior/yyxx_platform_center;
        uwsgi_pass  127.0.0.1:8000;
        include uwsgi_params;
        access_log off;
        }
}

注意nginx需要修改的地方,然后重载,然后就可以将启动方式改为uwsgi了

uwsgi

uwsgi用xml配置文件直接配置,配置如下

<uwsgi>
  <socket>127.0.0.0:8000</socket>
  <listen>128</listen>
  <master>true</master>
  <processes>4</processes>
  <pythonpath>./</pythonpath>  #此处为django项目的目录
  <module>django_wsgi</module>
  <profiler>true</profiler>
  <memory-report>true</memory-report>
  <enable-threads>true</enable-threads>
  <logdate>true</logdate>
  <limit-as>2010</limit-as>
  <py-autoreload>0</py-autoreload>
  <touch-reload>up_version</touch-reload> # 修改该文件就可以重启服务
  <daemonize>uwsgi.log</daemonize> # uwsgi日志文件输出(注意需要有权限)
</uwsgi>

然后启动命令为

uwsgi -x *.xml

# 修改了之后 需要重启服务的命令为
touch up_version

uwsgi错误日志和输出日志除了自己定义下的日志下,大部分都存在 配置文件 daemonize 的uwsgi.log日志中,这样就可以看日志调试了

推荐阅读