Django+Nginx+uWSGI部署项目

  运行Django项目有3种方法,本文重点介绍后两种

    1. python manage.py runserver 0.0.0.0:8000;
    2. uWSGI方式运行;
    3. Nginx + uWSGI方式运行;

一. 准备工作

  下载安装python,django和相关依赖,准备好django项目

二. 安装uWSGI

  安装uwsgi可以使用pip安装,命令为

   pip install uwsgi 

  下面为常用uwsgi命令:

   uwsgi --ini uwsgi.ini(uwsgi配置文件)

   uwsgi --stop uwsgi.pid (uwsgi服务pip文件)

   uwsgi --reload uwsgi.pid (uwsgi服务pip文件)

三. 安装Nginx

  安装nginx可以用apt-get方式安装,命令为:

   sudo apt-get install nginx -y

  安装完成后直接执行

   nginx

  命令即可启动nginx服务,nginx的配置文件为  /etc/nginx/nginx.conf  , 该配置文件包括了conf.d 目录下的所有配置文件,因此用户自定义配置文件可直接在 /etc/nginx/conf.d/下直接编写,后缀名为 .conf    

  下面为nginx常用命令:

   nginx -t   检查nginx配置是否正确

   nginx -s reload/stop/quit/reopen 

四. 配置

  1. 修改项目settings.py文件,在STATIC_URL = '/static/' 后面添加

   STATIC_ROOT = os.path.join(BASE_DIR, 'static') 

    注意: 修改之后项目以runserver方式运行会报错,删除该行代码即可

  2. 在django项目根目录下新建static文件夹

  3. 在项目根目录下执行

   python manage.py collectstatic 

  4. 在项目根目录新建文件夹 uwgi

  5. 在uwsgi文件夹新建文件 uwsgi.ini 文件内容为:

   [uwsgi]

   # 指定ip:port,如果只以uwsgi的方式部署项目,应该为http = 127.0.0.1:8000

   socket = 127.0.0.1:8000

   chdir = /root/workspace/blog/   # django项目根目录

   wsgi-file = blog_project/wsgi.py # wsgi.py文件的目录(和settngs.py同级)

   processes = 2           # 进程数

   threads = 2             # 线程数

   stats = 127.0.0.1:8010     # uwsgi状态端口

   static-map = /static=/root/workspace/blog/static  # 静态文件

   pidfile = /root/workspace/blog/uwsgi/uwsgi.pid  # pid文件

   daemonize = /root/workspace/blog/uwsgi/uwsgi.log # 日志文件

   uid = root                   # 用户名和用户组
   pid = root

   master = true                 # 启用主进程

   vacuum = true                 # 自动移除pip等文件

   thunder-lock = true             序列化

   enable-threads = true            # 启用线程

   harakiri = 30                 # 自中断时间

   post-buffering = 4096            # 缓冲

  6. 运行uwsgi服务,以刚才的配置文件

   uwsgi --ini uwsgi.ini 

  7. 在/etc/nginx/conf.d/ 下新建my.conf文件,文件内容为:

   server {
     listen 80;
     server_name anhuaxiang.cn;  # 外网需要访问该项目的域名(可以为二级域名)
     location / {
       include uwsgi_params;       # 该文件在 /etc/nginx 中,所有项目共用
       uwsgi_pass 127.0.0.1:8000;    #和uwsgi.ini 中相同
     }

     location /static/ {
       alias /hom/workspace/blog/static/;  # 项目静态文件
       expires 30d;                 # 有效时间
     }
   }

  8. 执行nginx -t 检查nginx配置文件是否有误

   nginx -t 

  9. 执行nginx -s reload 重新加载配置文件

   nginx -s reload 

  10. 修改python代码后需得重新加载uwsgi服务

   uwsgi --reload uwsgi.pid 

资料:https://yq.aliyun.com/articles/658938?spm=a2c4e.11155472.0.0.7ee2324b5wcOod



Linux Nginx Django Web uWSGI

到现在有0条评论

添加我的评论