CentOS 目录结构
节选自 https://blog.csdn.net/qq_33858250/article/details/81839619

CentOS的目录大体上可分为四类:管理类、用户类、应用程序类、信息类文件目录。
管理类
- /boot
linux的内核及引导系统程序所需要的文件目录 - /bin
存放标准 linux 的工具 - /sbin
大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令 - /var
这个目录的内容是经常变动的,用来存储经常被修改的文件,如日志、数据文件、邮箱等 - /etc
主要存放系统配置方面的文件 - /dev
主要存放与设备有关的文件 - /mnt
这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。可以参看/etc/fstab的定义
用户类
- /root
系统管理员目录 - /home
主要存放个人数据
应用程序类
- /lib
该目录用来存放系统动态链接库,几乎所有的应用程序都会用到该目录下的共享库 - /tmp
临时目录,有些linux会定期清理 - /usr
存放一些不适合放在/bin 或 /etc 目录下的额外工具,如个人安装的程序或工具 - /usr/local
主要存放那些手动安装的软件, - /usr/bin
用于存放程序 - /usr/share
用于存放一些共享数据 - /usr/lib
存放一些不能直接运行,但却是许多程序运行所必需的一些函数库文件 - /opt
主要存放可选程序,直接删除程序不影响系统其设置。安装到/opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面
信息类
- /lost+found
在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。 - /proc
操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里
Java环境
安装JDK
官网 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
在官网下载需要的jdk版本


这样获取的下载地址有验证信息,才能够正确下载
cd /usr/local/
创建下载目录
mkdir download

开始下载
mv jdk-8u211-linux-x64.tar.gz\?AuthParam\=1560506772_1dbba8573bc6a8588bd51d95349718d4 jdk-8u211-linux-x64.tar.gz
重命名文件
tar -zxvf jdk-8u211-linux-x64.tar.gz -C /usr/local/
解压到

环境变量
vi /etc/profile
末尾添加
export JAVA_HOME=/usr/local/jdk1.8.0_211
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
保存退出
source /etc/profile
使生效

验证
发布
单模块打包
在项目目录下执行
mvn clean package -Dmaven.test.skip=true
-Dmaven.test.skip=true 跳过单元测试
打包成功后会在项目根路径下生成target目录,依据pom文件设置的项目名<finalName>sell</finalName>
生成jar包
服务器创建项目路径
mkdir /opt/javaapps/
将项目jar文件复制到服务器
scp sell.jar root@10.2.26.161:/opt/javaapps/
多模块打包
根项目下pom文件不要<build>标签
顶层模块pom文件配置
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**.*</include>
<include>**/*.*</include><!-- i18n能读取到 -->
<include>**/*/*.*</include>
</includes>
</resource>
</resources>
<!-- 为jar包取名 -->
<finalName>web</finalName>
<plugins>
<!-- 热布署 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--fork : 如果没有该项配置,这个devtools不会起作用,即应用不会restart -->
<fork>true</fork>
<mainClass>com.tianyi.ejiantong.EjiantongApplication</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
</goals>
<!--可以生成不含依赖包的不可执行Jar包-->
<!-- configuration>
<classifier>exec</classifier>
</configuration> -->
</execution>
</executions>
</plugin>
</plugins>
</build>
底层被依赖模块pom文件不要<build>标签

在根目录下先clean删除target目录,再package生成target
分析:打包时会根据依赖关系逐层查找,所以需要在顶层模块配置build。而根目录下只是声明,所以不配。
防火墙
firewall-cmd --zone=public --add-port=8080/tcp --permanent
--zone=public:表示作用域为公共的;
--add-port=8080/tcp:添加tcp协议的端口8080;
--permanent:永久生效,如果没有此参数,则只能维持当前服务生命周期内,重新启动后失效;
firewall-cmd --reload
重新加载配置
systemctl restart firewalld.service
重启防火墙
80端口默认未开放
启动项目
nohup java -jar -Dserver.port=80 -Dspring.profiles.active=prod sell.jar > /dev/null 2>&1 &
-Dserver.port=80 开启的端口
-Dspring.profiles.active=prod 启动所使用的配置
nohup XXX > /dev/null 2>&1 & 让进程在后台运行
网友评论