• drf项目部署到腾讯云


    1.部署准备

    1.腾讯云服务器(Ubuntu 16.04系统)

    在购买了腾讯云服务器成功之后,腾讯云的站内信会将系统的登录名:Ubuntu,以及登录初始密码发给你。

    2.本地需要的软件工具

    1. Xshell 远程操作服务器实例

    通过Xshell,打开软件→【文件】→【新建】→【新建会话,输入云服务器的公网ip,用户名:ubuntu,登录初始密码】即可连接到云服务器。

    为了方便安装包,从用户ubuntu切换为root用户:

    sudo -i

    2. filezilla 用于将打包成zip包的项目压缩文件包,上传到云服务器的  /home/ubuntu目录下

    3.Navicat for Mysql 用于同步本地和服务器的数据库

    3.本地项目准备

    1.django项目

    1.settings.py配置

    1.settings.py中配置公网ip才允许访问:

    ALLOWED_HOSTS = ['公网ip']

    2.settings.py中追加静态文件路径配置代码:

    STATIC_ROOT=os.path.join(BASE_DIR,'static')
    STATICFILES_DIR=[os.path.join(BASE_DIR,'static'),] #这一条在开发阶段就可以添加

    3.settings.py中关闭开发调试模式:

    DEBUG = False

    2.生成requirements.txt

    pip freeze >requirements.txt

    3.将gg项目打包成zip包

    2.同步数据库

    1.在云服务器安装Mysql数据库

    1.服务器安装Mysql5.7(目前默认安装的Mysql就是5.7版本的)

    apt-get install mysql-server
    y
    #设置数据库密码,跟本地的数据库密码设置为相同的就可以,省着在项目的settings中麻烦再特意做修改了
    apt-get install mysql-client
    apt-get install libmysqlclient-dev
    y

    2.修改服务器数据库配置文件,使之允许远程连接

    vim /etc/mysql/mysql.conf.d/mysqld.cnf
    # 英文输入环境下,敲 i 键,进入插入模式
    #上下左右键移动光标,注释掉 bind-address = 127.0.0.1
    #英文输入环境下,敲Esc键,输入:wq 保存退出

    3.设置远程连接密码

    mysql -u root -p
    #输入密码(不显示),登录mysql
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
    flush privileges;
    quit;
    #重启mysql服务
    /etc/init.d/mysql restart

    2.使用Navicat,将本地数据库传到腾讯云服务器

    1.建立连接

    连接本地:点击左上角控制面板的【连接】→选择【MySQL】→随便取个连接名字,测试连接,提示连接成功即可。

    连接服务器:点击左上角控制面板的【连接】→选择【MySQL】→随便取个连接名字,输入云服务器的公网pi,用户名:root,密码123456,点击测试连接,提示连接成功即可。

    2.传输数据

    选择本地要传输到服务器的数据库,然后选择数据库连接,点击开始,确定,然后等待传输完成,关闭。

    3.查看是否上传成功

    mysql -u root -p
    #输入密码
    show databases;
    #查看本地数据库是否上传上来了
    quit;

    4.修改服务器数据库配置文件,使之不允许远程连接

    vim /etc/mysql/mysql.conf.d/mysqld.cnf
    # 英文输入环境下,敲 i 键,进入插入模式
    #上下左右键移动光标,将注释掉的 bind-address = 127.0.0.1 恢复
    #英文输入环境下,敲Esc键,输入:wq 保存退出
    #重启mysql服务
    /etc/init.d/mysql restart

    3.上传项目并且运行

    1.项目上传

    1.使用FileZilla上传项目的zip包到ubuntu目录下

    2.解压

    cd /home/ubuntu
    ls
    unzip gg.zip

    3.配置虚拟环境

    1.创建虚拟环境

    #安装虚拟环境
    apt-get install python3.6-venv
    y
    #在当前目录下,创建一个python3.6的虚拟环境,取名为env36
    python3.6 -m venv env36
    . env36/bin/activate
    #进入虚拟环境
    #退出虚拟环境 deactivate

    2.在虚拟环境中安装依赖库

    cd gg
    pip3 install -r requirements.txt

    4.测试运行项目

    1.运行项目:

    python manage.py runserver 0.0.0.0:8000

    2.在安全组打开8000端口

    3.浏览器访问:

    http://公网ip:8000/xadmin/

    4.退出运行状态:

    Ctrl键+C键

    4.安装配置Nginx

    1.安装Nginx

    apt-get install nginx
    y

    2.Nginx配置

    1.删除default:

    #防止错误,先把default文件给删除了
    cd /etc/nginx/sites-available/
    rm default 
    ls
    cd /etc/nginx/sites-enabled
    ls
    rm default 
    ls

    2.新建配置文件:

    cd /etc/nginx/sites-available/
    vim gg.conf

    3.编辑内容:

    i #进入编辑状态

    内容:

    server{
      listen 80;
      server_name gg;
      charset utf-8;
    
      client_max_body_size 75M;
    
      location /static {
        alias /home/ubuntu/gg/static;
      }
      location /media {
        alias /home/ubuntu/gg/media;
      }
    
      location / {
        uwsgi_pass 127.0.0.1:8000;
        include /etc/nginx/uwsgi_params;
      }
    }

    保存退出:

    Esc键+输入:wq+回车 #保存退出

    5.安装和配置uwsgi

    1.安装uwsgi到真实(非虚拟环境)环境下

    #退出虚拟环境
    deactivate
    cd ..
    apt install python3-pip
    y
    apt-get install -y python3-dev pip3 install uwsgi

    2.使用uwsgi启动项目

    1.运行项目

    uwsgi --chdir /home/ubuntu/gg --home /home/ubuntu/env36 --http :8000 --module gg.wsgi

    2.浏览器访问:

    http://公网ip:8000/xadmin/

    3.退出运行状态:

    Ctrl键+C键

    3.配置uwsgi

    1.创建ini文件

    cd /home/ubuntu
    mkdir gg_uwsgi #创建一个目录,专门存放uwsgi的相关文件 cd gg_uwsgi/ vim gg.ini #创建一个ini文件

    2.编辑ini文件

    进入编辑模式:

    i #进入编辑模式

    输入内容:

    [uwsgi]
    chdir = /home/ubuntu/gg
    home = /home/ubuntu/env36
    module = gg.wsgi:application
    
    master = True
    processes = 4
    harakiri = 60
    max-requests = 5000
    
    socket = 127.0.0.1:8000
    
    uid = 1000
    gid = 2000
    
    pidfile = /home/ubuntu/gg_uwsgi/master.pid
    daemonize = /home/ubuntu/gg_uwsgi/gg.log
    vacuum = True

    保存退出

    Esc键+输入:wq+回车 #保存并退出

    4.通过ini启动uwsgi

    1.执行通过ini启动项目命令:

    uwsgi --ini /home/ubuntu/gg_uwsgi/gg.ini

    2.执行检验是否启动了多线程:

    ps -aux | grep uwsgi

    uwsgi --reload /home/ubuntu/gg_uwsgi/master.pid #重启
    uwsgi --stop /home/ubuntu/gg_uwsgi/master.pid #停止

     5.建立软连接

    cd /etc/nginx/
    ln -s /etc/nginx/sites-available/gg.conf /etc/nginx/sites-enabled/gg.conf #复制一份配置文件到enabled目录下
    ls sites-enabled/
    nginx -t #查看Nginx运行情况
    service nginx restart #重启Nginx

    6.运行测试

    1.打开80端口(默认是已经是打开的)

    2.浏览器访问:

    http://公网ip/xadmin/ #注意,这次没有:8000端口号

    css丢失了

    6.收集静态文件

    1.收集静态文件命令:

    cd /home/ubuntu
    . env36/bin/activate
    cd gg
    python manage.py collectstatic
    yes
    #退出虚拟环境
    deactivate

    2.测试

    浏览器刷新访问:

    http://公网ip/xadmin/ #注意,这次没有:8000端口号

    7.域名配置和https

    1.域名购买

    1.在腾讯云购买一个域名

    2.域名备案

    2.域名解析

    1.在腾讯云控制台,选择域名管理,然后选择域名解析

    2.测试域名解析是否成功了,在本地打开cmd。

    ping 域名

    3.申请免费的SSL证书

    1.腾讯云搜索ssl,然后挑选那个免费的ssl证书,输入相关验证信息,等待通过验证

    2.下载到本地

    4.nginx安装ssl证书

    1.腾讯云nginx安装ssl证书的文档:

    https://cloud.tencent.com/document/product/400/35244

    2.按照腾讯云的文档

    如果存在/usr/local/nginx/conf 目录,则将1_www.xxxx.com_bundle.crt 证书文件和 2_www.xxxx.com.key 私钥文件从本地目录拷贝到此目录下。
    如果不存在,则mkdir建立/usr/local/nginx/conf 目录

    3.使用filezilla只能以ubuntu的身份与云服务器进行连接,所以只能先将证书文件和私钥文件上传到ubuntu目录下

    4.将证书文件和私钥文件拷贝到conf目录下

    cp 1_www.luoyikeji.cn_bundle.crt /usr/local/nginx/conf
    cp 2_www.luoyikeji.cn.key  /usr/local/nginx/conf
    cd /usr/local/nginx/conf

    5.编辑/etc/nginx/sites-available/gg.conf

    server{
      listen 443;
      server_name www.luoyikeji.cn;
      charset utf-8;
    
      ssl on;
      ssl_certificate /usr/local/nginx/conf/1_www.luoyikeji.cn_bundle.crt; #证书文件名称
      ssl_certificate_key /usr/local/nginx/conf/2_www.luoyikeji.cn.key; #私钥文件名称
      ssl_session_timeout 5m;
      ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_prefer_server_ciphers on;
    
      client_max_body_size 75M;
    
      location /static {
        alias /home/ubuntu/gg/static;
      }
      location /media {
        alias /home/ubuntu/gg/media;
      }
    
      location / {
        uwsgi_pass 127.0.0.1:8000;
        include /etc/nginx/uwsgi_params;
      }
    }
    
    server {
    listen 80;
    server_name www.luoyikeji.cn; #填写绑定证书的域名
    rewrite ^(.*)$ https://$host$1 permanent; #把http的域名请求转成https
    }

    6.重启nginx

    nginx -t
    service nginx restart

    7.测试访问:

    https://www.域名/xadmin/

  • 相关阅读:
    中文乱码总结之web乱码情景
    微信小程序实现navbar导航栏
    boostrap table接收到后台返回的数据格式不一致的解决方法
    bootstrap让footer固定在顶部和底部
    在vue中让某个组件重新渲染的笨方法
    网页打印事件的监听
    关于JavaScript的词法作用域及变量提升的个人理解
    函数节流之debounce
    HTML5 a标签的down属性进行图片下载
    Jquery的深浅拷贝涉及到的知识点
  • 原文地址:https://www.cnblogs.com/xuepangzi/p/11094526.html
Copyright © 2020-2023  润新知