上线架构图、阿里云、云服务器安装mysql、云服务器安装redis、云服务器安装python、安装uwsgi、安装虚拟环境、安装nginx、路飞前端后端部署、路飞后台管理样式处理
上节回顾
# 1 文件存储
-之前上传到服务器,放到media文件夹下
-使用文件服务器托管文件
-1 第三方托管
-阿里云oss
-腾讯云
-七牛云
-2 基于开源文件服务器自己搭建
-fastdsf---》中小文件
-minio
-go-fastdsf:是一个基于http协议的分布式文件系统,它基于大道至简的设计理念,一切从简设计,使得它的运维及扩展变得更加简单,它具有高性能、高可靠、无中心、免维护等优点
# 2 搜索功能
-前端Header.vue 搜索框
-搜接口:结果:实战课,轻课,免费----》分布式全文检索引擎
-前端搜索结果页面
# 3 支付宝支付
-商户:我们系统---》申请商户号,营业执照
-沙箱环境:测试商户号
-买家:测试买家
-支付流程
-用户在我们系统中点击立即购买-----》我们后端生成支付链接----》返回给前端---》打开这个地址(支付宝付款页面)----》用户扫码/输入账号密码付款----》支付宝收到用户付的款---》用户付到支付宝商户上----》支付宝会有前端回调(get回调)---》掉回到我们的页面(配置的)---》我们做了个付款成功的页面---》后台写了两个支付回调接口(get自己用,post支付宝用:验证签名)
-使用第三方sdk
-封装了包
-__init__
-settings.py
-pay.py
-pem
-支付宝公钥
-咱们私钥
# 4 订单板块表结构
-Order
-OrderDetail
# 5 下单接口
-前端传入的数据---》{courses:[1,],total_amount:99,subject:订单标题}
-后端:
1 取出所有课程---》
2 计算订单总价格,跟传入的比较
3 取出当前登录用户---》Order表中有谁购买的
request.user中取
4 生成订单号:uuid
5 生成支付链接,放到context中
6 入口前准备:user放到attrs中,订单号放到attrs中
7 生成订单---》存入Order和OrderDetail表
# 6 前端支付
-open
-付款成功页面
# 7 两个回调
-get
-post:支付宝用的,回调不到我们目前的项目的
# 自研
今日内容
-
上线架构图
-
阿里云购买
-
云服务器安装mysql
-
云服务器安装redis(源码安装)
-
云服务器安装python3.8(源码安装)
-
安装uwsgi
-
安装虚拟环境
-
安装nginx(源码安装)
-
路飞前端部署
-
路飞后端部署
-
路飞后台管理样式处理
-
补充
1 上线架构图
# 服务器,公网ip地址
-云服务器:阿里云,腾讯云
# 上线架构图
2 阿里云购买
# 购买阿里云服务器
-阿里云官网,点选购买
# ssh客户端
-xshell
-finalshell:http://www.hostbuf.com/t/988.html
-Bash命令
配置以下服务器,装一些常用依赖
# 更新yum工具
yum update -y
# 装了一堆开发用的工具,git
yum -y groupinstall "Development tools"
# 安装一些可能会用到的工具
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel -y
3 云服务器安装mysql
3.1 前往用户根目录
# 回到家目录/root
cd ~
3.2 下载mysql57
这个版本不需要别的操作只需跟着步骤来就行了
wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
3.3 安装
# 安装rpm包
yum -y install mysql57-community-release-el7-10.noarch.rpm
# 真正安装上面选择完毕后这个直接执行
yum install mysql-community-server
# --nogpgcheck是不需要密钥的意思 如果上面的报错用下面这个命令
yum install mysql-community-server --nogpgcheck -y
3.4 启动mysql57并查看启动状态
启动mysql
systemctl start mysqld.service
查看mysql启动状态
systemctl status mysqld.service
查看默认密码并登录
grep "password" /var/log/mysqld.log
# 密码 !<qGQ?#KC8>j
登录
mysql -uroot -p
# 密码 !<qGQ?#KC8>j
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Lqz12345?';
4 云服务器安装redis(源码安装)
4.1 前往用户根目录
cd ~
4.2 下载redis-5.0.5
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
4.3 解压安装包
tar -xf redis-5.0.5.tar.gz
4.4 进入目标文件
cd redis-5.0.5
4.5 编译环境
# 在src路径下会有可执行文件:redis-server redis-cli
make
4.6 复制环境到指定路径完成安装
cp -r ~/redis-5.0.5 /usr/local/redis
4.7 配置redis可以后台启动:修改下方内容
vim /usr/local/redis/redis.conf
daemonize yes
完成配置
esc
:wq
回车
4.8 建立软链接
建立软链接(因为/usr/local/redis/src)没有加到环境变量
# /usr/bin/ 在环境变量中,所以以后直接敲redis-server就能找到了
ln -s /usr/local/redis/src/redis-server /usr/bin/redis-server
ln -s /usr/local/redis/src/redis-cli /usr/bin/redis-cli
4.9 后台运行redis
cd /usr/local/redis
redis-server ./redis.conf &
4.10 查看是否正常运行
ps aux |grep redis
4.11 测试redis环境
redis-cli
4.12 关闭redis服务
pkill -f redis -9
5 云服务器安装python3.9(源码安装)
linux mac 系统服务是用python写的python2写所以系统中默认带了python2
阿里云的centos自动装了python3.6
云服务器上有python2和python3.6
自己装python3.9
centos快速安装 yum install python 可以快速安装,但是不能指定版本,不能指定安装目录
源码安装 下载指定版本的源码,编译安装
所以linux和mac都自带python2:系统服务,用的python2写的
阿里云的centos默认安装了python3.6
python2 python3.6 python3.9
5.1 源码安装python,依赖一些第三方zlib* libffi-devel
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel -y
5.2 前往用户根目录
cd ~
5.3 下载或上传python3.9 到服务器终端
wget https://registry.npmmirror.com/-/binary/python/3.9.0/Python-3.9.0.tgz
5.4 解压安装包
tar -xf Python-3.9.0.tgz
5.5 进入目标文件
cd Python-3.9.0
5.6 编译安装
配置安装路径:/usr/local/python3
把python3.9.0 编译安装到/usr/local/python39路径下
./configure --prefix=/usr/local/python39
编译安装如果报错,说明缺依赖
# 如果上面那条命令报错执行这条
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel -y
# 如果没有报错则执行下条
make && make install
5.7 建立软链接
建立软链接/usr/local/python38路径不在环境变量,终端命令 python3,pip3
把/usr/local/python39/bin加入到环境变量
ln -s /usr/local/python39/bin/python3 /usr/bin/python3.9
ln -s /usr/local/python39/bin/pip3 /usr/bin/pip3.9
机器上有多个python和pip命令对应关系如下
python 2.x
python3 3.6 pip3
python3.9 3.9 pip3.9
5.8 删除安装包与文件
rm -rf Python-3.9.0
rm -rf Python-3.9.0.tar.xz
6 安装uwsgi
django flask项目上线,需要使用uwsgi部署,性能高,符合wsgi协议的web服务器
使用uwsgi运行django,不在使用测试阶段的wsgiref来运行dajngo了
uwsgi是符合wsgi协议的web服务器,使用c写的性能高,上线要使用uwsgi
6.1 在真实环境安装
pip3.9 install uwsgi
安装到了python39的安装路径的bin路径下了
6.2 建立软连接
ln -s /usr/local/python39/bin/uwsgi /usr/bin/uwsgi
7 安装虚拟环境
7.1 安装前先更新一下pip 与setuptools pbr 减少安装模块错误
# 升级pip版本
python3.9 -m pip install --upgrade pip
#升级setuptools
python3.9 -m pip install --upgrade setuptools
pip3.9 install pbr
7.2 安装依赖
pip3.9 install virtualenv
pip3.9 install virtualenvwrapper
7.3 建立虚拟环境软连接
ln -s /usr/local/python39/bin/virtualenv /usr/bin/virtualenv
7.4 配置虚拟环境:填入下方内容
# ~/ 表示用户家路径:root用户,就是在/root/.bash_profile
# 进环境变量
vim ~/.bash_profile
# 加上这条命令
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.9
source /usr/local/python39/bin/virtualenvwrapper.sh
退出编辑并保存
esc
:wq
7.5 更新配置文件内容
source ~/.bash_profile
虚拟环境默认环境目录 ~/.virtualenvs
7.6 创建虚拟环境
mkvirtualenv -p python3.9 luffy
# 退出虚拟环境
deactivate
# 查看虚拟环境
workon
# 进入虚拟环境
workon 虚拟环境名
8 安装nginx(源码安装)
# nginx:软件网关软件
-Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 ,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点
-运行在服务器上,监听某个端口,可以向这个服务器发送http请求了
-转发http请求,代理静态文件,负载均衡
8.1 安装nginx
前往用户根目录
cd ~
下载nginx1.13.7
wget http://nginx.org/download/nginx-1.13.7.tar.gz
解压安装包
tar -xf nginx-1.13.7.tar.gz
进入目标文件
cd nginx-1.13.7
配置安装路径:/usr/local/nginx
./configure --prefix=/usr/local/nginx
编译并安装
make && sudo make install
建立软连接
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
终端命令 nginx 启动
删除安装包与文件
cd ~
rm -rf nginx-1.13.7
rm -rf nginx-1.13.7.tar.xz
测试Nginx环境,服务器运行Nginx,本地访问服务器ip
nginx
服务器绑定的域名 或 ip:80
无法访问时记得查看服务器防护墙是否在开启着,如果在开启着需要关闭才能访问
1、命令行界面输入命令
systemctl status firewalld.service
并按下回车键。
2、然后在下方可度以查看得到“active(running)”,此时说明防火墙已经被打开了。
3、在命令行中输入
systemctl stop firewalld.service
命令,进行关闭防火墙。
4、然后再使用命令
systemctl status firewalld.service
在下方出现disavtive(dead),这权样就说明防火墙已经关闭。
5、再在命令行中输入命令
systemctl disable firewalld.service
命令,即可永久关闭防火墙。
9 路飞前端部署
把vue项目编译成存粹的静态文件,把ajax远程链接的地址改成服务器的地址
settings.js
export default {
BASE_URL:'http://47.104.229.47:8000/api/v1'
}
9.1 编译前端
npm run build
编译后打包成zip压缩包,传到云服务上去
9.2 在云服务器上安装上传下载的软件
yum install unzip -y
rz 选择上传就行
9.3 解压 zip
yum install unzip -y
unzip dist.zip
9.4 修改Nginx配置文件,实现代理路飞前端
来到Nginx安装目录的conf路径下
cd /usr/local/nginx/conf/
mv nginx.conf nginx.conf.bak
vim nginx.conf #写入
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name 127.0.0.1; # 改为自己的域名,没域名修改为127.0.0.1:80
charset utf-8;
location / {
root /home/html; # html访问路径
index index.html; # html文件名称
try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题
}
}
}
把dist下所有内容 cp 到/home/html 注意路径
cp -r dist /home/html
重启nginx
ginx -s reload
访问自己云服务器ip就能看到前端页面了
http://自己的云服务器ip/