美文网首页
django项目--项目部署

django项目--项目部署

作者: 昆仑草莽 | 来源:发表于2019-09-16 12:08 被阅读0次

    项目部署

    一、Django配置

    1.settings.py配置

    复制全局settings.py配置文件(或者直接修改),创建一个名为deploy_settings.py的副本,修改DEBUG=False。

    DEBUG = False
    ​
    # 填写你自己的ip和域名
    ALLOWED_HOSTS = ["www.hhxpython.com", "localhost", "127.0.0.1"] 
    

    2.wsgi.py配置

    # 修改settings.py同目录下的wsgi.py文件
    ​
    import os
    ​
    from django.core.wsgi import get_wsgi_application
    ​
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MyBlog.pro_settings')
    ​
    application = get_wsgi_application()
    

    3.生成requirement.txt文件

    # 在xshell中生成requirements.txt文件(将项目中安装的包,存放到requirements.txt文件中)
    ​
    pip freeze > requirements.txt
    

    4.上传代码到服务器

    将项目本地目录上传至服务器(各种云服务器,推荐阿里云)注册地址

    方法一:

    • 使用xshell连接阿里云,通过rz命令将本地目录压缩为zip后上传至服务器

    • 在云服务器上,使用unzip解压项目压缩文件

    方法二:

    • 利用pycharm创建远程项目

    • 同步代码

    还有很多方法,大家慢慢研究。

    5.安装python3以及虚拟环境

    • 安装python3、virtualwrapper,请查看官方文档,步骤略。

    • 创建虚拟环境

        mkvirtualenv dj_pro
    
    • 安装项目相关包
       # 进入到虚拟环境
        workon dj_pro
        # 安装包
        pip install -r requirements.txt
    

    6.uwsgi安装测试

    # 进入到虚拟环境
    workon dj_pro
    ​
    # 安装uwsgi
    pip install uwsgi
    

    测试uwsgi是否安装成功:

    # 测试py文件
    ​
    # test.py
    def application(env, start_response):
     start_response('200 OK', [('Content-Type','text/html')])
     return [b"Hello World"] # python3
     #return ["Hello World"] # python2
    

    运行uwsgi:

    uwsgi --http :8000 --wsgi-file test.py
    

    测试uwsgi运行是否正常:

    curl 127.0.0.1:8000</pre>
    

    7.uwsgi配置

    在项目根目录中创建deploy目录,新建uwsgi_conf.ini文件。

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

    8.启动uwsgi

    切换到deploy目录中,创建logs文件夹,用于存放日志文件

    # 启动uwsgi
    uwsgi --ini uwsgi_conf.ini &
    ​
    # 停止uwsgi
    uwsgi --stop uwsgi.pid
    ​
    

    二、在docker下安装并配置redis

    1.下载镜像

    运行docker pull下载redis镜像,注意选择版本为4.0.9

    $ docker pull redis:4.0.9</pre>
    

    2.创建容器

    1. 创建redis配置文件redis.conf

      位置随便,建议放到一起管理,这里放到~/.docker/redis

        # ~/.docker/redis/redis.conf
        # 配置项
        # 端口,其他随意
        port 6378
        # 持久存储
        appendonly yes
    
    1. 创建数据存放目录

      放到~/.docker/redis/data

    2. 创建容器

        docker run --network host -d -v /home/wcf/.docker/redis/data:/data -v /home/wcf/.docker/redis/redis.conf:/usr/local/etc/redis/redis.conf --name djredis redis:4.0.9 redis-server /usr/local/etc/redis/redis.conf
    

    注意把上面的/home/wcf/.docker/redis/data/home/wcf/.docker/redis/redis.conf分别替换成你的数据目录和配置文件目录,把--name后的djredis改成你想给容器取的名字。

    如果创建成功,运行docker ps就会显示刚才创建的redis

    三、在docker下安装并配置nginx

    1.下载镜像

    运行docker pull下载nginx镜像,注意选择版本为1.14.0

    $ docker pull nginx:1.14.0
    

    2.创建容器

    1. 创建nginx配置文件default.conf注意名字不能改

      位置随便,建议放到一起管理,这里放到~/.docker/nginx

      # ~/.docker/nginx/defautl.conf
        ​
        upstream MyBlog {
         # 此处为uwsgi运行的ip地址和端口号
         server 127.0.0.1:8000;
        }
        ​
        ​
        server {
         # 监听端口
         listen      80;
        ​
         # 服务器域名或者ip地址 除了这里改成你的域名之外,其他地方都不要动
         server_name localhost hhxpython.com;
        ​
         # 编码
         charset     utf-8;
    
         # 文件最大上传大小
         client_max_body_size 75M;
    
         # 媒体文件
         location /media  {
         alias /usr/share/nginx/media;
         }
    
         # 静态文件
         location /static {
         alias /usr/share/nginx/static/;
         }
    
         # 主目录
         location / {
         uwsgi_pass  MyBlog;
         include    /etc/nginx/uwsgi_params;
         }
        }
        
    
    1. 创建容器
        docker run --network host --name djnginx -v /home/wcf/code/tztz/media:/usr/share/nginx/media -v /home/wcf/code/tztz/static:/usr/share/nginx/static -v /home/wcf/.docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro -d nginx:1.14.0
    

    上面的三个 -v参数后面的值需要根据你的目录进行修改

    其中/home/wcf/code/tztz/media改成你的媒体文件路径

    其中/home/wcf/code/tztz/static改成你的静态文件路径

    其中/home/wcf/.docker/nginx/default.conf改成你自定义的配置文件路径

    注意,冒号后面的值不要动。

    四、直接在云服务上安装nginx

    1.Installing Nginx

    # 安装nginx
    sudo apt-get update 
    sudo apt-get install nginx 
    
    # 启动nginx,查看启动状态,如果启动状态未active,则代表启动成功
    sudo systemctl start nginx && sudo systemctl status nginx
    
    # 默认开启80端口,可以查看一下是否提供web服务
    curl -I 127.0.0.1
    

    2.nginx 管理命令

    To stop your web server, type:

    sudo systemctl stop nginx
    

    To start the web server when it is stopped, type:

    sudo systemctl start nginx
    

    To stop and then start the service again, type:

    sudo systemctl restart nginx
    

    If you are simply making configuration changes, Nginx can often reload without dropping connections. To do this, type:

    sudo systemctl reload nginx
    

    By default, Nginx is configured to start automatically when the server boots. If this is not what you want, you can disable this behavior by typing:

    sudo systemctl disable nginx
    

    To re-enable the service to start up at boot, you can type:

    sudo systemctl enable nginx
    

    3.nginx配置

    创建/etc/nginx/conf.d/nginx_dj_pro.conf文件:

    upstream MyBlog {
     # 此处为uwsgi运行的ip地址和端口号
     server 172.18.168.123:8000;
    }
    ​
    server {
     # 监听端口
     listen      80;
    ​
     # 服务器域名或者ip地址
     server_name 39.108.191.165 ;
    ​
     # 编码
     charset     utf-8;
    
     # 文件最大上传大小
     client_max_body_size 75M;
    
     # 媒体文件
     location /media  {
     alias /home/Conner/MyBlog/media;
     }
    
     # 静态文件
     location /static {
     alias /home/Conner/MyBlog/static;
     }
    
     # 主目录
     location / {
     uwsgi_pass  MyBlog;
     include    /etc/nginx/uwsgi_params;
     }
    }
    ​
    
    # 修改sudo vim /etc/nginx/nginx.conf
    # 第一行开头修改用户,将www-data改为你当前的用户
    ​
    user username;
    
    # 测试nginx配置文件是否正确,
    sudo nginx -t -c /etc/nginx/nginx.conf
    # 打印如下内容,则没问题
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    ​
    # 重新加载配置
    sudo nginx -s reload -c /etc/nginx/nginx.conf
    

    相关文章

      网友评论

          本文标题:django项目--项目部署

          本文链接:https://www.haomeiwen.com/subject/dnvxuctx.html