美文网首页
Centos7部署Django+Vue项目

Centos7部署Django+Vue项目

作者: 猪儿打滚 | 来源:发表于2021-02-21 18:54 被阅读0次

    1、python3预置环境

    sudo yum -y update
    sudo yum -y wget 或 sudo yum install wget
    yum -y groupinstall "Development tools"  # 如果报错指定组没有可安装或升级的软件包,则yum clean all后再执行安装
    yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
    yum install python3-devel
    

    2、安装python3

    • 下载python3.6到/usr/loca目录
      wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
    • 解压
      tar -zxvf Python-3.6.8.tgz
    • 进入解压好的文件中
      cd Python-3.6.8
    • 编译安装到指定的路径
      ./configure --prefix=/usr/local/python3
    • 安装python3
      make
      make install
    • 添加软链接,添加变量,方便直接使用python3命令(如果/usr/bin中已有则无需添加)
      ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
    • 给pip3建立软链接
    ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
    
    注: 如果软链建立完成,但是却无法使用的时候执行下面命令:
         mv pip pip2  # (将文件 pip 更名为 pip2 )
         ln -s /usr/local/python3/bin/pip3 /usr/bin/pip 
    

    2、虚拟环境(可选)

    • 安装virtualenv, 方便不同版本项目管理(可选)
    pip3 install virtualenv
    # 创建软链接
    ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv3
    
    • 创建目录
    mkdir -p /data/env  # 存放虚拟环境
    
    • 创建环境
    # 创建虚拟环境
    virtualenv3 --python=/usr/bin/python 项目名    
    
    # 进入指定的环境bin目录
    cd /data/env/环境名称/bin 
    # 开启虚拟环境(启动后出现 (qize_demo),说明是成功进入虚拟环境。)
    source activate 
    # 退出虚拟环境的命令
    deactivate.bat
    

    3、部署django项目

    • 创建目录
    mkdir -p /data/wwwroot  # 存放web项目
    
    • 在本地项目目录下用把当前的环境依赖包导出到requirements.txt文件
      pip freeze > requirements.txt
    • 把打包的项目放到/data/wwwroot目录下
    • 解压项目(.zip文件使用unzip命令解压)
    • 进入项目目录
    • 安装requirements.txt里的依赖包。
      pip3 install -r requirements.txt
    • 如果出现报错Command “python setup.py egg_info“ failed with error code 1 in /tmp/pip-build
      • 解决方案1:可以安装yum install python36u python36u-devel,如果无法安装,则使用yum install gcc mariadb-devel
      • 解决方案2:如果上面的不行,则
    sudo python -m pip install --upgrade --force pip 
    sudo pip install setuptools==33.1.1
    
    # 登录mysql
    mysql -u用户名 -p
    # 创建项目对应的数据库;判断原来不存在,则创建数据库,并指定编码格式和校验集:
     create database if not exists xxx  default character set utf8 collate utf8_general_ci;
    # 创建成功,使用该表
    use xxx
    # 导入数据
    source 脚本所在的路径/数据库脚本名字.sql
    
        # 如果数据库创建错误,则删除
        drop database xxx;
        # 如果数据库已创建,但是编码忘了设置,则进入该    库,然后设置编码为utf8
        set names utf8;
    
    • 退出mysql,进入django项目根目录,进行数据库迁移(期间如果报错,则检查setting.py中设置的数据库名或用户名密码是否正确)
      python3 manage.py migrate
    • 启动django项目(8000端口)
      python3 manage.py runserver 0.0.0.0:8000
    • windows机使用telnet命令查看是否能访问
      telnet xxxx 8000
    • 如果启动后,外部无法访问,则需要启动端口
      https://www.jianshu.com/p/3c0060444b4b
    • 或者检查setting.py的配置
    ALLOWED_HOSTS = ['*']
    
    • 编写和启动脚本start.sh,启动sh start.sh
      可以编写一个简单的后台启动+标准输出和错误输出到日志文件中
    # 后台启动django服务,输出日志到日志文件中,内容为标准输出和标准错误
    MYDATE=`date +%Y%m%d`
    ALL_LOGFILE=/data/wwwroot/xxx/log/log_$MYDATE
    
    nohup python3 manage.py runserver 0.0.0.0:8000 > ${ALL_LOGFILE} 2>&1 &
    

    4、部署Vue项目

    • 配置node npm环境
    # 下载node,建议下载到/usr/local/lib
    wget https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xz
    # 解压node
    tar -xvf node-v10.16.3-linux-x64.tar.xz  
    # 修改node目录名
    mv node-v10.16.3-linux-x64 nodejs
    #  创建软链接(注意,源文件需要是绝对路径)
    ln -s /usr/local/lib/nodejs/bin/node /usr/local/bin/node
    ln -s /usr/local/lib/nodejs/bin/npm /usr/local/bin/npm
    # 查看版本,正确则OK
    npm -v 
    node -v
    
    • 安装全局pm2
    # 会安装到上个步骤安装的nodejs/bin目录下
    npm install pm2 -g
    #不知道为啥,-g在linux中不起作用,需要手动 创建软链接来设置全局(默认安装路径是nodejs/bin)
    ln -s /usr/local/lib/nodejs/bin/pm2 /usr/local/bin/
    
    • 修改vue项目设置api文件中的host
    // 换成服务器的IP和django项目端口
    let host = 'http://xxxx:8000';
    export {host};
    
    • 打包vue项目,默认生成一个dist目录,这个文件夹就是我们要部署上线的项目
      npm run build
    • 编写个app.js启动脚本,主要目的是是读取dist目录下的单页面文件(index.js),监听8080端口。
    const fs = require('fs');
    const path = require('path');
    const express = require('express');
    const app = express();
    
    app.use(express.static(path.resolve(__dirname, './dist')))
    //读取目录下的单页面文件(index.js),监听8080端口。
    app.get('*', function(req, res) {
        const html = fs.readFileSync(path.resolve(__dirname, './dist/index.html'), 'utf-8')
        res.send(html)
    })
    
    app.listen(8080);
    
    
    • 把dist目录、app.js、package.json复制到linux中的项目目录下

    • 进入到vue项目目录,安装依赖
      npm install

      安装完依赖后的项目结构
    • 启动服务
      pm2 start app.js

      启动成功
    • 放开防火墙8080端口后,则在外网能进行访问了


      访问成功

    未完待续

    后续会加上Nginx+uwsgi

    参考文章

    vue项目部署参考文章

    相关文章

      网友评论

          本文标题:Centos7部署Django+Vue项目

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