【个人博客系统网站】项目的发布 · 通过公网IP访问我们的网站 · 思考总结

【JavaEE】进阶 · 个人博客系统(6)

在这里插入图片描述

文章目录

  • 【JavaEE】进阶 · 个人博客系统(6)
    • 1. 项目发布
      • 1.1 后端代码修改
        • 1.1.1 数据库密码
        • 1.1.2 端口号修改
        • 1.1.3 文件保存地址修改
        • 1.1.4 静态资源映射修改
      • 1.2 云服务器
        • 1.2.1 建库建表
        • 1.2.2 必要目录
        • 1.2.3 spring boot相关项目整理在一个目录
      • 1.3 打jar包并部署
      • 1.4 服务器安全组,放开对应端口
      • 1.5 项目的启动和停止
      • 1.6 访问地址测试功能
        • 我的博客系统
    • 2. 思考总结
      • 2.1 碎碎念
      • 2.2 项目亮点就是我们项目的大升级

【JavaEE】进阶 · 个人博客系统(6)

1. 项目发布

环境搭建参考:

【JavaEE】项目的部署-让网络上的人都能访问你的网站_s:103的博客-CSDN博客

  1. 数据库
  2. jdk
  3. tomcat不需要,因为我们项目内置了!

1.1 后端代码修改

1.1.1 数据库密码

我这里为空,因为我在云服务器里是没有密码的

spring.datasource.password=

1.1.2 端口号修改

设置应该你云服务器空闲的端口

server.port=8888

数据库端口被占用,或者链接非本地的数据库的话,自行修改~

1.1.3 文件保存地址修改

在这里插入图片描述

在这里插入图片描述

1.1.4 静态资源映射修改

在这里插入图片描述

1.2 云服务器

1.2.1 建库建表

值得注意的是:云服务器数据库版本可能比较低,没法让两个timestamp同时default,并且datetime也无法设置默认为当前时间,而用数据库默认的值,会导致程序出错:

所以我选择,创建时用timestamp,默认为此时;更新时间用datetime,默认为NULL

  • 这样创建时能记录创建时间,未更新则为NULL,后期更新的时候再设置值,这样也逻辑合理了(为NULL代表从未更新过,不为NULL则代表最后一次更新的时间)
-- 创建数据库drop database if exists myblog_system;
create database myblog_system charset=utf8;-- 使用数据数据use myblog_system;-- 创建表[用户表]drop table if exists  userinfo;
create table userinfo(id int primary key auto_increment,username varchar(15) not null unique,name varchar(100) not null,password varchar(65) not null,photo varchar(500) default '',git varchar(500) default '',createtime TIMESTAMP default CURRENT_TIMESTAMP,updatetime datetime default NULL,`state` int default 1
);-- 创建文章表drop table if exists  articleinfo;
create table articleinfo(id int primary key auto_increment,title varchar(100) not null,content text not null,summary text not null,createtime TIMESTAMP default current_timestamp,updatetime datetime default NULL,uid int not null,photo varchar(500) default '',rcount int not null default 1,`state` int default 1
);

直接在云服务器里创建即可~

1.2.2 必要目录

我们目前的一个必要目录是blog_userImage:用于保存用户文件

在根目录/root:

mkdir blog_userImage

1.2.3 spring boot相关项目整理在一个目录

这个非必要,因为你的项目放哪都行,只需要保证执行的时候,语句能够访问到jar包即可

而我是放在根目录的spring_project目录下:

mkdir spring_project
cd spring_project

1.3 打jar包并部署

在这里插入图片描述

等一段时间后:

在这里插入图片描述

文件管理器打开:

在这里插入图片描述

直接拖动到云服务器当前目录下,自动下载:

在这里插入图片描述

下面那个目录是启动之后才有的

1.4 服务器安全组,放开对应端口

由于ip是公开的,而端口号如果全部分开的话,所有人能够应用我们的所有程序,这是不合理的,例如数据库,直接通过3306端口,想干嘛就干嘛,很恐怖!

注意:安全组id要跟我们的ip对应得上,而不是简简单单的创建一个安全组,这样它不知道这个安全组是作用到哪个机器上的

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

  • 放开你自己的哦

如果端口号是8888,出现fiddler关闭后,浏览器访问不了的问题,参考此博客:

fiddler关闭后浏览器网页打不开解决办法关闭fiddler后打不开网页_有点小糊涂哦的博客-CSDN博客

1.5 项目的启动和停止

  1. 启动
nohup java -jar demo-0.00.1-SNAPSHOT.jar &

这里要保证jar包名要访问得上!

  • 结尾的 & 符号表示项目启动后在后台运行,不会随着你关闭 xshell 而结束

并且,要再按一次回车

ps -ef|grep java

查看进程信息,目前可见进程id为14980

在这里插入图片描述

  1. 停止
kill -9 进程ID

1.6 访问地址测试功能

在这里插入图片描述

我试过了,功能都没问题,接下来就交给你来测试了😀:

我的博客系统

  • 注册的时候图片空间太大上传不了,这是通病,没办法~

目前功能就这么多,后续更新功能,可以私信我建议哦!

2. 思考总结

2.1 碎碎念

项目开发就差不多这样,“有想法” + “合理分析” + “实践实现”;“发现问题” + “冷静地多方面分析” + “解决问题”,至于后期发现一些缺漏或者添加需要一些细节/功能,后面发现再定期对网站进行维护更新! 😀

2.2 项目亮点就是我们项目的大升级

  1. 框架升级为Spring全家桶和MyBatis
  2. 应用多线程开发
  3. 注册上传头像功能
  4. 分页功能的实现
  5. 使用自己写的更加安全的加盐加密算法
  6. 用到了AOP编程:统一处理与拦截器

最后,我们有一个升级,就是连接Redis,等我们接下来讲解完Redis的知识后,再回来继续! 😀

欲知后事如何,且听下回分解

文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭🦆


网站:我的博客系统

网站源码(持续更新):myblog_system/src · 游离态/马拉圈2023年9月 - 码云 - 开源中国 (gitee.com)


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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过rabbitmq生成延时消息,并生成rabbitmq镜像

通过rabbitmq生成延时消息队列,并生成rabbitmq镜像 整体描述1. 使用场景2. 目前问题3. 前期准备 具体步骤1. 拉取镜像2. 运行镜像3. 安装插件4. 代码支持4.1 config文件4.2 消费监听4.2 消息生产 5. 功能测试 镜像操作1. 镜像制作2. 镜像导入 总结 整体描述 1. 使用…

vue集成mars3d后,basemaps加不上去

首先&#xff1a; <template> <div id"centerDiv" class"mapcontainer"> <mars-map :url"configUrl" οnlοad"onMapload" /> </div> </template> <script> import MarsMap from ../component…

Vue + Element UI 前端篇(三):工具模块封装

Vue Element UI 实现权限管理系统 前端篇&#xff08;三&#xff09;&#xff1a;工具模块封装 封装 axios 模块 封装背景 使用axios发起一个请求是比较简单的事情&#xff0c;但是axios没有进行封装复用&#xff0c;项目越来越大&#xff0c;会引起越来越多的代码冗余&am…

Kotlin(五) 循环语句

目录 For循环 关键字 until step downTo Java中主要有两种循环语句&#xff1a;while循环和for循环。而Kotlin也提供了while循环和for循环&#xff0c;其中while循环不管是在语法还是使用技巧上都和Java中的while循环没有任何区别&#xff0c;因此我们就直接跳过不进行讲解…

小白学go基础06-了解切片实现原理并高效使用

slice&#xff0c;中文多译为切片&#xff0c;是Go语言在数组之上提供的一个重要的抽象数据类型。在Go语言中&#xff0c;对于绝大多数需要使用数组的场合&#xff0c;切片实现了完美替代。并且和数组相比&#xff0c;切片提供了更灵活、更高效的数据序列访问接口。 切片究竟是…

项目管理工具:实现项目科学管理的利器

什么是项目管理工具 项目管理工具是指用于协助规划、组织、执行和监控项目活动的软件或应用程序。它们提供了一系列功能和工具&#xff0c;帮助项目管理人员和团队有效地管理项目进度、资源分配、任务协作以及沟通等方面的工作。项目管理工具的目标是提高团队的工作效率、优化…

浅谈Mysql读写分离的坑以及应对的方案 | 京东云技术团队

一、主从架构 为什么我们要进行读写分离&#xff1f;个人觉得还是业务发展到一定的规模&#xff0c;驱动技术架构的改革&#xff0c;读写分离可以减轻单台服务器的压力&#xff0c;将读请求和写请求分流到不同的服务器&#xff0c;分摊单台服务的负载&#xff0c;提高可用性&a…

vue 浏览器记住密码后,自动填充账号密码错位

亲测有效&#xff01;&#xff01;! 遇到的场景&#xff1a; 浏览器记住密码后&#xff0c;登录时自动填充账号密码&#xff0c;由于登录时只需要这两个字段所以没问题&#xff0c;见图一&#xff0c;但注册时&#xff0c;账号密码不在一处&#xff0c;见图二 原本账号应该在…

windows编程之线程同步万字总结(创建线程,互斥对象,互斥事件,信号量,关键段,多线程群聊服务器)

文章目录 创建线程方法一_beginthreadex函数讲解使用示例&#xff1a; 方法二CreateThread函数讲解:使用示例: 互斥对象:创建互斥对象CreateMutex 互斥事件介绍创建或打开一个未命名的互斥事件对象 信号量介绍信号量的相关函数使用示例 关键段相关函数错误使用示例正确使用示例…

如何为 Flutter 应用程序创建环境变量

我们为什么需要环境变量&#xff1f; 主要用于存储高级机密数据&#xff0c;如果泄露可能会危及您产品的安全性。这些变量本地存储在每个用户的本地系统中&#xff0c;不应该签入存储库。每个用户都有这些变量的副本。 配置 在根项目中创建一个名为 .env 的文件夹&#xff08…

『PyQt5-Qt Designer篇』| 08 Qt Designer中容器布局和绝对布局的使用

08 Qt Designer中容器布局和绝对布局的使用 1 容器布局1.1 设计容器布局1.2 保存文件并执行2 绝对布局2.1 设计绝对布局2.2 保存文件并执行1 容器布局 1.1 设计容器布局 先拖入一个容器Frame容器,然后拖入几个控件: 把拖入的控件拖入容器中: 选中容器,右键-布局-栅格布局:…

基于OpenCV+LPR模型端对端智能车牌识别——深度学习和目标检测算法应用(含Python+Andriod全部工程源码)+CCPD数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境OpenCV环境Android环境1. 开发软件和开发包2. JDK设置3. NDK设置 模块实现1. 数据预处理2. 模型训练1&#xff09;训练级联分类器2&#xff09;训练无分割车牌字符识别模型 3. APP构建1&#xff09;导入OpenCV库…