NBlog个人博客部署过程记录 -- 后端springboot + 前端vue

news2024/11/27 11:40:53

项目是fork的Naccl大佬NBlog项目,页面做的相当漂亮,所以选择了这个。可以参考2.3的效果图

惭愧,工作两年了也每个自己的博客系统,趁着过年时间,开始搭建一下.

NBlog原项目的github链接:Naccl/NBlog: 🍓 Spring Boot + Vue 前后端分离博客系统 https://naccl.top (github.com)

非常建议自己去部署一个来维护,之前尝试csdn、github做笔记,但是效果都不好,不如一个可以完全自己的控制的博客让人舒心。

目前项目进度:
1.IP端口部署(完成,可以通过IP+端口访问服务)
2.域名访问(进行中)

美图镇楼

image-20240216161505644

一、本地初步尝试

clone项目到本地,名字和配置都改一改。注意不要全局替换,因为有一些图片的链接也会包含在内。

繁杂工作,就不记录了。

另外项目里使用了redis与mysql,需要准备一下这两个软件。

本地运行足够使用了,不过这里我选择使用服务器上的,因为部署到服务器也是需要准备这两个组件的。详细步骤下一章节写。

二、前后端部署

1.服务器环境准备

既然要部署自己的博客,那么需要准备一台服务器环境。

这里我选择的是观星云(国内领先的云服务器、高防服务器、香港服务器云计算服务商!上云就上观星云! - - 观星云 (guanxingyun.com))的服务器,4核8G,一年五百,定了三年。有条件建议使用阿里云或者腾讯云,观星云的只是便宜,但是稳定性不行,有遇到过整个机房停电,导致服务器挂掉的情况。

服务器内存还是建议4G起步,2G实在干不了啥东西。

准备下docker环境,使用docker安装配置软件太方便了。

1.1 配置Docker

Linux安装配置Docker,详细可以参考这篇文章:Linux安装Docker完整教程-腾讯云开发者社区-腾讯云 (tencent.com)

安装成功后可以使用docker -v检查是否安装成功。

1.2 安装并启动mysql

使用Docker安装mysql,详细可以参考这篇文章:Docker 上安装、启动 MySQL (图解)-腾讯云开发者社区-腾讯云 (tencent.com)。注意使用的mysql版本,不指定的话默认是最新的。

启动后,使用本地数据库客户端检查下是否可以使用,显示连接成功即完成。

1.3 安装并启动redis

类似于Mysql,也是先搜索可用版本,然后选择指定的版本进行安装,不指定默认最新。详细流程可以参考这篇文章:最详细的docker中安装并配置redis-腾讯云开发者社区-腾讯云 (tencent.com)

启动后使用本地客户端尝试连接,这里使用的软件是Another Redis Desktop Manager,可以连接即完成。

1.4 准备Java8环境

由于我们的项目是Java8版本,所以这里使用Java8的环境。

安装配置参考这篇文章即可:Linux安装JDK并配置环境变量 - 详细步骤-腾讯云开发者社区-腾讯云 (tencent.com)

配置好环境变量,使用java -version显示版本说明成功。

1.5 准备Nodejs环境

选择合适的版本进行安装,建议选择和本地一样的,避免出环境问题。

详细流程可以参考这篇文章:Linux下Nodejs安装(最新版)-腾讯云开发者社区-腾讯云 (tencent.com)

服务器运行node -v以及npm -v来验证是否成功。

2.准备部署资源

2.1 后端部署

既然要部署在服务器上,环境信息是要改的。

服务的ip和端口需要配置成服务器的,域名或者ip都行,前后端统一。

目前还没有配置域名,我就先写死成了IP地址+端口,域名之后搞。

# 后端服务URL
blog.api=http://185.242.235.202:${server.port}
# 后台管理URL https://admin.naccl.top
blog.cms=http://185.242.235.202:8080
# 前台界面URL https://naccl.top
blog.view=http://185.242.235.202:8079

修改一下redis、mysql的配置信息,如果代码使用git进行管理,请一定注意不要把服务器上的数据库密码暴露出去,容易被攻击,别问我怎么知道的,求方便的话,直接在blog-api.gitignore中添加配置文件的忽略项,即:

image-20240216154927063

/src/main/resources/application-dev.properties

另外配置信息中还有个评论里的QQ头像保存方式,也请注意修改,就是下面的这几个。(我使用的OSS图床,后续更新代码和配置,Github太慢了)

# 评论中QQ头像存储方式: 本地:local GitHub:github 又拍云:upyun
upload.channel=local

# 静态文件上传访问路径 Windows环境例如: C:/Users/cblog/Desktop/upload/ Linux环境例如:/home/cblog/upload/
upload.file.path=/home/cblog/upload/
upload.file.access-path=/image/**
upload.file.resources-locations=file:${upload.file.path}

之后上传到服务器运行即可,我这里是放在了/home/CBlog/api下面

[root@ser723958765859 CBlog]# ls
api  cms  view
[root@ser723958765859 CBlog]# pwd
/home/CBlog

上传后直接后台启动即可。

[root@ser723958765859 api]# pwd
/home/CBlog/api
[root@ser723958765859 api]# ls
blog-api-0.0.1.jar 
[root@ser723958765859 api]# nohup java -jar blog-api-0.0.1.jar &

2.2 前端部署

首先根据项目的README.md文档,先把/blog-view/src/plugins/axios.js/blog-cms/src/util/request.js中的baseUrl修改为后端 API 地址。

然后前端直接使用npm run build生成dist包,然后制作一个server.js文件,用来配置启动信息。注意和后端配置相统一。

例如,我个人的配置的如下:

  • blog-cms,8079端口
const express = require('express');
const app = express();
app.use(express.static('./dist'));

//运行时的端口,可以自己自定义
const port = 8079;

app.listen(port, function (err) {
    if (err) {
        console.log(err);
        return;
    }
    console.log('Listening at http://localhost:' + port + '\n');
});

  • blog-view,8080端口
const express = require('express');
const app = express();
app.use(express.static('./dist'));

//运行时的端口,可以自己自定义
const port = 8080;

app.listen(port, function (err) {
    if (err) {
        console.log(err);
        return;
    }
    console.log('Listening at http://localhost:' + port + '\n');
});

部署资源准备好后,把distnode-modulesserver.js打包上传到服务器的目录下。

view为例,上传后解压,直接后台启动即可:

[root@ser723958765859 view]# pwd
/home/CBlog/view
[root@ser723958765859 view]# ls
dist  node_modules  server.js
[root@ser723958765859 view]# nohup node server.js &

前端部署完成

2.3 部署测试

启动后直接本地通过ip+端口尝试访问下是否成功。

例如下图,首页显示,前端部署成功。

分类点过去有一篇文章显示,后端部署成功。(测试数据)

image-20240216161152576

image-20240216161221893

基本部署流程结束,现在就有了一个好看的个人博客了~
现在好多东西都是用的原来的,只替换了名字和图片,之后逐步改了。

下一步,优先开启域名访问,待更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1450869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

问题:宋朝为了加强皇帝对司法权的直接控制建立了() #微信#微信问题:宋朝为了加强皇帝对司法权的直接控制建立了() #微信#微信

问题:宋朝为了加强皇帝对司法权的直接控制建立了() A.大理寺 B.刑部 C.审刑院 D.廷尉 参考答案如图所示

webpack实际实践优化项目

参考: 如何通过性能优化,将包的体积压缩了62.7% 雅虎35条 20210526-webpack深入学习,搭建和优化react项目 本文只专注于性能优化的这个部分。 总体来说分为两个方面:第一是开发环境中主要优化打包速度,第二是线上环境…

VScode+PlatformIO 物联网Iot开发平台环境搭建

1.vscode (1)安装platformIO插件 (2)新建项目或导入已有的arduino项目 Name:需要填写你项目的名称; Board:点开是一个下拉框,但是可以输入你想要的开发板,这里选择&quo…

Spring Task定时任务

目录 1、介绍 2、cron表达式 2.1、在线生成器 2.2、通配符 3、代码示例 3.1、使用步骤 3.2、 代码开发 3.3、测试 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发…

【前端高频面试题--Vue组件通信篇】

🚀 作者 :“码上有前” 🚀 文章简介 :前端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬前端高频面试题--Vue组件通信篇 往期精彩内容Vue与VueComponent的关系props / $emit父子组件传值父…

备战蓝桥杯---图论之最短路Bellman-Ford算法及优化

目录 上次我们讲到复杂度为(nm)logm(m为边,n为点)的迪杰斯特拉算法,其中有一个明显的不足就是它无法解决包含负权边的图。 于是我们引进Bellman-Ford算法。 核心:枚举所有的点,能松弛就松弛,直…

《剑指offer》

本专题是分享剑指offer的一些题目,开始刷题计划。 二维数组的中的查找【https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId13&tqId11154&ru/exam/oj】 描述 在一个二维数组array中(每个一维数组的长度相同&#xff0…

[计算机提升] 备份系统:设置还原点

6.7 备份系统:设置还原点 在Windows系统中,系统还原点是指系统在特定时间存储的重要系统文件的备份。通过创建系统还原点,可以轻松地将系统恢复到之前创建还原点的状态。这有助于解决系统文件损坏或Windows操作系统出现问题的情况。 1、右键…

推荐在线图像处理程序源码

对于喜爱图像编辑的朋友们来说,Photoshop无疑是处理照片的利器。然而,传统的Photoshop软件不仅需要下载安装,还对电脑配置有一定的要求,这无疑增加了使用的门槛。 现在,我们为您带来一款革命性的在线PS修图工具——基…

Redis篇----第一篇

系列文章目录 文章目录 系列文章目录前言一、什么是 Redis?二、Redis 与其他 key-value 存储有什么不同?三、Redis 的数据类型?四、使用 Redis 有哪些好处?五、Redis 相比 Memcached 有哪些优势?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住…

GAN生成对抗性网络

一、GAN原理 出发点:机器学习中生成模型的问题 无监督学习是机器学习和未来人工智能的突破点,生成模型是无监督学习的关键部分 特点: 不需要MCMC或者变分贝叶斯等复杂的手段,只需要在G和D中对应的多层感知机中运行反向传播或者…

(2024,DiS,扩散,状态空间主干,Mamba)具有状态空间主干的可扩展扩散模型

Scalable Diffusion Models with State Space Backbone 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 2. 方法 2.1 基础 2.2 模型结构设计 3. 实验 0. 摘要 这篇论文提出…

挑战杯 python区块链实现 - proof of work工作量证明共识算法

文章目录 0 前言1 区块链基础1.1 比特币内部结构1.2 实现的区块链数据结构1.3 注意点1.4 区块链的核心-工作量证明算法1.4.1 拜占庭将军问题1.4.2 解决办法1.4.3 代码实现 2 快速实现一个区块链2.1 什么是区块链2.2 一个完整的快包含什么2.3 什么是挖矿2.4 工作量证明算法&…

MySQL容器的数据挂载

挂载本地目录或文件 可以发现,数据卷的目录结构较深,如果我们去操作数据卷目录会不太方便。在很多情况下,我们会直接将容器目录与宿主机指定目录挂载。挂载语法与数据卷类似: # 挂载本地目录 -v 本地目录:容器内目录 # 挂载本地…

社区商铺开什么店最好?从商业计划书到实际运营

在社区商铺开店,选择适合的业态是成功的关键。作为一名开店 5 年的资深创业者,我想分享一些关于社区店的干货和见解。 这篇文章,我用我的项目给大家举例子! 鲜奶吧作为一种新兴的业态,以提供新鲜、健康的乳制品为主&…

抽象的问题1

vue3&#xff0c;在使用v-mode绑定属性时&#xff0c;发生了奇怪的问题&#xff0c;渲染失败了 代码如下 <template><div><form><div>账号<input v-model"form_user_Data.username" type"text"></div><div>密…

百模大战怎么样了?

百度入场最早&#xff0c;paddlegan/paddlepaddle多年前就布局了中小模型&#xff0c;ERNIE1.0 大模型早在2019年就发布了&#xff0c;只不过效果差&#xff0c;成本高没弄起来。 后来借着chatgpt的东风&#xff0c;百度几乎国内第一时间发布了国产大模型文心一言&#xff0c;文…

寒假学习记录17:包管理器(包管理工具)

概念 包&#xff08;package&#xff09; 包含元数据的库&#xff0c;这些元数据包括&#xff1a;名称&#xff0c;描述&#xff0c;git主页&#xff0c;许可证协议&#xff0c;作者&#xff0c;依赖..... 库&#xff08;library&#xff0c;简称lib&#xff09; 以一个或多个模…

从数字孪生到智慧城市:科技引领下的城市未来展望

一、引言 随着科技的飞速发展&#xff0c;数字孪生和智慧城市已成为当今世界城市发展的重要趋势。数字孪生通过建立物理世界的数字模型&#xff0c;为城市管理和规划提供了前所未有的可能性&#xff1b;而智慧城市则借助先进的信息通信技术&#xff0c;使城市运行更加高效、便…