zoukankan      html  css  js  c++  java
  • 发布一个Django项目

    一.部署环境准备,准备python3和虚拟环境解释器,virtualenvwrapper

    1.修改python3的环境变量

                PATH=/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/ruby/bin/:/root/bin
    #前面加上/opt/python36/bin

    2.下载虚拟环境解释器

    在根目录下
    pip3 install -i https://pypi.douban.com/simple virtualenvwrapper
    #如果第一步的环境变量没配置,pip3不能用

    3.编辑 ~./bashrc

    vim ~./bashrc
    写入以下两行代码
    ​
    export WORKON_HOME=~/Envs   #设置virtualenv的统一管理目录
    export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'   #添加virtualenvwrapper的参数,生成干净隔绝的环境
    export VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3     #指定python解释器
    source /opt/python34/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本
    读取文件,使文件生效
    source ~/.bashrc

    4.新建一个虚拟环境

    在根目录下
    mkvirtualenv s15vuedrf

    5.准备前后端代码

    (1)代码不在本地的情况

    在/opt/下创建一个s15vuedrf文件夹,用来放置前后端代码
    ​
    cd /opt/
    mkdir s15vuedrf
    下载前后端代码
    ​
    django代码
    wget https://files.cnblogs.com/files/pyyu/luffy_boy.zip
    vue代码
    wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip

    得到

    解压代码
    ​
    unzip 07-luffy_project_01.zip
    unzip luffy_boy.zip
    ​
    注:unzip如果不能用
    yum install unzip
    yum install zip

     

    (2)代码在本地的情况

    使用xftp工具
    填写主机ip地址后,写入Linux的用户名密码即可实现Linux与windows的文件互传
    将文件传到指定位置即可

     

    二.前端代码上线

    1.准备node打包环境

    在s15vuedrf文件夹在下载node
    ​
    wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz

    得到

    解压该node包
    ​
    tar -zxvf node-v8.6.0-linux-x64.tar.gz

    得到

    进入该文件夹中的bin目录
    ​
    cd node-v8.6.0-linux-x64
    cd bin
    ​
    查看该路径
    pwd
    #得到 /opt/s15vuedrf/node-v8.6.0-linux-x64/bin
    ​
    将该路径添加到环境变量中
    vim /etc/profile
    在最后加入/opt/s15vuedrf/node-v8.6.0-linux-x64/bin
    ​
    读取文件,使文件生效
    source /etc/profile
    检测node和npm是否能正常使用
    ​
    node -v
    npm -v

    2.安装vue的环境依赖(所需的包)

    进入到前端代码包中
    cd 07-luffy_project_01
    注:查看该目录下的所有文件,如果有package-lock.json和node_modules文件,删掉再进行下一步
    rm -rf package-lock.json
    rm -rf node_modules
    安装依赖包
    npm install
    编译打包
    npm run build
    ​
    以上两条都正确之后,就会生成一个dist静态文件,整个前端项目的内容以及index.html都在这里了

    3.注意: src/restful/api.js文件中,前端所写的axios请求可能都是向本地服务器请求,需要改成服务器的地址,由于更改的地方较多,所以用sed语法

    将所有的地址更改
    sed  -i "s/127.0.0.1/192.168.177.130/g" src/restful/api.js
    ​
    检查是否更改成功
    vim src/restful/api.js

     

    三.后端代码上线

    1.准备工作

    进入到后端代码包中
    cd luffy_boy
    ​
    注:如果新开了一个窗口,虚拟环境没有激活,要激活虚拟环境
    workon s15vuedrf

    2.解决后端软件包依赖问题

    (1)方式一:一次性安装所有的依赖包

    导出本地软件包依赖
    pip3 freeze > requirements.txt
    ​
    将这个requirements.txt 传至到服务器,在服务器的新虚拟环境中,安装这个文件,就能安装所有的软件包了
    pip3 install -r  requirements.txt

    (2)方式二:根据报错一个个安装依赖包

    根据这一句的报错逐个安装依赖包,直到执行这句不报错,证明所有的依赖包安装完毕,后端项目能够运行
    python3 manage.py runserver
    ​
    pip3 install -i https://pypi.douban.com/simple django
    pip3 install -i https://pypi.douban.com/simple requests
    pip3 install -i https://pypi.douban.com/simple django-redis
    pip3 install -i https://pypi.douban.com/simple pycrypto
    ......

    出现下图样式,表示安装成功

    3.准备uwsgi,支持高并发的启动python项目

    下载uwsgi
    pip3 install -i https://pypi.douban.com/simple  uwsgi
    ​
    确保uwsgi来自虚拟环境
    which uwsgi
    得到的路径应该在s15vuedrf下

    注:uwsgi的使用方式

    (1)通过uwsgi启动一个python web文件
        定义一个配置文件并编写
            touch s15testuwsgi.py
            vim s15testuwsgi.py
            
        在配置文件s15testuwsgi.py中写入,并保存退出
            def application(env, start_response):
                start_response('200 OK', [('Content-Type','text/html')])
                return [b"Hello World"] # python3
            
        uwsgi命令启动(使用该文件启动)
            uwsgi --http :8000 --wsgi-file s15testuwsgi.py
            
        浏览器访问
            192.168.177.1300:8000
    (2)通过uwsgi启动django
        创建一个Django项目
            django-admin startproject djangotry
        进入该Django项目
            cd djangotry/
        通过uwsgi启动django
            uwsgi --http :8000 --module djangotry.wsgi
        访问本地192.168.177.130
            得到Django基础页面证明访问成功

    注:uwsgi的热加载(不重启项目,自动生效新的后端代码)

    uwsgi --http :8000 --module djangotry.wsgi  --py-authoreload=1

    使用uwsgi的配置文件启动项目

    每次都写这样一句话"uwsgi --http :8000 --module djangotry.wsgi  --py-authoreload=1",太麻烦,且启动的配置参数会更长,使用项目启动文件更方便
    ​
    创建一个uwsgi.ini配置文件,写入参数信息
        touch uwsgi.ini
    参数信息
        [uwsgi]
    ​
        # Django-related settings
        # the base directory (full path)
        #指定项目的绝对路径的第一层路径!!!!!!
        chdir           = /opt/s15vuedrf/luffy_boy/
        
        # Django's wsgi file
        #指定项目的wsgi.py文件,写入相对路径即可,以chdir参数为相对路径
        module          =luffy_boy.wsgi
        
        # the virtualenv (full path)
        #写入虚拟环境解释器的绝对路径
        home            = /root/Envs/s15vuedrf
        # process-related settings
        # master
        master          = true
        
        # maximum number of worker processes
        #指定uwsgi启动的进程个数
        processes       = 5
        
        #socket指的是,uwsgi启动一个socket连接,当使用nginx+uwsgi时,使用socket参数!!!!!(uwsgi不支持静态文件的解析,必须用nginx处理静态文件)
        # the socket (use the full path to be safe
        socket          = 0.0.0.0:9000
        
        #http是指uwsgi启动一个http连接,不用nginx,只用uwsgi的时候,使用这个参数!!!!!
        #http            =0.0.0.0:8000
        
        # ... with appropriate permissions - may be needed
        # chmod-socket    = 664
        # clear environment on exit
        vacuum          = true
        
        #后台运行
        daemonize=yes
        
    使用uwsgi的配置文件启动项目
        uwsgi --ini uwsgi.ini

    4.supervisor进程管理工具的使用

    注:将Linux进程运行在后台的命令有哪些???
        1.在命令后加上"&"符号
            python manage.py runserver &
        2.使用nohup命令
        3.使用进程管理工具
    使用python2的包管理工具下载easy_install,注意,此时要退出虚拟环境
        easy_install supervisor
    如果没有easy_install命令,使用如下命令安装
        yum install python-setuptools
    通过echo_supervisord_conf命令,生成一个配置文件,文件中就是要管理的进程任务
        echo_supervisord_conf > /etc/supervisor.conf
    编辑配置文件,写入操作django项目的 命令 
        vim /etc/supervisor.conf  
    直接到最底行,写入以下配置
        [program:s15luffy]
        #uwsgi可执行文件的地址,以及uwsgi.ini的地址
        command=/root/Envs/s15vuedrf/bin/uwsgi  --ini /opt/s15vuedrf/luffy_boy/uwsgi.ini
        
    启动supervisord服务端,指定配置文件启动
        supervisord -c  /etc/supervisor.conf
    通过supervisorctl管理任务
        supervisorctl -c /etc/supervisor.conf 
    ​
        supervisor管理django进程的命令如下
        supervisorctl直接输入命令会进入交互式的操作界面
        >  stop s15luffy 
        >  start s15luffy 
        >  status s15luffy 
    ​
    ​
    启动luffy的后端代码

    5.nginx的配置

    编译安装nginx(略)
    nginx的主配置文件nginx.conf的配置
    ​
    #第一个server虚拟主机是为了找到vue的dist文件, 找到路飞的index.html
    server {
            listen       80;
            server_name  192.168.13.79;
            
            #当请求来自于 192.168.13.79/的时候,直接进入以下location,然后找到vue的dist/index.html 
            location / {
                root   /opt/s15vuedrf/07-luffy_project_01/dist;
                index  index.html;
            }
            
        }
        
    #由于vue发送的接口数据地址是 192.168.13.79:8000  我们还得再准备一个入口server
    server {
        listen 8000;
        server_name  192.168.13.79;
        
        #当接收到接口数据时,请求url是 192.168.13.79:8000 就进入如下location
        location /  {
            #这里是nginx将请求转发给  uwsgi启动的 9000端口
            uwsgi_pass  192.168.13.79:9000;
            # include  就是一个“引入的作用”,就是将外部一个文件的参数,导入到当前的nginx.conf中生效
            include /opt/nginx112/conf/uwsgi_params;
        }
    }
    ​

     

     

     

     

  • 相关阅读:
    携程开源框架Apollo基础学习(一)
    nslookup,dig,host的用法详解
    curl命令学习
    Saltstack本地管理无master模式
    Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?
    JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
    #{}和${}的区别是什么?
    为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
    MyBatis 与 Hibernate 有哪些不同?
    MyBatis 的好处是什么?
  • 原文地址:https://www.cnblogs.com/shanghongyun/p/10216532.html
Copyright © 2011-2022 走看看