手写一个博客平台~第一天

作者:fyupeng
技术专栏:☞ https://github.com/fyupeng
项目地址:☞ https://github.com/fyupeng/distributed-blog-system-api
项目预览地址:☞ 博客第一天


留给读者

关于博客,个人有手写过,说白就是独立开发一个应用,自己搭建服务器,部署、上线和维护项目这么一个过程,当然因为是第一天,所以这里对于不愿开发的,我就提供了一种便携的方式,先看效果图,本人的Hexo静态博客网站,可以直接下载下來快速搭建,维护不需要服务器,只需要注册Github,会点简单的命令和花几分钟时间去使用别人免费给的评论系统、阅读量统计就可以了。

给出链接:

https://lhx.cool/

先说说博客平台开发的需求分析:

开发工具:

  • 首先需要一个IDEA开发工具,这是大家都公认且推荐最好的Java开发工具
  • 其次是JDK ,现在的JDK不像1.8之前版本的,是有两个包,目前版本JDK包含了JREJava Runtime Environment),即Java的运行环境,就是虚拟机环境,JDKJava Development Kit),Kit就是工具了,也就是一些api工具包,比如常用的java.utiljava.mathjava.io等等。

环境:

  • Java环境,也就是配置Java的环境变量,目的是能够使用到Javabin文件库,配置pathJDK_HOME_PATH目录路径
  • Tomcat环境,就是运行Java项目所需的容器,我们常开发的war包就可以在tomcat的webapp中启动,而jar包(springboot)就是内置了tomcat的压缩包,它会自动放到springboot内置的tomcat中去启动,原理一样。
  • Maven环境,就是项目会依赖很多jar包,我们需要一个软件方便去管理,当然你自己手动去管理也不是不行,使用maven便携的原因有两点:第一,一键引入依赖包,不需手动考虑下载,第二,便于管理多模块化和聚合项目。

tomcat容器启动关闭命令:

# linux 环境下
./bin/startup.sh # 启动
./bin/shutdown.sh # 关闭
# windows 环境下
.\bin\startup.bat # 启动
..\bin\shutdown.bat # 关闭

springboot启动关闭命令:

java -jar [后缀.jar的项目路径] # 前台模式启动 fg
nohup java -jar [后缀.har的项目路径] & # 后台模式启动 bg
# 进阶
# 熟练点 linux bash 脚本命令还可以运行脚本一键启动并输出日志文件到自定义路径
java -jar [后缀.har的项目路径] > /dev/null & # 这种日志文件是启动日志文件,如运行日志文件需要到配置文件中配置
# 如对项目有配置信息的修改,我们使用默认约束,即规定的方式去配置
# 在 jar 包当前目录创建 ./config文件夹/application.properties文件,注意命令启动要与jar包同目录
# 例如:java -jar ./test.jar # 那么在./ 目录下就会去读取 ./config/application.properties
# 又比如当前在 /home/ 下
# 使用命令 [root@localhost home]java -jar /home/fyupeng/test.jar 读取的配置文件是在/home下的
# 所以有必要先 cd到当前目录下
# 或者指定外部命令指定配置文件位置,--spring.config.location=[路径]
# 这种方式我在springboot1.5 版本成功尝试过,在 2.0 以上就出问题了,使用默认约束就完事
# 注意:项目 jar 包 与 config/application.properties 放在一个文件夹中,启动的时候是去启动文件夹

提示:

[root@localhost jarList]# ls
test start.sh status.sh stop.sh
[root@localhost jarList]# ls ./test
[root@localhost jarList]# catalina.log  config  test.jar
[root@localhost jarList]# ls ./test/config
[root@localhost jarList]# application.properties
[root@localhost jarList]# ./start.sh test
# 下面给出完整代码:
  • start.sh 启动脚本:
#!/usr/bin/env bash
  
# 配置文件名称
# (该配置文件放置在jar包同级目录下并且必须存在已经配置文件名称具备统一性!!!请根据实际的配置文件名称进行修改)
CONFIG_FILE_NAME="application.properties"

# 启动一个目录下的所有jar包
function read_dir(){
for file in `ls $1`
do
  #如果当前文件是文件夹则递归处理
  if [ -d $1"/"$file ]
  then
    read_dir $1"/"$file
  else
    # 当前文件不是一个文件夹
    if [[ -f $1"/"$file ]]
    then
        # 如果当前文件是一个.jar结尾的文件则启动它
        if [[ ${file:0-4} == '.jar' ]];
        then
       echo $1/$file 开始启动...
                   cd ./$1
                   #nohup java -jar $1"/"$file --spring.config.location=$1"/"$CONFIG_FILE_NAME > /dev/null &
                   nohup java -jar ./$file > ./"catalina.log" &
                   echo 启动完成!
        fi
    fi
  fi
done
}
#读取第一个参数
read_dir $1
  • status.sh 状态脚本:
#!/usr/bin/env bash
# 查看某个目录下所有jar程序的状态
function read_dir(){
for file in `ls $1`
do
  #如果当前文件是文件夹则递归处理
  if [ -d $1"/"$file ]
  then
    read_dir $1"/"$file
  else
    # 当前文件不是一个文件夹
    if [[ -f $1"/"$file ]]
    then
        if [[ ${file:0-4} == '.jar' ]];
        then
            # 获取pid
                pid=`ps -ef | grep $file | grep -v grep | awk '{print $2}'`
            # -z 表示如果$pid为空时则输出提示
                if [ -z $pid ];then
                        echo ""
                echo "Service $file is not running!"
                        echo ""
                else
                        echo ""
                echo "Service $1"/"$file is running. It's pids=${pid}"
                        echo ""
                fi
        fi
    fi
  fi
done
}
#读取第一个参数
read_dir $1
  • stop.sh关闭脚本
#!/usr/bin/env bash
# 停止一个目录下的所有jar程序
function read_dir(){
for file in `ls $1`
do
  #如果当前文件是文件夹则递归处理
  if [ -d $1"/"$file ]
  then
    read_dir $1"/"$file
  else
    # 当前文件不是一个文件夹
    if [[ -f $1"/"$file ]]
    then
        if [[ ${file:0-4} == '.jar' ]];
        then
            # 获取pid
            # 模糊匹配 $file 进程| 过滤自身命令进程 | 输出进程表中的进程号
                pid=`ps -ef | grep $file | grep -v grep | awk '{print $2}'`
            # -z 表示如果$pid为空时则输出提示
                if [ -z $pid ]; then
                        echo ""
                echo "Service $file is not running! It's not necessary to stop it!"
                        echo ""
                else
                # 杀死进程
                        kill -9 $pid
                        echo ""
                        echo "Service stop successfully!pid:${pid} which has been killed forcibly!"
                        echo ""
                fi
        fi
    fi
  fi
done
}
#读取第一个参数
read_dir $1

maven项目命令:

# 清理项目 - 项目修改
mvn clean
# 安装到 仓库 - 运行项目用
mvn install
# 打包 - 部署项目用
mvn package

其他必要配置:

  • Tomcat 日志输出编码配置:

由于在大多数人在Win操作系统开发,默认系统编码为GBK,而tomcat日志输出默认为UTF-8,开发工具Tomcat也去配置输出console根据系统来,这样就可以做到cmd窗口和idea熊掌得兼的效果。

logging.properties

#java.util.logging.ConsoleHandler.encoding = UTF-8
java.util.logging.ConsoleHandler.encoding = GBK
  • Maven镜像加速:

settings.xml

<mirrors>
  <mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
  </mirror>
</mirrors>

JDK官网下载地址:Download the Latest Java LTS Free

tomcat官网下载地址:https://tomcat.apache.org/download-80.cgi

maven官网下载地址:Maven - Download Apache Maven

下载推荐:免安装绿色版(易配置易卸载),JDK1.8Tomcat8Maven3.6

虽然JDK1.8官网取消了免安装版的链接,没关系去OpenJdk官网下载:OpenJDK JDK 18.0.2 GA Release

推荐开发者搜索引擎,开发者搜索-Beta-让技术搜索更简单高效,可以避免搜索垃圾信息

推荐开源软件搜索:☞ OSCS | 开源软件供应链安全社区 | 让每一个开源项目变得更安全

更精彩的在第二天,嗝屁小孩纸正持续跟进中…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嗝屁小孩纸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值