centos6部署django+mysql+vue

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

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容