• django之项目部署上线


    在开始配置之前,需要将整个项目文件拷贝一份,然后移入你想要的放置的目录中。

    一、Django配置

      1、settings.py配置

      复制全局settings.py配置文件,创建一个副本命名为/pro_settings.py,修改DEBUG为False。

    DEBUG = False
    
    # 填写你自己的ip和域名
    ALLOWED_HOSTS = [“ 192.168.216.137", "localhost", "127.0.0.1"] 
               
    # 此处设置可以访问服务器的IP地址,*为允许所以地址

     第一次部署的时候,最好先不要修改,否则出错的时候不容易排错。

      2、wsgi.py配置

    # 修改pro_mysite/wsgi.py文件
    
    import os
    
    from django.core.wsgi import get_wsgi_application
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'peo_mysite.pro_settings')
    
    application = get_wsgi_application()

       3、生成requirements.py文件(最好在根目录下单独建立一个目录,用于存放这些文件)

      项目部署文件肯定也是运行在python环境下的,那么势必需要依赖的包文件,所以也需要为部署的项目重新建立一个运行的虚拟环境,并安装项目运行时所依赖的包、模块,所以需要先进入开发时的虚拟环境,将安装的包、模块导出来,安装在项目部署的虚拟环境中(注意:有的包、模块不是我们通过pip install 从源地址安装的,所以在导出时,需要将其删除,通过源文件安装。

      通过>>> pip freeze > requirements.txt

      将安装的第三方包、模块导出到requirements.txt文件,放在项目中,供部署时安装。

     上面的fdfs-client-py==1.2.6不是通过源地址安装的,而是直接通过源文件安装的,所以需要将这个模块删除。

       通过>>> pip install requirements.txt

      安装从源地址安装的第三方包、模块(在此之前,需要创建项目运行虚拟环境),

      安装完成后,再安装通过源文件安装的第三方包、模块,比如我的fdfs-client-py==1.2.6模块

       两类包、模块都安装完成后,接下来就是安装django项目运行的服务器模块了(注意:django项目部署时,与我们开发时运行的方式不太一样;开发时,直接使用命令python manage.py runserver 0:8000就可以了,但是部署时,是运行在一个WSGI服务器上的,此时只需要相关配置,再运行wsgi服务器,就可以起启动项目了。

      通过>>> pip install uwsgi

      安装WSGI服务器

       可以写一个test.py文件测试uwsgi是否安装成功

        通过>>> uwsgi --http :8000 --wsgi-file test.py

      这个命令表示WSGI服务器运行在8000端口,一旦接收到请求,就会将解析请求,并调用test.py文件里的application函数,返回一个响应,

     

     

       uwsgi配置(创建uwsgi_conf_ini配置文件)

    [uwsgi]
    # 使用nginx连接时使用,Django程序所在服务器地址
    # 选择内网IP和端口
    socket=172.26.149.79:8000
    
    # 项目根目录
    chdir=/root/django-projects/dj32_pro/dj32_pro
    
    #项目中wsgi.py文件的相对目录
    wsgi-file=dj32_test/wsgi.py
    
    # 进程数
    processes=2
    
    # 线程数
    threads=2
    
    # uwsgi服务器的角色
    master=True
    
    # 存放进程编号的文件
    pidfile=uwsgi.pid
    
    # 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。以前的runserver是依赖终端的
    daemonize=logs/uwsgi.log
    
    # 指定虚拟环境所在目录,不能填相对目录
    virtualenv=/root/python-venv/dj32

      要注意上述配置标红的地方,一定要严格遵照执行,

      socket:表示项目运行的IP地址和端口号,一定要是内网地址

      chdir:表示项目的根目录(使用pwd命令获取);

      wsgi-file:表示项目中wsgi.py文件的位置,在主APP下;

      daemonize:记录项目运行的日志,是相对于这个配置文件的位置,不是相对于根目录,切记

      virtualenv:表示项目运行的虚拟环境的绝对路径

      启动uwsgi(进入.ini配置文件所在的目录,启动uwsgi服务)

      启动uwsgi>>> uwsgi --ini uwsgi_conf.ini

      停止uwsgi>>> uwsgi --stop uwsgi.pid

    二、nginx配置(想要了解更多,观看教程:https://www.bilibili.com/video/BV1zJ411w7SV?p=9

      1、安装nginx(根据自己的系统选择合适的nginx配置,以Centos为例)

      >>> yum -y install nginx

      2、启动nginx,查看启动状态,如果启动状态为active,则代表启动成功

      

       3、测试是否安装成功

      nginx默认运行在80端口,可以直接在浏览器中访问,如果有显示,表示在安装成功,

      4、nginx常用命令(如果不是root用户,需要在前面加sudo)

      停止nginx服务器>>> systemctl stop nginx

      启动nginx服务器>>> systemctl start nginx

      重启nginx服务器>>> systemctl restart nginx

      重载配置而不关闭>>> systemctl reload nginx

      设为开机自启动>>>> systemctl enable nginx

      取消开机自启动>>>> systemctl disable nginx

      5、nginx配置(找到配置文件的位置,修改配置文件,配置文件的位置,上面已经标出来了)

      /etc/nginx/nginx.conf

    upstream dj32_pro {
        # 此处为uwsgi运行的ip地址和端口号
        server 172.26.149.79:8000;
    }
    
    server {
        # 监听端口
        listen      80;
    
        # 服务器域名或者ip地址
        server_name www.blogcloud.info;
    
        # 编码
        charset     utf-8;
    
        # 文件最大上传大小
        client_max_body_size 75M;
    
        # 媒体文件
        location /media  {
            alias /home/pyvip/pro_mysite/media;
        }
    
        # 静态文件
        location /static {
            alias /home/pyvip/pro_mysite/static;
        }
    
        # 主目录
        location / {
            uwsgi_pass  pro_mysite;
            include    /etc/nginx/uwsgi_params;
        }
    }
    # 修改sudo vim /etc/nginx/nginx.conf
    # 第一行开头修改用户,将www-data改为你当前的用户 创建 Nginx 运行使用的用户 www:
    
    user root;

      user后面跟你自己主机的用户名

       具体看一下nginx配置的全部内容

       具体看一下我们配置好的配置文件

       测试nginx配置文件是否正确>>> nginx -t -c /etc/nginx/nginx.conf

          如果打印如下内容,就表示成功了:

       重新加载配置>>> nginx -s reload -c /etc/nginx/nginx.conf

      详细了解nginx配置正向代理、反向代理、负载均衡、动静分离相关内容请看(https://www.bilibili.com/video/BV1zJ411w7SV?p=9),个人觉得讲得不错。

      补充:如果遇到启动uwsgi和nginx时,启动失败,多半是端口占用的问题,那就解除占用

      查看指定端口>>> netstat -ap | grep 8000

      查看端口>>>>>>netstat -a

      杀死进程>>>>>>pkill -9 PID

      查看某个程序的进程>>> ps -aux | grep nginx

      

      

  • 相关阅读:
    js Bom Dom
    2019西安多校联训 Day1
    数论——扩展欧几里德
    MySQL InnoDB引擎行格式、数据页简析
    centos7安装ansible并简单设置k8s集群节点hosts文件
    Redis缓存穿透和雪崩
    Redis主从复制——哨兵模式
    Redis主从复制——非哨兵模式
    Redis发布订阅
    Redis持久化——RDB与AOF
  • 原文地址:https://www.cnblogs.com/loveprogramme/p/13028083.html
Copyright © 2020-2023  润新知