Django项目部署(nginx1.18+uwgsi)

 Django项目部署:


9.1uwsgi
遵循wsgi协议的web服务器
9.1.1uwsgi的安装
pip install uwsgi
9.1.2uwsgi的配置
项目部署时,需要把settings.py文件夹下的:
DEBUG=FALSE
ALLOWED_HOSTS=[‘*’]

[uwsgi]
#使用nginx链接时使用
#socket=127.0.0.1:8080
#直接做web服务器使用
http=127.0.0.1:8080
#项目目录
chdir=/Users/smart/Desktop/dj/bj17/dailyfresh
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=dailyfresh/wsgi.py
#指定启动的工作进程数
processes=4
#指定工作进程中的线程数
threads=2
master=True
#保存启动之后主进程的pid
pidfile=uwsgi.pid
#设置uwgsi后台运行,uwsgi。Log保存日志信息
daemonize=uwsgi.log
#设置虚拟环境的信息
virtualenv=/Users/smart/.virtualenvs/dailyfresh


9.1.3uwsgi的启动和停止

启动:uwgsi --ini配置文件路径 例如:uwgsi --ini uwsgi.ini
停止:uwsgi  --stop uwsgi.pid路径  例如:uwsgi --stop uwsgi.pid

clear:清屏
ps aux | grep uwsgi   :查看进程
cat uwsgi.pid :查看进程号
cat uwsgi.log :查看日志

Nginx的配置:

使用nginx:
1、	如果是动态请求,转交给uwsgi,然后返回给浏览器
2、	如果是静态请求,我们需要提前把静态文件放到nginx的所在电脑的某个目录里面,根据配置nginx就会去目录地下找到静态文件,返回给浏览器

9.2 nginx
9.2.1nginx配置转发请求给uwsgi
Location / {
  #包含uwsgi的请求参数
  Include uwsgi_params;
  #转交请求给uwsgi
  uwsgi_pass uwsgi服务器的ip:port; uwsgi_pass 127.0.0.1:8080;

  #负载均衡:uwsgi_pass dailyfresh;(请求8080和8081)
} 

9.2.2nginx配置处理静态文件
django settings.py 中配置手机静态文件路径:
STATIC_ROOT=手机的静态文件路径 例如:/var/www/dailyfresh/static;
Django手机静态文件的命令:
python manage.py collectstatic
执行上面的命令会把项目中所使用的静态文件收集到STATIC_ROOT指定的目录之下

收集完成静态文件之后,让nginx提供静态文件,需要再nginx配置文件中增加如下配置:

location /static {
   alias /var/www/dailyfresh/static/;
}


9.2.3nginx转发请求给另外地址(=是精确匹配)
再location对应的配置项目中增加proxy_pass转发的服务器地址。
如当用户访问127.0.0.1时,在nginx中配置把这个请求转发给127.16.179.131.80(nginx)服务器,让这台服务器提供静态首页。

配置如下:(80可以省略)
Location = / {
proxy_pass http://172.16.179.131;
} 
9.2.4nginx配置upstream实现负载均衡
Ngnix配置负载均衡时,再server配置的前面增加upsteam配置项。
upstream dailyfresh {
  server 127.0.0.1:8080;
  server 127.0.0.1:8081;
}

部署环境:Ubuntu20.10+django+uswgi+ngixn(亲测)

uwsgi的配置:

chdir:是和manage.py放在一起的目录

module:是你的项目名称

socket:是ngixn和uwsgi通过socket的通讯

如果要让uwsgi单独的作为web服务器:直接添加http=192.168.208.131:8888

ngixn的配置文件:

安装ngixn的命令:

sudo apt install nginx

 

nginx.conf放到项目根目录下面

测试:

没有达到效果,nginx是安装成功了,但是没有和uwsgi互相通信,那么接下来就是开始找问题

最终找到答案:

# nginx文件相关存放位置
# /usr/sbin/nginx:主程序
# /etc/nginx:存放配置文件
# /usr/share/nginx:存放静态文件
# /var/log/nginx:存放日志

# nginx服务命令
service nginx {start|stop|restart|reload|forcereload|status|configtest|rotate|upgrade}
 
# 通过浏览器访问页面
# 访问地址:http://xxx.xxx.xxx.xxx/
 
# 查看日志
tail -f /var/log/nginx/access.log

#查看nginx的进程
ps -ef | grep nginx 

#查看nginx的状态
systemctl status nginx.service

问题确定了连接补上uwsgi一定是/etc/nginx/nginx.conf除了问题

sudo nano /etc/nginx/nginx.conf里面

user www-data;  #这个地方修改成user root(root用户名字)
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##

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

        ##
        # Gzip Settings
        ##

        gzip on;

        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

        ##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;

#这里配置连接uwsgi的配置文件


server {
    listen 80;

    listen [::]:80;

    server_name 192.168.208.131;

    location / {
        include  uwsgi_params;
        uwsgi_pass  127.0.0.1:8000;
    }

    location /static {
        alias /home/ftp/jango_one/static;
    }
}


}


#mail {
#       # See sample authentication script at:
#       # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#       # auth_http localhost/auth.php;
#       # pop3_capabilities "TOP" "USER";
#       # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#       server {
#               listen     localhost:110;
#               protocol   pop3;
#               proxy      on;
#       }
# 
#       server {
#               listen     localhost:143;
#               protocol   imap;
#               proxy      on;
#       }
#}

配置好了之后,重新启动nginx         sudo service nginx restart

查看nginx的进程信息: ps -ef | grep nginx

已经启动成功:

输入地址测试:

这就成功了!!!

看一下python的代码:

url:

整体发布:

django项目放在 cd /home/ftp 这个目录下面

到了这里基本就配置完成了!!!!!!下班回家

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值