Nginx实现Django项目部署云服务器

2022年4月18日 09:32 ry 847

如果你已经开发一个基于前后端的web项目,本地已经实现无bug运行,想上线挂在云服务器上跑,可以实现多人访问,那么就离不开部署的问题了。就比如说我的Django项目,如果你想简单的实现24小时后台运行,你搭建所需的环境后可以直接使用命令

sudo nohup python3 manage.py runserver 0.0.0.0:80 & 

挂在服务器运行,你退出远程软件也可以运行。不过这样比较鸡肋,当访问人数增多时,会导致阻塞问题,因为这完全没有实现多进程多线程来运行,如果项目一旦上线,面对大量的用户访问显得无能为力,因此,Nginx就应运而生了,Nginx是一款高性能的HTTP和反向代理web服务器,其特点内存占有少,并发能力强,其并发能力在同类型的网页服务器中比较出色。其反向代理,负载均衡方面有名,对于反向代理,我们先理解正向代理,以我们的科学上网为例子,用户端通过代理实现访问海外服务器,这就是我们所说的翻墙,而反向代理,用户访问我们的网站,通过nginx将这些访问的请求转发到不同服务器上,用户端感知不到。具体用法在server块加上proxy_pass实现。负载均衡在单个服务器遇到大的流量时,将请求分发到不用服务器上。那么这样听好像反向代理和负载均衡没啥区别吗,其实二者是相互依存,共同使用的,可以说反向代理是实现负载均衡的一种方式。现在来说下Nginx配置Django项目了,我服务器是ubuntu系统,下载对应的Nginx安装包

使用命令进行解压

tar zxvf xxx

然后安装依赖使用命令

apt install pcre  pcre-devel zlib  zlib-devel openssl openssl-devel

再进入刚解压的文件夹目录,使用命令

./configure

再使用命令

make

进行编译,最后使用命令

make install 

即成功配置完成。一般Nginx启动文件都在目录/usr/local/nginx中,切到项目文件目录,如图

新建一个myblog.xml文件,文件代码如图所示

<uwsgi>    
	   <socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 --> 
	   <chdir>/home/ubuntu/django_blogs/myblog/</chdir><!-- 项目路径 -->            
	         <module>myblog.wsgi</module> 
		    <processes>4</processes> <!-- 进程数 -->     
		       <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
	       </uwsgi>

保存,然后切换到nginx的配置文件conf中,命令

cd /usr/local/nginx/conf

编辑nginx.conf文件,如下配置


#user  nobody;
worker_processes  4;

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

#pid        logs/nginx.pid;
user root;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen 80;
        server_name codingchangeworld.com;
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8997;
           uwsgi_param UWSGI_SCRIPT myblog.wsgi;
           uwsgi_param UWSGI_CHDIR /home/ubuntu/django_blogs/myblog/; #项目路径
            
        }
        location /static {
        alias  /home/ubuntu/django_blogs/myblog/static/; #静态资源路径
        }
        
	location /media {
        alias  /home/ubuntu/django_blogs/myblog/media/; #静态资源路径
        }
	
	location /templates {
        alias  /home/ubuntu/django_blogs/myblog/templates/; #静态资源路径
      }


      
}

设置了进程数4,在代码settings.py中设置debug=False生产模式。保存退出,切换到myblog.xml中,使用命令

uwsgi -x myblog.xml

即可运行,最后访问域名,配置成功!

如果上述代码帮助您很多,可以打赏下以减少服务器的开支吗,万分感谢!

欢迎发表评论~

点击此处登录后即可评论


评论列表
暂时还没有任何评论哦...

赣ICP备2021001574号-1

赣公网安备 36092402000079号