Django+Nginx项目部署上线

时间:2022-12-21 07:59:02

利用nginx +uwsgi完成django项目上线,系统环境采用ubantu系统, python3,django==1.1

 

1. 静态文件

当Django运行在生产模式时,将不再提供静态文件的支持,需要将静态文件交给静态文件服务器,Django提供了收集静态文件的方法。先在配置文件中配置收集之后存放的目录.

在settings文件中添加静态文件目录:

  TATIC_ROOT = os.path.join(os.path.dirname(os.path.dirname(BASE_DIR)), 'front_end_pc/static')

然后执行收集命令

   python manage.py collectstatic

安装nginx服务器

 sudo apt install nginx 

打开Nginx的配置文件

 sudo vim /etc/nginx/sites-available/default 

在server部分中配置

 server { listen 80; server_name www.aaaa.com; location / { root /home/python/Desktop/front_end_pc; index index.html index.htm; } }

重启Nginx服务器

 sudo service nginx restart

2. 动态接口

     修改配置文件settings中

 ALLOWED_HOSTS = [..., 'www.aaaa.com']  CORS_ORIGIN_WHITELIST = ( '127.0.0.1:8080', 'localhost:8080', 'www.aaaa.com:8080', 'api.aaaa.com:8000', )

 

安装uwsgi服务器

 pip install uwsgi

在项目目录/meiduo_mall 下创建uwsgi配置文件 uwsgi.ini

[uwsgi] #使用nginx连接时使用,Django程序所在服务器地址 socket=127.0.0.1:8001 #直接做web服务器使用,Django程序所在服务器地址 #http=127.0.0.1:8001 #项目目录 chdir=/Users/delron/Desktop/项目目录 #项目中wsgi.py文件的目录,相对于项目目录 wsgi-file=项目下/wsgi.py # 进程数 processes=4 # 线程数 threads=2 # uwsgi服务器的角色 master=True # 存放进程编号的文件 pidfile=uwsgi.pid # 日志文件,因为uwsgi可以脱离终端在后台运行 daemonize=uwsgi.log # 指定依赖的虚拟环境 virtualenv=/Users/delron/.virtualenv/env
 

启动uwsgi服务器

 uwsgi --ini uwsgi.ini

 

修改Nginx配置文件,让Nginx接收到请求后转发给uwsgi服务器

 
 upstream xiangmu{ server 127.0.0.1:8001; # 此处为uwsgi运行的ip地址和端口号 # 如果有多台服务器,可以在此处继续添加服务器地址 }  server { listen 8000; server_name api.aaaa.com; location / { include uwsgi_params; uwsgi_pass xiangmu; } }

重启nginx

 sudo service nginx restart

部署完成启动项目

进入uwsgi.ini文件目录中:

uwsgi --ini uwsgi.ini

Django+Nginx项目部署上线

成功!!