java程序开发完毕后,需要打包然后进行部署,包的两种常见压缩格式为
1、jar包
| JAR包适用于多种Java应用,包括桌面、服务器或嵌入式系统。 |
| JAR文件可以在任何Java支持的平台上运行,包括桌面、服务器或嵌入式系统 |
2、war包
| WAR包专门用于Java Web应用程序,包括Servlet、JSP、HTML和JavaScript等 |
| WAR文件主要部署于Web服务器和应用服务器,如Tomcat、Jetty或WebLogic |
1、传统web项目部署,通常是导出java项目为war包,然后扔到tomcat中运行
可以用ide导出,也可以命令导出,后续我们会介绍。导出后放到tomcat的webapps目录下就行
2、由于springboot的start-web的jar包中集成了tomcat,所以springboot项目既可以采用jar包部署,也可以采用war包部署
对于jar包,直接启动:java -jar xxx.jar # 就可以拉起服务,监听http协议,因为内置了tomcat
示例项目文档:https://doc.ruoyi.vip/ruoyi/document/hjbs.html
| JDK >= 1.8 (推荐1.8版本) |
| Mysql >= 5.7.0 (推荐5.7版本) |
| Maven >= 3.0 |
安装jdk1.8 安装jdk
| |
| yum -y install java-1.8.0-openjdk* |
| |
| |
| [root@web02 conf] |
| openjdk version "1.8.0_402" |
| OpenJDK Runtime Environment (build 1.8.0_402-b06) |
| OpenJDK 64-Bit Server VM (build 25.402-b06, mixed mode) |
配置环境变量
| find /usr/lib/jvm -name 'java-1.8.0-openjdk-1.8.0*'#输出/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64 |
| |
| |
| vim /etc/profile # 添加 |
| |
| JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64 |
| PATH=$PATH:$JAVA_HOME/bin |
| CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar |
| export JAVA_HOME CLASSPATH PATH |
安装mvn
| |
| wget https://dlcdn.apache.org/maven/maven-3/3.9.7/binaries/apache-maven-3.9.7-bin.tar.gz --no-check-certificate |
| |
| tar xf apache-maven-3.9.7-bin.tar.gz -C /test/ |
| |
| vim /etc/profile # 添加环境变量 |
| PATH=/test/apache-maven-3.9.7/bin:$PATH |
| export PATH |
| |
| source /etc/profile |
安装mysql
参考部署文档:https://doc.ruoyi.vip/ruoyi/document/hjbs.html
1、把项目下载到本地
| yum install git -y |
| mkdir /my_soft |
| cd /my_soft |
| git clone https://gitee.com/y_project/RuoYi.git |
2、进入项目目录内,修改数据库配置、及服务本身监听的端口
| [root@web03 /my_soft/RuoYi] |
| [root@web03 /my_soft/RuoYi] |
| ./ruoyi-admin/src/main/resources/application-druid.yml |
| |
| [root@web03 /my_soft/RuoYi] |
| |
| spring: |
| datasource: |
| type: com.alibaba.druid.pool.DruidDataSource |
| driverClassName: com.mysql.cj.jdbc.Driver |
| druid: |
| |
| master: |
| |
| url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| username: root |
| password: 'egon@123Abc' |
| |
| |
| [root@web03 /my_soft/RuoYi] |
| ./ruoyi-admin/src/main/resources/application.yml |
| [root@web03 /my_soft/RuoYi] |
| |
| server: |
| |
| port: 8686 |
| servlet: |
| |
| context-path: / |
3、不用做特殊的修改,默认导出的包格式就jar
| |
| cd /my_soft/RuoYi |
| mvn clean package -Dmaven.test.skip=true |
4、成功后查看
| [root@web03 /my_soft/RuoYi]# find . -name *.jar |
| ./ruoyi-admin/target/ruoyi-admin.jar # 我们要启动的就是这个jar,其他的都是被调用者 |
| ./ruoyi-common/target/ruoyi-common-4.7.8.jar |
| ./ruoyi-framework/target/ruoyi-framework-4.7.8.jar |
| ./ruoyi-generator/target/ruoyi-generator-4.7.8.jar |
| ./ruoyi-quartz/target/ruoyi-quartz-4.7.8.jar |
| ./ruoyi-system/target/ruoyi-system-4.7.8.jar |
5、初始化数据库
| |
| |
| create database ry; |
| |
| create user 'root'@'localhost'; |
| ALTER USER 'root'@'localhost' IDENTIFIED BY 'egon@123Abc'; |
| grant all on *.* to 'root'@'localhost'; |
| flush privileges; |
| |
| |
| mysql -uroot -p'egon@123Abc' -B ry < /my_soft/RuoYi/sql/quartz.sql |
| mysql -uroot -p'egon@123Abc' -B ry < /my_soft/RuoYi/sql/ry_20240529.sql |
6、启动
| |
| |
| |
| java -jar /my_soft/RuoYi/ruoyi-admin/target/ruoyi-admin.jar |
7、启动成功显示如下
8、访问测试
在2.1小节的基础上做就行了,拉代码、该配置、初始化mysql都一样,无非是导出一个新的war包来部署,如下
war部署方式
/my_soft/RuoYi/ruoyi-admin/pom.xml
中的packaging原值为jar
修改为war
,放入tomcat
服务器webapps
| <packaging>war</packaging> |
SpringBoot去除内嵌Tomcat
<dependencies>
.........在这里面增加如下两段
</dependencies>
| |
| <dependency> |
| <groupId>org.springframework.boot</groupId> |
| <artifactId>spring-boot-starter-web</artifactId> |
| <exclusions> |
| <exclusion> |
| <groupId>org.springframework.boot</groupId> |
| <artifactId>spring-boot-starter-tomcat</artifactId> |
| </exclusion> |
| </exclusions> |
| </dependency> |
导出war包
| cd /my_soft/RuoYi |
| mvn clean package -Dmaven.test.skip=true |
查看war包
| [root@web03 /my_soft/RuoYi]# find . -name *.war |
| ./ruoyi-admin/target/ruoyi-admin.war |
拿着这个war包,我们来用tomcat部署
nginx+tomcat+java环境
1、tomcat本身就能对外提供http协议请求
2、但还是建议前面挡一个nginx
之前已经安装过了(详见2.1小节),所以本步略
注意:Tomcat 10 + jdk 1.8启动会报错,换成Tomcat 9就可以了
Tomcat下载地址官网会持续更新。如果上述下载地址失效,请您直接访问Tomcat官网获取:https://tomcat.apache.org/
找到core处下载
| |
| wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.87/bin/apache-tomcat-9.0.87.tar.gz --no-check-certificate |
| tar -zxvf apache-tomcat-9.0.87.tar.gz |
| |
| mv apache-tomcat-9.0.87 /usr/local/tomcat/ |
| useradd www |
| |
| chown -R www.www /usr/local/tomcat/ |
| /usr/local/tomcat/bin/catalina.sh start |
tomcat的默认应用根目录在:”tomcat的安装目录/webapps/” 下,我们的是/usr/local/tomcat/webapps/
把war包扔到该目录里,会自动解压,扔进去就可以访问
| [root@web03 /my_soft/RuoYi]# find . -name *.war |
| ./ruoyi-admin/target/ruoyi-admin.war |
| |
| cp /my_soft/RuoYi/ruoyi-admin/target/ruoyi-admin.war /usr/local/tomcat/webapps/ |
拷贝完后查看,发现确实是自动解压了
| [root@web03 /usr/local/tomcat]# cd /usr/local/tomcat/webapps/ |
| [root@web03 /usr/local/tomcat/webapps]# ll |
| 总用量 72012 |
| drwxr-x |
| drwxr-x |
| drwxr-x |
| drwxr-x |
| drwxr-x |
| drwxr-x |
| -rw-r |
浏览器访问:http://192.168.71.114:8080/ruoyi-admin
如果我不想带着一个后缀:http://192.168.71.114:8080/ruoyi-admin访问,我想直接访问http://192.168.71.114:8080/
| [root@web03 /usr/local/tomcat/webapps] |
| 总用量 72012 |
| drwxr-x--- 16 root root 4096 5月 29 22:23 docs |
| drwxr-x--- 7 root root 99 5月 29 22:23 examples |
| drwxr-x--- 6 root root 79 5月 29 22:23 host-manager |
| drwxr-x--- 6 root root 114 5月 29 22:23 manager |
| drwxr-x--- 3 root root 223 5月 29 22:23 ROOT |
| drwxr-x--- 5 root root 48 5月 30 01:29 ruoyi-admin |
| -rw-r--r-- 1 root root 73733259 5月 30 01:29 ruoyi-admin.war |
| [root@web03 /usr/local/tomcat/webapps] |
| [root@web03 /usr/local/tomcat/webapps] |
| [root@web03 /usr/local/tomcat/webapps] |
| [root@web03 /usr/local/tomcat/webapps] |
| [root@web03 /usr/local/tomcat/webapps] |
如果想修改tomcat的端口
| [root@web03 ~] |
| <Connector port="18080" protocol="HTTP/1.1" |
| |
| [root@web03 ~] |
| [root@web03 ~] |
| [root@web03 ~] |
| tcp6 0 0 :::18080 :::* LISTEN 51025/java |
我们之前为了能够不带后缀去访问,做了如下改动
[root@web03 /usr/local/tomcat/webapps]# mv ROOT ROOT_bak
[root@web03 /usr/local/tomcat/webapps]# mv ruoyi-admin ROOT
其实,如果你加一层nginx来代理的话,你不需要做上面的事情,nginx就能帮你达到目的
所以我们先来还原一下
| cd /usr/local/tomcat/webapps/ |
| |
| mv ROOT ruoyi-admin |
通过http协议转发
cat /etc/nginx/conf.d/default.conf
[root@web03 /usr/local/tomcat/webapps]# cat /etc/nginx/conf.d/www.conf
server {
listen 80;
server_name localhost;
location / {
rewrite ^(.*)$ /ruoyi-admin$1;
}
location /ruoyi-admin {
# 把请求转发到上面定义的Tomcat服务器
proxy_pass http://127.0.0.1:18080;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
proxy_pass http://127.0.0.1:18080; 后面不能跟uri路径
| <server> ---> 可以监听一个端口,从此端口上可以远程向该实例发送shutdown关闭命令。 |
| <service> ---> 是一个逻辑组件,用于绑定connector和container,有一个service就是一个服务 |
| <connector PORT /> --->相当于nginx中的listen, 此处监听的端口才是对外暴露服务的端口,connector称之为连接器,它监听到的请求会交给engine具体处理处理 |
| <engine>---> 接请求,按照分析的结果将相关参数传递给匹配出的虚拟主机 |
| <host name=www.a.com appBase=/www/a > ----> 相当于nginx中的server_name |
| <context path="" docBase=/www/a /> ---> 相当于nginx中的localtion |
| <context path="/xuexi" docBase=/www/a/xuexi /> |
| </host> |
| |
| <host> |
| <context /> |
| </host> |
| </engine> |
| </service> |
| </server> |
详解见:
https://egonlin.com/?p=9221