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

部署业务流程

零、已经具备的条件

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 [email protected](本机内网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学习(一)网站部署流程)