centos7部署django+nginx+uwsgi

56 篇文章 1 订阅
35 篇文章 1 订阅

1.当我们项目写好之后,如何去部署到正式服上去那,部署的时候,我们需要三个东西,项目代码,nginx, uwsgi这三个东西,至于nginx如何安装,我在上一篇博客上已经写了,至于nginx如何代理,nginx还需要配置一下,我们先看一下一个请求过来的流程图:
在这里插入图片描述
2. 我们先配置nginx,我上一篇博客中nginx已经安装好了,接下来配置就可以了
2.1 执行命令:cd /usr/local/nginx/conf
2.2 然后打开:vim nginx.conf (nginx.conf就是nginx的配置文件)
2.3 将nginx.conf清空(vim在命令模式下:ggdG)将下面的配置粘贴进去:


user  nobody;  # 这里是权限 user root root;
worker_processes auto;
worker_rlimit_nofile 100000;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format main '$remote_addr $remote_user $time_iso8601 $http_host "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    proxy_headers_hash_max_size 51200;
    proxy_headers_hash_bucket_size 6400;
    server_names_hash_bucket_size 512;
    access_log  logs/access.log main;
    access_log      on;
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    fastcgi_intercept_errors on;

    client_max_body_size 1000m;

    #cache
    proxy_cache_path  /usr/local/nginx/cache/one  levels=1:2   keys_zone=one:10m max_size=10g;   # 等一下我们需要在这个路径下创建文件夹
    proxy_cache_key  "$host$request_uri";
    # default_server
    include /usr/local/nginx/conf/conf.d/*.conf;  # 将具体配置卸载另一个目录下,比较清晰一点

}

2.4 然后我们在/usr/local/nginx/ 路径下创建文件夹 cache 然后在cache下在创建one文件夹,用于缓存,不然启动nginx时会报错
2.5 在/usr/local/nginx/conf/下创建conf.d文件夹,然后在conf.d文件夹创建一个目录master.conf(注意是目录),将下面的配置放进去

server {
    listen 80;  # 监听端口
    server_name 127.0.0.1;  # 服务器域名或者ip地址
    charset utf-8;   # 编码
    add_header Strict-Transport-Security "max-age=31536000";
    client_max_body_size 75M;
    root /home/vir/two_fashion;  # 项目路径
    location / {  
        try_files $uri $uri/ /manage/index.html;   # 前端打的包
    }
   location /admin {   # 请求后端接口时只能已admin开头,
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8000; # 对应uwsgi里面的端口
        uwsgi_read_timeout 300;
        uwsgi_send_timeout 300;
        proxy_read_timeout 300;
        add_header X-Frame-Options SAMEORIGIN;
        add_header Access-Control-Allow-Origin "*";
        add_header Access-Control-Allow-Methods 'GET, POST, PUT, OPTIONS, DELETE';
        add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
        add_header Access-Control-Max-Age 300;
        if ($request_method = 'OPTIONS') {
          return 204;
        }
    }

   location /user {  # 请求后端接口时只能已admin开头, 
         include uwsgi_params;
        uwsgi_pass 127.0.0.1:8000; # 对应uwsgi里面的端口
        uwsgi_read_timeout 300;
        uwsgi_send_timeout 300;
        proxy_read_timeout 300;
        add_header X-Frame-Options SAMEORIGIN;
        add_header Access-Control-Allow-Origin "*";
        add_header Access-Control-Allow-Methods 'GET, POST, PUT, OPTIONS, DELETE';
        add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
        add_header Access-Control-Max-Age 300;
        if ($request_method = 'OPTIONS') {
          return 204;
        }
    }

}

到这里,重新启动nginx, nginx就配置好了,接下里配置uwsgi
3. 在自己项目的虚拟环境中安装uwsgi:pip install uwsgi, 创建软连接:ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
3.1 然后cd到自己项目下与manage.py同目录下,然后touch uwsgi.ini,并将下面的代码放进去:

# myweb_uwsgi.ini file
# 配置域应该是uwsgi,记住这个不能丢,否则会报错
[uwsgi]

# Django-related settings
# uwsgi监听的socket,可以为socket文件或ip地址+端口号,用nginx的时候就配socket , 直接运行的时候配 http, http-socket = 127.0.0.1:8080
socket = :8000  # 与nginx一致

# the base directory (full path)
# 指定项目的目录,在app加载前切换到当前目录
chdir           = /home/vir/two_fashion/two_fashion

# Django s wsgi file
# Django's wsgi file # Django的wsgi文件,用来加载QmpythonBlog/wsgi.py这个模块
module          = two_fashion.wsgi

# process-related settings
# master 启动主进程
master          = true

# maximum number of worker processes
processes       = 2  # 进程数量
threads = 1  # 线程数量

# ... with appropriate permissions - may be needed
# ... with appropriate permissions - may be needed 设置socket的权限
chmod-socket    = 664
# clear environment on exit

reload-on-as    = 512
reload-on-rss   = 256

# clear environment on exit   退出的时候是否清理环境,自动移除unix Socket 和 Pid 文件
vacuum          = true
pidfile=/tmp/two_fashion.pid

# 日志文件路径
daemonize = /home/vir/two_fashion/log/uwsgi.log
# 是否只是错误信息写入日志
disable-logging = true

# 指定虚拟环境目录
virtualenv = /root/.virtualenvs/two_fashion

3.2 然后编写脚本启动uwsgi(在manage.py同目录下):touch 名称.sh,然后将下面的代码放进去:

#!bin/bash
cmd="/usr/local/bin/uwsgi /home/vir/two_fashion/two_fashion/uwsgi.ini  --post-buffering 32768 --buffer-size 32768"
#启动服务方法  
start(){
	eval $cmd
	echo "Server started."
}

stop(){
	killall -9 uwsgi
	echo "Server stoped."
}

#重新启动
restart(){
	stop
	sleep 1s
	start
}
case "$1" in
"start")
	start
	;;
"stop")
	stop
	;;
"restart")
	restart
	;;
*)
	echo "$0 start|stop|status|restart"
	;;
esac


3.3 脚本重启命令:sh 名称.sh restart
4. 到这里,就部署好了

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值