基于springboot + vue 的个人博客搭建过程(新手村之外的世界依旧充满魅力)

本文详细记录了博客项目部署过程,包括IDEA集成Docker、Nginx部署SSL与Vue服务、docker-compose配置优化,涉及跨域、SSL加密、静态资源管理等多个环节。同时分享了遇到的问题及解决方案,如API前缀调整、时区同步等。
摘要由CSDN通过智能技术生成

承接上文:基于springboot + vue 的个人博客搭建过程(上线)
目前博客项目经历重构后并成功上线,接下来记录优化部分

部署优化

1. idea集成docker

  1. docker开启远程端口
# 修改该docker服务文件
vim /lib/systemd/system/docker.service
# 修改ExecStart这行(注释后修改为如下)
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

#重新加载配置文件
systemctl daemon-reload
# 重启服务
 
# 查看端口是否开启
netstat -nlpt   #如果找不到netstat命令,需进行安装 yum install net-tools
# curl测试是否生效
curl http://127.0.0.1:2375/info
  1. docker远程端口加密
    点我跳转
    加密参考:https://blog.csdn.net/lovexiaotaozi/article/details/82797236
  2. idea集成docker
    pom.xml相关配置
<plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>

                <configuration>
                    <!--镜像名称 raxcl/blog-api-->
                    <imageName>app</imageName>
                    <!--基础镜像jdk 1.8-->
                    <baseImage>java</baseImage>
                    <!--制作者提供本人信息-->
                    <maintainer>raxcl raxcl@qq.com</maintainer>
                    <!--切换到/ROOT目录-->
                    <workdir>/ROOT</workdir>
                    <cmd>["java", "-version"]</cmd>
                    <entryPoint>["java", "-jar", "${project.build.finalName}.jar","--spring.profiles.active=prod"]</entryPoint>

                    <!--指定Dockerfile路径
                        <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                    -->
                    <!--指定远程docker api地址-->
                    <dockerHost>https://ip地址:端口号</dockerHost>
                    <dockerCertPath>D:\environment\ca</dockerCertPath>

                    <!--这里是复制jar包到docker容器指定目录配置-->
                    <resources>
                        <resource>
                            <targetPath>/ROOT</targetPath>
                            <!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
                            <directory>${project.build.directory}</directory>
                            <!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

到这里已经集成了docker了,可以通过docker:build命令生成镜像了。
现在再将docker:build命令集成到maven中,实现一键部署
maven参数修改
在这里插入图片描述

2. nginx部署ssl协议

  1. 下载ssl相关的nginx证书并上传到服务器nginx相关位置
  2. 修改nginx中的blog.conf配置
server{
    # 监听端口
    listen  443 ssl;
    # 主机名称/地址
    server_name raxcl.cn www.raxcl.cn;
    index   index.html;
    # https访问
    ssl_certificate	/etc/nginx/ssl/raxcl.cn_bundle.crt;
    ssl_certificate_key	/etc/nginx/ssl/raxcl.cn.key;
    ssl_session_timeout 5m;
    

主要是监听443端口和写入证书

3. nginx部署两个vue服务

配置文件多写个server(只需改一下对应静态文件地址就可以):

4. 去掉url末尾/

rewrite ^/(.*)/$ /$1 permanent;

5. 完整配置文件

docker-compose配置文件修改

version: '3'
services:
  nginx:
   image: nginx
   container_name: nginx
   ports:
    - 443:443
   links:
    - app
   depends_on:
    - app
   volumes:
    - /mnt/docker/nginx/:/etc/nginx/
    - /mnt/raxcl/blog_admin:/raxcl/blog_admin
    - /mnt/raxcl/blog_view:/raxcl/blog_view
   network_mode: "bridge"
  app:
    image: app
    container_name: app
    expose:
      - "后端端口"
    network_mode: "bridge"

4.nginx去掉末尾/

gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_vary off;
upstream appstream{
	server app:8090;
}
# http跳转到https
server{
    listen  80;
    server_name raxcl.cn www.raxcl.cn;
  # 旧写法
  # rewrite ^(.*) https://raxcl.cn/$1 permanent;
  # 新写法
    return 301 https://raxcl.cn$request_uri;
}
server{
    listen 80;
    server_name admin.raxcl.cn;
    return 301 https://$host$request_uri;

}
# www二级域名跳转至主域名
server{
    listen  443 ssl;
    server_name www.raxcl.cn;
    # ssl证书
    ssl_certificate     /etc/nginx/ssl/raxcl.cn_bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/raxcl.cn.key;
    return 301 https://raxcl.cn$request_uri;
}

server{
    # 监听端口
    listen  443 ssl;
    # 主机名称/地址
    server_name raxcl.cn;
    index   index.html;
    # ssl证书
    ssl_certificate	/etc/nginx/ssl/raxcl.cn_bundle.crt;
    ssl_certificate_key	/etc/nginx/ssl/raxcl.cn.key;
    ssl_session_timeout 5m;
    # 后端api
     location /RBlog {
        proxy_pass http://appstream;
    }
    # 前端服务
     location / {
        # 去掉末尾/
        rewrite ^/(.*)/$ /$1 permanent;
        root /raxcl/blog_view;
        index index.html;
        # 刷新页面后跳转到当前页面 
        try_files $uri $uri/ /index.html;
     }
    location ~* \.(jpg|jpeg|gif|png|swf|rar|zip|css|js|map|svg|woff|ttf|txt)$ {
        root /raxcl/blog_view/;
        index index.html;
        add_header Access-Control-Allow-Origin *;
    }
}
server{
    # 监听端口
    listen  443 ssl;
    # 主机名称/地址
    server_name admin.raxcl.cn ;
    index   index.html;
    # 强制https访问
    ssl_certificate     /etc/nginx/ssl/admin.raxcl.cn_bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/admin.raxcl.cn.key;
    ssl_session_timeout 5m;
    # 后端api
     location /RBlog/admin {
     proxy_pass http://appstream;
    }

    # 前端服务
     location / {
        rewrite ^/(.*)/$ /$1 permanent;
        root /raxcl/blog_admin;
        # 刷新页面后跳转到当前页面
        try_files $uri $uri/ /index.html;
        index index.html;
     }
    location ~* \.(jpg|jpeg|gif|png|swf|rar|zip|css|js|map|svg|woff|ttf|txt)$ {
        root /raxcl/blog_admin/;
        index index.html;
        add_header Access-Control-Allow-Origin *;
    }
}



博客系统bug点

1. 取消添加api前缀跨域配置(不美观):

**已完成**:将api改为blog,区分前后端应用

2. 博客时间是8小时以前 :

**已完成**:数据库时区修复成与宿主机对应

3. nginx跨域配置不生效 :

 **已完成**:重新理解学习nginx

4. 后端管理系统置顶异常

**已完成**: mybatis sql语句写错...这就尴尬

5. 刷新页面后,带参数的url无法识别

vue配置问题,nginx前缀问题
解决过程:[点我](https://blog.csdn.net/RAXCL/article/details/122544557)

博客系统优化项

1. 将ip访问替换为域名访问

暂定:blog.raxcl.cn 和 www.raxcl.cn
已完成:前端域名:raxcl.cn
部署博客后台,暂定域名:admin.raxcl.cn
已完成: 管理系统:admin.raxcl.cn

2. 将静态资源部署到github中

为了加快访问速度,部署的时候,可以把图片,js,css等放入七牛云存储中,加快网站访问速度
已完成: 利用github做图床,cdn访问

3. 优化博客显示界面

已完成:前端页面从码神之路重构,引入NBlog前端页面(后续继续优化)

4. 关闭多余端口

已完成: 关闭不使用的端口,增加安全性(被黑客入侵过,害怕了)

5. 实现springboot项目自动部署

已完成: idea集成docker实现一键打包并生成镜像,并传至服务器(只需在服务器中docker-compose up -d构建即可)

6. 远程主机强迫关闭现有连接

已完成:将redis配置文件的 tcp-keepalive 改为60即可
(还有可能是你公司的网络问题导致,目前还想不出好的办法解决,只能切流量)

7. github主页面优化

已完成:https://github.com/Raxcl (好看了很多)

8. 优化springboot后端项目所有的阿里规范插件给的提示

已完成 : 关于markdown相关提示暂时无法完成,后续能力足够再回头弄弄

9. 将redis中的数据持久化到数据库中

已完成 : 定时任务

10. java定时任务备份mysql数据

已完成跳转链接

11. ip来源:内网ip怎么理解?

已完成 :未设置nginx请求头,所以获取的ip均为nginx内网ip

# 后端api
     location /RBlog {
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://appstream;
    }

$remote_addr: 获取用户的真实ip
$proxy_add_x_forwarded_for: 获取用户真实ip和集群ip(推测用于集群搭建)
参考链接

12. 评论数据,可以考虑放入mongodb当中(可以增加图片评论)

13. 实现一键发布各平台博客的骚操作

14. 部署其他小项目(自己写的工具类)

15. 将jdk版本更新到最新(年轻就是要折腾)

已放弃:和多种开源框架不兼容,且jdk18存在问题

16. 更换cdn源(已完成)

由于 cdn.jsdelivr.net 在国内基本凉凉,将相关资源从github图床迁移至腾讯云的cos,并通过腾讯云cdn加速。
小知识点:

  1. jsdelivr上某些零散的资源,比如min.js等等,可以通过cos的回源白嫖到cos中
  2. 同步回源存在路径bug,官网说预计明年一月份修复,建议使用异步回源
  3. 对于资源路径存在@符号的,会导致回源失败,需用手动下载上传的方式规避@符号

17. 更换live2d api接口(已完成)

由于 fghrsh的live2d_api接口也用到了 cdn.jsdelivr.net,导致访问失败,且等了5个月也没有要维护的意思,无奈只能自己配置(失去了白嫖的快乐)
配置过程对于萌新不太友好,于是新开章节娓娓道来:搭建 live2d api接口详细步骤

18. nginx 时区修改

docker默认是时区不是东八区,会比我们晚8个小时。所以我们修改为上海的时间。
在 docker-compose.yml 添加如下信息

version: '2'
services:
     nginx:
      image: 'nginx:latest'
      restart: always
      container_name: nginx
      ports:
        - '80:80'
        - '8081:8081'
        - '443:443'
      environment:
        TZ : 'Asia/Shanghai'
      volumes:
        - '/app/nginx/conf.d:/etc/nginx/conf.d'
        - '/app/nginx/logs:/etc/nginx/logs'
      command:  nginx -g 'daemon off;'`

主要是这一句

environment:
TZ : ‘Asia/Shanghai’

前端

1. borad改为首页

已完成:仅仅是修改样式,很简单

2. 看板娘

挣扎再三,发现看不太懂代码,缺乏vue项目经验,还是决定搞个demo练练手
本想学这个:
在这里插入图片描述
但46小时,认真学的话,怎么说也要2个月,对于一个后端boy,想想还是先不急学那么深,先会看代码,改bug,写基本功能即可,于是捡起来以前没怎么学的课程:

在这里插入图片描述
狂神大法好!

评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值