本文最后更新于 2024-08-13,

若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。

本站只有Telegram群组为唯一交流群组, 点击加入

文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请

项目介绍

novel 是一套基于时下最新 Java 技术栈 Spring Boot 3 + Vue 3 开发的前后端分离的学习型小说项目,配备详细的项目开发文档手把手教你从零开始开发上线一个生产级别的 Java 系统,由小说门户系统、作家后台管理系统、平台后台管理系统等多个子系统构成。包括小说推荐、作品检索、小说排行榜、小说阅读、小说评论、会员中心、作家专区、充值订阅、新闻发布等功能。

项目地址:https://github.com/201206030/novel

项目官网:https://novel.xxyopen.com/

安装Docker🐳

MySQL 安装和配置

  1. Docker 方式安装 MySQL8.0
docker run -itd --name mysql8.0 --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
  1. 上传 SQL 脚本文件 novel_data.sqlnovel_struc.sql到服务器

  1. 导入 SQL 脚本文件到 MySQL 容器
docker cp novel_data.sql mysql8.0:/tmp/
docker cp novel_struc.sql mysql8.0:/tmp/
  1. 登入到 MySQL 容器内的 MySQL 服务
docker exec -it mysql8.0 mysql -uroot -p123456
  1. 创建数据库
create database novel default character set utf8mb4;
use novel;
  1. 执行 SQL 文件
source /tmp/novel_struc.sql
source /tmp/novel_data.sql
  1. 根据需要创建其它远程访问账号或修改 root 账号的远程访问权限
  2. 退出 MySQL 容器
exit;

Redis 安装和配置

  1. Docker 方式安装最新版 Redis
docker run -d --name redis8.0 --restart=always -p 6379:6379 redis --requirepass "123456" 
  1. 根据需要开启 Redis 的远程访问权限

JDK 安装和配置

yum 安装 JDK 17

yum install java-17-openjdk.x86_64 -y

后端服务部署

  1. 下载后端项目源码
  2. 修改 application.ymlredisson.yml 文件中的 MySQL 配置和 Redis 配置
  3. 修改 application.yml 文件中的跨域配置
  4. 项目根目录下运行 mvn clean package -Dmaven.test.skip命令打包
  5. 上传打包后的 jar 文件到服务器
  6. nohup java -jar novel-<版本号>.jar & 命令启动后端服务

Nginx 安装和配置

  1. 启动一个最新版 Nginx 的 Docker 临时容器
docker run -d --name nginx nginx

其中,Nginx 运行在 Docker 容器中对应的目录如下:

  • 配置文件目录:/etc/nginx
  • 日志目录:/var/log/nginx
  • 项目根目录:/usr/share/nginx/html
  1. 复制 Nginx 的配置文件到宿主机中
mkdir nginx
cd nginx
mkdir conf
cd conf
docker cp nginx:/etc/nginx ./
cd ..
mkdir html
mkdir log
  1. 配置后端服务的反向代理
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
    }
}
  1. 停止之前启动的临时容器,并删除
docker stop nginx
docker rm nginx
  1. 启动新的 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":表示把时区设置为中国的时区
  1. 如果出现问题,查看错误日志
tail -f log/error.log

前端网站部署

  1. 下载前端项目源码
  2. 修改 .env.production 中的生产环境配置
  3. 项目根目录下运行 yarn build 命令构建
  4. 上传 dist文件夹中的内容到到服务器 /root/nginx/html目录中

反向代理

参考教程:安装及使用

⚠️Nginx Proxy Manager(以下简称NPM)会用到80、443端口,所以本机不能占用(比如原来就有Nginx)

互联网使用请确保完成了域名解析