部署前准备
Python的安装
安装python3 必要的库
yum -y install zlib* gcc-c++
创建安装目录
mkdir /usr/local/python3
进入安装目录
cd /usr/local/python3
下载python安装包
wget --no-check-certificate https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
解压包
tar -xzvf Python-3.7.9.tgz
进入安装包
cd Python-3.7.9
指定安装目录
# 如果此命令报错,则可能是没有安装gcc库,安装即可
# 安装命令 yum install gcc-c++
# configure: error: no acceptable C compiler found in $PATH
./configure --prefix /usr/local/python3/
编译 安装
make & make install
创建pytho3软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
安装pip3
创建文件夹并进入
mkdir /usr/local/pip3
cd /usr/local/pip3
下载源代码
wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.1.tar.gz
解压文件
tar -zvxf 9.0.1.tar.gz
进入文件
cd pip-9.0.1
使用python3安装
python3 setup.py install
#这一步是什么意思呢
#python setup.py install包括两步:python setup.py build, python setup.py install,这两步,可分开执行, 也可只执行python setup.py install, 因为python setup.py install总是会先build后install.
#python setup.py build 是python编译这个module的过程, 这个过程比较复杂,最后会生成build文件夹。除去build过程后的install过程,就是复制build/lib文件到用户指定的lib库。
创建pip3软连接
ln -s /usr/local/python3/bin/pip /usr/bin/pip3
升级pip3
pip3 install --upgrade pip
Ngixn的下载与启动
什么是Nginx :Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,
Nginx官网:http://nginx.org/
安装nginx必要的依赖
yum install gcc gcc-g++ pcre pcre-devel zlib zlib-devel
openssl openssl-devel autoconf automake make
下载nginx安装包
wget http://nginx.org/download/nginx-1.22.0.tar.gz
解压安装包
tar vfxz nginx-1.22.0.tar.gz
进入安装包根目录并编译安装
cd nginx-1.22.0
# 设置配置项,指定安装位置
./configure --prefix=/usr/local/nginx
# 编译安装
make & make install
运行nginx程序
./sbin/nginx
Mysql下载与上传数据
下载mysql安装包
#mysql 8.0
wget http://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
安装mysql仓库源
# MySQL8.0
rpm -Uvh mysql80-community-release-el7-5.noarch.rpm
查看当前拥有的仓库
yum repolist all
安装mysql服务
yum -y install mysql-server
启动mysql服务
systemctl start mysqld
修改mysql临时密码
# 找到临时密码并复制
grep 'temporary password' /var/log/mysqld.log
# 使用临时密码先登录
mysql -uroot -p
# 如果密码太简单,则会报如下错误: ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
ALTER USER 'root'@'localhost' IDENTIFIED BY 'QQQ999...';
# 允许MySQL远程连接
use mysql;
# 查看所有用户
select Host,User from user;
# 修改root用户为允许远程访问
update user set Host='%' where User='root';
# 刷新权限,不刷新则可能权限不生效
flush privileges;
# 退出MySQL
数据库导入命令
#第一步创建与后端项目同名的库
mysql>create database books;
#第二步进入库
mysql>use books;
#第三部 使用我们从本地导入进来的sql数据文件
mysql>source /home/book/book.sql;
数据库修改后 后端项目中的数据库连接地址也是需要修改的
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://sql用户名:sql用户密码@服务器域名:3306/你的表名'
Redis的安装与启动
Redis版本库:https://download.redis.io/releases/
下载安装包
wget https://download.redis.io/releases/redis-4.0.2.tar.gz
解压包
tar xzf redis-4.0.2.tar.gz
进入目录 安装
#进入源码包的目录
cd redis-4.0.2
#编译
make
启动redis
#进入redis目录里
cd src
#执行
./redis-server
此页面代表redis运行成功
下载辅助工具
通常,我们需要上传本地文件到服务器,或者从服务器下载文件到本地。
一般来说,方法多种多样。我们可以通过SCRT提供的一个辅助工具来进行
yum -y install lrzsz
sz # 从服务器下载某文件到本地
rz # 从本地上传某文件到服务器
Gunicorn的安装与启动
- 打包本地的后端项目
- 使用rz上传压缩包到服务器
- 解压后端项目 并创建虚拟环境
# 进入解压后的后端项目的目录里
cd /home/www/book
# 创建虚拟环境文件夹
mkdir venv
# 创建虚拟环境
python3 -m venv venv
#激活虚拟环境
source venv/bin/activate
此时 服务器名字前有(venv) 就代表进入了虚拟环境
在虚拟环境里 安装项目所需的依赖
安装后端项目里的所有依赖 可以把所有依赖写到一个文件夹里上传 进行下载
pip3 install -r req_new.txt
安装gunicorn第三方库
pip3 install gunicorn
启动服务
gunicorn -w 8 -b 0.0.0.0:8000 app:app
前端项目的上传
前端项目编译
npm run build
编译完项目后 会生成一个叫dist的文件夹
里面主要的内容
把dist上传到服务器后 大致工作就已经完成了 还差最后一步! 设置反向代理
来到nginx的配置文件 vim /usr/local/nginx/conf/nginx.conf
#前端的虚拟服务
server {
listen 80; #监听的端口
server_name app.zy.com; #监听域名
location / { #访问路由
root /home/book_vue/dist; #前端文件的路径 可以是相对路径(相对于nginx而言),也可以是绝对路径
index index.html; #如果访问url没有指定文件,优先找哪个文件,从前往后找,找到既停
}
}
#后端的虚拟服务
server {
listen 80; # 监听端口
server_name books.zy.com; # 监听域名
location / {
proxy_pass http://127.0.0.1:8000; # 转发到gunicorn服务
proxy_set_header Host $host; # 把原始的host请求头传递到gunicorn
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 把原始的请求>信息传递到gunicorn
}
}
如果访问页面访问不到,可能是防火墙的原因 ,关闭防火墙后重试
防火墙命令
# 开启防火墙
systemctl start 服务名
# 关闭防火墙(服务器重启后还会自动开启防火墙)
systemctl stop firewalld
# 禁止防火墙开机启动
systemctl disable firewalld