# 项目部署
# 服务器购买和配置
我们可以前往华为云 (opens new window)、腾讯云 (opens new window)、阿里云和百度云等云平台购买服务器。这里以购买华为云服务器为例,操作步骤如下:
- 点击此处 (opens new window)前往华为云产品折扣页面购买活动产品,如果没有华为云账号需要先进行注册和实名认证。
注:预算有限的同学可以选择腾讯云 (opens new window),具体操作差不多,算是目前优惠力度最大的云平台。
- 选好想要购买的云服务器后,点击立即购买,更换系统镜像为 CentOS,其它规格配置默认即可,如下所示:
- 进入华为云控制台 (opens new window),点击我的资源中的弹性云服务器,进入云服务器列表,如下所示:
- 安全组规则配置,放行 80 端口,如下所示:
- 重置远程登录密码,如下所示:
- 重置远程登录密码后,开始远程登录,如下所示:
- 登录成功后的界面如下所示:
# 域名购买和配置
为了学习更多的云平台,这次选择在腾讯云 (opens new window)进行域名购买和配置,其它云平台的操作也都差不多,具体步骤如下:
- 进入腾讯云 (opens new window),搜索域名注册,购买你想要注册的域名:
- 进入到腾讯云的域名控制台 (opens new window),划动到页面底部,点击解析按钮:
- 点击左上角添加记录按钮,添加前台门户网站(book.xxyopen.com)和后端接口(api.book.xxyopen.com)的域名解析记录(服务器公网IP可在华为云控制台的服务器列表获取):
# Docker 安装
- 下载并运行 Docker 一键安装脚本
curl -sSL https://get.daocloud.io/docker | sh
- 启动 Docker 服务
systemctl start docker
- 查看 Docker 版本
docker -v
# MySQL 安装和配置
- Docker 方式安装 MySQL8.0
docker run -itd --name mysql8.0 --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
- 上传 SQL 脚本文件
novel_data.sql
和novel_struc.sql
到服务器
- 导入 SQL 脚本文件到 MySQL 容器
docker cp novel_data.sql mysql8.0:/tmp/
docker cp novel_struc.sql mysql8.0:/tmp/
- 登入到 MySQL 容器内的 MySQL 服务
docker exec -it mysql8.0 mysql -uroot -p123456
- 创建数据库
create database novel default character set utf8mb4;
use novel;
- 执行 SQL 文件
source /tmp/novel_struc.sql
source /tmp/novel_data.sql
根据需要创建其它远程访问账号或修改 root 账号的远程访问权限
退出 MySQL 容器
exit;
# Redis 安装和配置
- Docker 方式安装最新版 Redis
docker run -d --name redis8.0 --restart=always -p 6379:6379 redis --requirepass "123456"
- 根据需要开启 Redis 的远程访问权限
# JDK 安装和配置
yum 安装 JDK 17
yum install java-17-openjdk.x86_64 -y
# 后端服务部署
下载后端项目源码
修改
application.yml
和redisson.yml
文件中的 MySQL 配置和 Redis 配置修改
application.yml
文件中的跨域配置项目根目录下运行
mvn clean package -Dmaven.test.skip
命令打包上传打包后的 jar 文件到服务器
nohup java -jar novel-<版本号>.jar &
命令启动后端服务 nohup 介绍 (opens new window)
# Nginx 安装和配置
- 启动一个最新版 Nginx 的 Docker 临时容器
docker run -d --name nginx nginx
其中,Nginx 运行在 Docker 容器中对应的目录如下:
- 配置文件目录:/etc/nginx
- 日志目录:/var/log/nginx
- 项目根目录:/usr/share/nginx/html
- 复制 Nginx 的配置文件到宿主机中
mkdir nginx
cd nginx
mkdir conf
cd conf
docker cp nginx:/etc/nginx ./
cd ..
mkdir html
mkdir log
- 配置后端服务的反向代理
vim conf/nginx/conf.d/novel.conf
# server {
# listen 80;
# server_name book.xxyopen.com;
# location / {
# root /www/novel;
# index index.html index.htm;
# }
# }
server {
listen 80;
server_name api.book.xxyopen.com;
location / {
proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.0.58:8888; # 不能使用 127.0.0.1,要使用宿主机 IP
}
}
- 停止之前启动的临时容器,并删除
docker stop nginx
docker rm nginx
- 启动新的 Nginx 容器
docker run -d -p 80:80 -p 443:443 --name nginx --restart=always -e TZ="Asia/Shanghai" -v /root/nginx/html:/usr/share/nginx/html:ro -v /root/nginx/conf/nginx:/etc/nginx/:ro -v /root/nginx/log:/var/log/nginx nginx
其中,
- :ro:表示容器内部的 nginx 文件是只读的,想要修改配置内容,只能修改宿主机的 conf 文件夹。这样带来的好处是安全性更高
- -e TZ="Asia/Shanghai":表示把时区设置为中国的时区
- 如果出现问题,查看错误日志
tail -f log/error.log
# 前端网站部署
下载前端项目源码
修改
.env.production
中的生产环境配置项目根目录下运行
yarn build
命令构建上传
dist
文件夹中的内容到到服务器/root/nginx/html
目录中