美文网首页
centos6部署django+mysql+vue

centos6部署django+mysql+vue

作者: 望月成三人 | 来源:发表于2021-02-28 16:30 被阅读0次

    CentOS6使用yum安装服务报错

    Loaded plugins: fastestmirror, security
    Determining fastest mirrors
    YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
     Eg. Invalid release/repo/arch combination/
    removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
    Error: Cannot find a valid baseurl for repo: base
    
    • 因为centos6已停止支持,所有centos的软件仓库也已经不能使用了
      解决方法:
    sed -i.old -e 's/^mirrorlist/#mirrorlist/g' -e 's/^#baseurl=http:\/\/mirror.centos.org\/centos\/$releasever\//baseurl=http:\/\/vault.centos.org\/centos\/6\//g' /etc/yum.repos.d/CentOS-Base.repo
    yum clean all
    

    安装xz

    • 解压文件的时候需要用到此依赖
     yum install xz
    

    安装python3

    • 因为我们要安装python3版本,所以python要指向python3才行,目前还没有安装python3,先备份,备份之前先安装相关包,用于下载编译python3
    yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
    
    • 这几个包必须得安装,否则安装python3时可能会出现各种错误.
      运行下面两个命令,进行备份
    cd /usr/bin
    mv python python.bak
    
    • 安装
    wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz
    tar -xvJf Python-3.6.3.tar.xz
    # 当然,如果用其他格式的,比如
    # wget  https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
    # tar  zxvf ....python
    
    • 编译
    cd Python3.6.3
    ./configure prefix=/usr/local/python3
    make && make install
    
    • 实现python3和python2的共存
    rm /usr/bin/python
    ln -s /usr/local/python3/bin/python3 /usr/bin/python3
    
    • 这时候在执行命令python3 -v和python2 -V,应该就能看到python3和python2的版本了。

    • 因为执行yum需要python2版本,所以我们还要修改yum的配置,执行:

    sudo vi /usr/bin/yum
    #将第一行指定的python版本改为python2
    #!/usr/bin/python 改为 #!/usr/bin/python2
    
    • 安装pip3
    wget --no-check-certificate https://files.pythonhosted.org/packages/b7/2d/ad02de84a4c9fd3b1958dc9fb72764de1aa2605a9d7e943837be6ad82337/pip-21.0.1.tar.gz
    
    tar -zxvf pip-xxx.tar.gz 
    cd pip-xxx 
    python3 setup.py build 
    python3 setup.py install
    
    ln /usr/local/python3/bin/pip3 /usr/bin/pip3
    
    • 测试pip是否能安装
    pip3 install PyMySQL
    pip3 django
    

    安装myql

    wget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
    
    • 安装MySql源
      rpm -ivh mysql57-community-release-el6-9.noarch.rpm
    • 查看一下安装效果
    
    [root@racknerd-4dbd89 home]# yum repolist enabled | grep mysql.
    mysql-connectors-community MySQL Connectors Community                        185
    mysql-tools-community      MySQL Tools Community                             123
    mysql57-community          MySQL 5.7 Community Server                        484
    [root@racknerd-4dbd89 home]#
    
    
    • 安装MySQL服务器
      yum install mysql-community-server
    • 开启mysql服务
    service mysqld start
    
    • mysql安装成功后创建的超级用户'root'@'localhost'的密码会被存储在/var/log/mysqld.log,可以使用如下命令查看密码
    grep 'temporary password' /var/log/mysqld.log
    
    
    • 输入 mysql -u root -p,输入得到的密码,发现无法登陆,如下进行重置设置:
    • vi /etc/my.cnf(注:windows下修改的是my.ini) 在[mysqld]后面任意一行添加skip-grant-tables,重启服务service mysqld restart
    • 再次输入 mysql -u root -p,就能免密登陆
    • 再次修改密码:
    update mysql.user set authentication_string=password('~11111) where user='root';
    flush privileges;
    
    • 然后退出mysql,删除刚刚加的skip-grant-tables,重启mysql服务,重新用密码尝试登陆成功
    • 远程连接设置,把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户。
    show databases;
    use mysql;
    show tables;
    select Host, User,authentication_string9 from user;
     update user set Host='%' where User='root';  
    # 说明: % 代表任意的客户端,可替换成具体IP地址。
    最后刷新一下:flush privileges;
    
    • 设置防火墙或者直接关闭
    vi /etc/sysconfig/iptables
    
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
    
    
    • 重启防火墙以便改动生效:(或者直接重启系统)
    /etc/init.d/iptables restart
    
    • 用HeidiSQL远程连接mysql成功

    下载配置项目

    • 安装gityum install -y git
    • 克隆服务端项目git clone https://github.com/Louis-me/vue_server_api
    • vue_server_api重命名为mysite(这个是历史原因造成的,当初新建的项目就是mysite) mv vue_server_api/ mysite/

    安装项目依赖文件

    • 如果项目没有依赖文件,可以先导出
    pip install pipreqs
    pipreqs --use-local --encoding=utf8 --force .
    
    
    • pip install -r requirements.txt
    • 需要装一个跨域的插件
    pip install django-cors-headers
    
    
    • 服务器新建一个数据库
    mysql -uroot -p
    create database if not exists mydb default character set utf8 collate utf8_general_ci;
    
    • 生成数据库结构
    python3 manage.py migrate
    
    • 在服务器上运行
    python3 manage.py runserver 0.0.0.0:8000
    
    • 可能出现如下错误:
    ile "/usr/local/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 67, in check_sqlite_version
        raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
    django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
    
    
    • django安装在哪些路径下,在我的系统上,需要找到/…/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py这个脚本,django判断当前使用的sqlite版本的代码就在这里,找到以下代码块,注释掉那一行代码并更改Database.sqlite_version_info < (3, 7, 17)::
    def check_sqlite_version():
        if Database.sqlite_version_info < (3, 8, 3):
            raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
    
    
    def check_sqlite_version():
        if Database.sqlite_version_info < (3, 7, 17):
            raise ImproperlyConfigured('SQLite 3.7.17 or later is required (found %s).' % Database.sqlite_version)
    
    
    • 再次执行就不会报错

    • 开放8000端口

    vi /etc/sysconfig/iptables
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
    # 重启
    service iptables restart 
    
    • windows端用telnet ip 8000端口正常访问
    • 编写和启动脚本start.sh,启动sh start.sh
    # 后台启动django服务,输出日志到日志文件中,内容为标准输出和标准错误
    MYDATE=`date +%Y%m%d`
    ALL_LOGFILE=/data/wwwroot/TestPaltForm/log/log_$MYDATE
    
    nohup python3 manage.py runserver 0.0.0.0:8000 > ${ALL_LOGFILE} 2>&1 &
    
    • 查看运行端口和结束进程
    netstat -lnp | grep "8000"
    kill 5014 #查找到进程后,再用结束进程
    

    部署vue

    node pm2 环境配置

    • 配置node
    sudo wget https://nodejs.org/dist/latest-v8.x/node-v8.17.0-linux-x64.tar.xz
    //解压到当前目录
    sudo tar -xvf node-v8.17.0.tar.xz
    // 执行是否安装成功
    cd node-v8.17.0/bin/ && ls #
    # 有node 和 npm
    
    • 测试发现错误,需要安装依赖错误依赖
    [root@racknerd-4dbd89 bin]# ./node
    -bash: .... libstdc++.so.6
    # 执行安装即可
    yum whatprovides libstdc++.so.6
    
    • 现在 node 和 npm 还不能全局使用,做个链接
    ln -s /home/node-v8.17.0-linux-x64/bin/node /usr/local/bin/node
    ln -s /home/node-v8.17.0-linux-x64/bin/np /usr/local/bin/node
    运行node -v,npm -v查看版本,正确则node npm环境无误
    

    安装全局pm2

    npm install pm2 -g
    # 创建软连接
    ln -s /home/node-v8.17.0-linux-x64/bin/pm2 /usr/local/bin/pm2
    

    vue项目配置

    打包

    • vue项目中使用npm run build命令进行打包,生成dist目录,这个文件夹就是我们要部署上线的项目。
      image.png

    编写node启动脚本

    • 主要做的事情是读取目录下的单页面文件(index.js),监听8002端口。
    // app.js
    const fs = require('fs');
    const path = require('path');
    const express = require('express');
    const app = express();
    
    app.use(express.static(path.resolve(__dirname, './dist')))
    
    app.get('*', function(req, res) {
        const html = fs.readFileSync(path.resolve(__dirname, './dist/index.html'), 'utf-8')
        res.send(html)
    })
    
    app.listen(8002);
    

    生成package.json文件

    • 由于app.js启动脚本使用了express框架,我们可以生成一个package.json文件,将express依赖添加进去。
    // package.json
    {
      "name": "back_manage",
      "version": "1.0.0",
      "description": "",
      "main": "app.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "express": "^4.15.3"
      }
    }
    

    文件上传

    • 服务器上新建一个文件夹,将vue项目打包文件、app.js启动脚本、package.json配置文件,上传至该文件夹下,注意:三个文件是同级的。


      image.png
    • 在该文件夹下安装依赖
      npm install

    服务启动

    登陆到你的服务端,cd到项目文件夹,使用pm2 start app.js就成功启动服务了

    image.png
    • 放开防火墙8002端口后,则在外网能进行访问了
    vi /etc/sysconfig/iptables
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 8002 -j ACCEPT
    # 重启
    service iptables restart 
    
    image.png

    参考

    相关文章

      网友评论

          本文标题:centos6部署django+mysql+vue

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