美文网首页
Django项目启动、uwsgi和nginx的配置

Django项目启动、uwsgi和nginx的配置

作者: f109 | 来源:发表于2020-01-10 17:05 被阅读0次

当在服务器上配置好Django的环境之后,我们只需要将项目运行起来就完成了。在运行起来时我们还需要使用uwsginginx

通过uwsgi我们就可以不再使用python manage.py run server 0.0.0.0:8080的指令来启动服务了
通过nginx我们对服务器的请求都会先发给nginx然后通过nginx接受后发给服务器,服务器响应后返回给nginx,nginx再将响应转发给客户端的浏览器

uwsgi的安装和配置

  • 安装
    uwsgi是python的一个模块因此使用pip命令就可以完成安装
pip3 install uwsgi
  • 使用配置文件启动项目
    安装完uwsgi之后有两种方式启动项目:
    1.使用指令直接启动
    2.通过配置文件
    此处选择的是第二种通过配置文件来启动
    配置文件我选择的目录是在项目中创建一个script文件夹(与manage.py同级),将uwsgi相关文件都放在script之中。

配置文件uwsgi.ini

# uwsig使用配置文件启动
[uwsgi]
# 项目目录,这个项目名为TeaShop
chdir=/root/projects/TeaShop/
# 指定项目的application
module=TeaShop.wsgi:application
# 指定sock的文件路径       
socket=/root/projects/TeaShop/script/uwsgi.sock
# 进程个数       
workers=5
pidfile=/root/projects/TeaShop/script/uwsgi.pid
# 指定IP端口       
http=0.0.0.0:8080
# 指定静态文件
# static-map=/static=/opt/proj/teacher/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=/root/projects/TeaShop/script/uwsgi.log

相关指令

uwsgi --ini uwsgi.ini             # 启动
uwsgi --reload uwsgi.pid          # 重启
uwsgi --stop uwsgi.pid            # 关闭

如果我们在manage.py那一级使用指令启动就应指明文件位于script文件夹下,因此使用
uwsgi --ini ./script/uwsgi.ini指令即可,重启在py3环境下现在会出现signal_pidfile()/kill(): No such process [core/uwsgi.c line 1693]的报错信息因此不能使用重启

nginx的安装和配置

  • nginx的安装和卸载
    在本次启动项目过程中,因为某些步骤的失误,一不小心把nginx的配置文件ngonx.conf误删掉了,于是打算卸载之后重新安装,按照网上教程直接删掉nginx文件夹之后nginx居然还在启动失败状态,然后再次安装也未果。于是此处顺便整理了安装卸载的指令
    1.安装
    和Ubuntu下大部分服务安装一样使用apt-get
    sudo apt-get install nginx
    2.常用指令
#启动
service nginx start  
#查看状态
service nginx status
#重启
service nginx restart
#停止
service nginx stop

3.删除nginx,-purge包包括配置文件
sudo apt-get --purge remove nginx
4.删除nginx相关的包
sudo apt-get --purge remove nginx-common
sudo apt-get --purge remove nginx-core
5.重装nginx
sudo apt-get upgrade
sudo apt-get install nginx
安装完成之后可以使用上面的指令启动并查看状态

  • 文件路径
    1.所在位置
    网上说nginx的默认路径在/usr/local/nginx目录下,但是我这里在/etc/nginx目录下
    nginx.conf是nginx的配置文件,我们之后创建的nginx配置设置放在conf.d文件夹下而不是去覆盖这个nginx.conf

日志文件放在/var/log/nginx文件夹下
报错信息放在error.log中

我们要做的就是添加一个mynginx.conf文件在conf.d文件夹下
mynginx.conf内容如下

# $gzip_ratio计算请求的压缩率,$body_bytes_sent请求体大小
    log_format  main  '$remote_addr - $remote_user [$time_local] "$host" - "$request" '
                    '$gzip_ratio - $body_bytes_sent - $request_time';


    # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
    gzip_min_length 1k;

    # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明
    gzip_comp_level 1;

    # 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml;

    # 是否在http header中添加Vary: Accept-Encoding,建议开启
    gzip_vary on;

    # 禁用IE 6 gzip
    gzip_disable "MSIE [1-6]\.";

    # 设置压缩所需要的缓冲区大小
    gzip_buffers 32 4k;

    # 设置gzip压缩针对的HTTP协议版本
    gzip_http_version 1.0;

        charset utf-8; # Nginx编码

server { # 这个server标识我要配置了
        listen 80; # 我要监听那个端口
        server_name IP; # 此处要修改为你的域名或是服务器外网ip


        # error_page 404 /404.html; # 错误页面
        # error_page 500 502 503 504 /50x.html; # 错误页面

        # 指定项目路径uwsgi
        location / { # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
                include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
                uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
                uwsgi_pass unix:/root/projects/TeaShop/script/uwsgi.sock; # 指定uwsgi的sock文件所有动态请求就会直接丢给他
        }

        # 指定静态文件路径
#        location /static {
#                alias /data/office/office1/static/;
#                index /data/office/office1/templates/index.html;  # 配置两个index.html也只认第一个
#        }

}

完成之后就可以重启uwsgi和nginx服务了。如果顺利的话就可以通过服务器ip或是域名访问

相关文章

网友评论

      本文标题:Django项目启动、uwsgi和nginx的配置

      本文链接:https://www.haomeiwen.com/subject/sfqmactx.html