美文网首页白手起家学Python程序员
Django学习(一)网站部署流程

Django学习(一)网站部署流程

作者: 敖瑞_rick | 来源:发表于2018-01-11 16:19 被阅读213次

    部署业务流程

    零、已经具备的条件

    django项目在建立之初,就预留了uwsgi的接口。我在学习了整个项目部署流程之后,感觉到这应该算是最简单的部署方式了。
    在此我要特别感谢我的好友@小飞侠,没有他无数个日夜的教导和帮助,我一定没法那么快独立完成一个项目的部署。

    前置条件
    1. 选择一个服务器供应商并建立一个服务器实例,本次部署中我使用的是亚马逊EC2服务器,这是一个免费使用一整年的服务器;
      AWS 云服务-最专业的大数据和云计算服务以及云解决方案提供商
      1.1.值得一提的是,亚马逊EC2因为是境外网站,比较卡,因此有条件的朋友建议使用腾讯云、阿里云等国内云服务
    2. 本次我们计划使用uwsgi+nginx方案来部署django项目,这也是当下最可靠的项目部署方案;
    3. 使用Xshell工具连接服务器,从这里开始整个部署流程
    4. 购买域名(可选)

    一、安装环境

    1. 进入超级管理员su(sudo passwd 设密码)、升级pip3到最新;
    2. 安装uwsgi、nginx、libmysqld-dev、mysql-server;
    3. 待部署业务和配置文件包上传(/home/ubuntu);(在Xshell上新建文件传输Ctrl+Alt+F,配置文件包括uwsgi文件、nginx文件和项目数据文件)
    4. test.py测试uwsgi;
      关于如何测试的教程请参见:
      uWSGI+django+nginx的工作原理流程与部署历程
    uwsgi --http :8000 --wsgi-file test.py
    
    1. 调整服务器开放端口TCP:8000、安全组:0.0.0.0/24 ALL
    2. 安装项目环境:
      这个项目环境是你在开发过程中的项目环境,可用
    pip freeze > requirements.txt
    

    将上述文件移动到服务器,使用如下命令即可:

    pip3 install -r requirement.txt
    

    二、实装项目

    1. 移动项目位置到特定目录(/opt/);(最好不要把所有项目都放在home,会比较混乱)
    2. 在业务文件下一级建立配置文件夹script、复制uwsgi.ini并修改路径、按照示例修改setting.py(如果文件应用太多、整体替换容易出错)
    .../django-project/django-project/settings.py
    • DEBUG=False (从Debug状态退出)

    • ALLOWED_HOSTS = ['*'] (任意主机均可访问项目)

    • STATIC_URL = '/static/' (静态文件地址)

    • STATIC_ROOT= '/opt/MyProject/store/static/' (静态文件根目录)

    1. 建立数据库:
      进入mysql命令行下,数据库名称最好与开发时相同
      create myproject
    2. 收集静态文件python3 manage.py collectstatic (这是一个django命令)
    3. 实装项目python3 manage.py migrate (这是一个django命令)
    4. 导入数据库source /opt/peizhi/myproject.sql; (这是一个mysql命令)
      如果项目在开发过程中有数据要一同迁移,则需提前将数据导出,上传到服务器再按照上述命令导入;

    三、上线

    1. 复制配置文件nginx,/etc/nginx/sites-avable/novel.conf 并作出修改
        listen 80;
        server_name localhost;
        charset     utf-8;
        access_log      /wwwroot/destiny/nginx_access.log;
        error_log       /wwwroot/destiny/nginx_error.log;
        client_max_body_size 75M;
        location /static {
            alias /wwwroot/destiny/destiny/static;
        }
    
        location / {
            include     /etc/nginx/conf/uwsgi_params;
            uwsgi_pass  127.0.0.1:9090;
        }
    }
    
    1. 修改novel.conf路径、IP等信息;
    2. 进入/sites-enable文件夹设置快捷方式ln -s /etc/nginx/sites-avable/novel.conf ./novel.conf
    3. 启动uwsgi、启动nginx(各种命令请见要点)

    如果不出意外的话,输入启动命令之后就应该部署成功了


    配置文件要点

    1. uwsgi.ini配置文件在django项目总文件夹下面(注意路径);
    2. novel.conf配置文件在/etc/nginx/sites-available/下;
    3. novel.conf配置文件在/etc/nginx/sites-enabled/下进行关联:ln -s /etc/nginx/sites-available/novel.conf ./novel.conf
    4. setting.py在django文件下,接命令python3 manage.py collectstatic
    5. mysql基础文件,libmysqld-dev需导入
    6. 去隔壁服务器拿东西:ssh ubuntu@(目标内网IP);scp novelsite.zip ubuntu@10.105.119.166(本机内网IP):/home/ubuntu/

    启动命令

    1. uwsgi --ini uwsgi.ini # 启动uwsgi
    2. uwsgi --stop uwsgi.pid # 关闭uwsgi
    3. uwsgi.reload() # 重启uwsgi
    4. service nginx start/status/stop
    5. nginx -t # 检测配置文件是否错误
    6. nginx -s reload # 热重载配置文件
    7. tail -fn300 uwsgi.log # 滚动播放日志文件300行
    8. netstat -tulnp # 查看端口及进程号
    9. iftop # 查看流量监控,需安装
    10. ps -ef|grep nginx # 查看相关功能进程
    11. kill -9 1234 # 强制停止编号为1234的进程

    ScrapyD

    相关文章

      网友评论

        本文标题:Django学习(一)网站部署流程

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