linux系统上部署springboot项目,可直接通过ip访问

1.修改打包方式为war

<packaging>war</packaging>

2.设置打包后的包名,添加springboot的maven插件

<build>
   <finalName>bhy702-website</finalName>
   <plugins>
       <plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
       </plugin>
   </plugins>
</build>

3.导入以下依赖,覆盖默认内嵌的Tomcat依赖,注意设置与部署环境相同的tomcat版本(巨坑)

<properties>
   <java.version>1.8</java.version>
   <tomcat.version>8.0.46</tomcat.version>
</properties>
		<!--Springboot集成的tomcat来提供api-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <version>${tomcat.version}</version>
            <scope>provided</scope>
        </dependency>

4.修改启动类,继承SpringBootServletInitializer 类,并重写configure方法

@SpringBootApplication
public class WebsiteApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(WebsiteApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(WebsiteApplication.class);
    }
}

5.配置application.properties文件

#端口号
server.port=8080

#1 应用的上下文路径,也可以称为项目路径,如果要自定义,注意要与war包的包名相同
#server.servlet.context-path=/projectName

#  推荐
#2 当与war包名不同时,不能通过 **ip:端口/项目名** 访问,如果将解压文件夹的子文件放入ROOT下就可以不带项目名访问
server.servlet.context-path=/

6.执行maven命令,clear与package(或install)打包项目

7.部署项目

将war包放入linux系统中tomcat的webapps目录下,访问如下

ip(域名):端口/项目名 (http://www.bhy702.com:8080/website)

将war包放入linux系统中tomcat的webapps目录下自动解包后将项目文件夹的子文件全部放入ROOT文件夹下,注意此时webapps下的原war包以及解压包需要删除,不然不加war包名(项目名)不能访问。

ip(域名):端口 (http://www.bhy702.com:8080/)

原因:
tomcat默认会优先在webapps目录下寻找项目文件,再去ROOT下寻找,如果webapps下已经存在项目,则不能通过 **ip(域名):端口访问,如:(http://www.bhy702.com:8080/),会提示404。需删除webapps下项目war包及项目文件。

8.设置tomcat的bin文件下server.xml文件,通过ip直接访问,重启tomcat

将8080改为80:将端口设为80以后,访问项目时,tomcat会自动舍去端口号
<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8"/>
【注意】:记得开启服务器的80端口号,重启防火墙。

欢迎访问本文的个人博客链接:https://br-bai.github.io/2019/01/17/Linux系统上部署SpringBoot项目,可直接通过ip访问/

### 部署Spring Boot项目Linux虚拟机的步骤 在Linux虚拟机上部署Spring Boot项目,通常需要完成以下几部分工作:系统环境准备、项目打包、文件传输以及服务启动。以下是详细的说明: #### 1. 系统环境准备 确保Linux虚拟机上安装了必要的软件和依赖: - **Java运行环境**:Spring Boot项目需要Java运行时环境(JRE)或开发工具包(JDK)。推荐使用OpenJDK版本,例如OpenJDK 17[^3]。 - **Nginx(可选)**:如果需要通过Nginx进行反向代理和负载均衡,可以安装Nginx[^1]。 - **MySQL或其他数据库(可选)**:根据项目需求,可以选择是否安装数据库服务。 在Linux中可以通过以下命令安装OpenJDK: ```bash sudo apt update sudo apt install openjdk-17-jdk ``` 验证Java安装是否成功: ```bash java -version ``` #### 2. 项目打包 Spring Boot项目支持多种打包方式,最常见的是将项目打包为一个可执行的JAR文件。这种方式无需额外配置Tomcat等应用服务器[^3]。 在本地Windows环境中,打开项目的`pom.xml`文件,并确保以下配置存在: ```xml <packaging>jar</packaging> ``` 然后使用Maven进行打包: ```bash mvn clean package ``` 打包完成后,会在`target`目录下生成一个JAR文件。 #### 3. 文件传输 将生成的JAR文件从本地传输到Linux虚拟机上。常用的文件传输工具有: - **SCP**:通过命令行传输文件。 - **SFTP**:通过图形化工具(如FileZilla)传输文件。 使用SCP传输文件的命令示例: ```bash scp /path/to/your-app.jar user@linux-ip:/home/user/ ``` #### 4. 启动Spring Boot服务 登录到Linux虚拟机后,进入存放JAR文件的目录并启动服务: ```bash java -jar your-app.jar ``` 为了实现后台运行,可以结合`nohup`命令: ```bash nohup java -jar your-app.jar > app.log 2>&1 & ``` #### 5. 使用Docker容器化(可选) 如果希望以容器化的方式部署Spring Boot项目,可以参考以下Dockerfile[^4]: ```dockerfile # 使用官方OpenJDK 17镜像作为基础镜像 FROM openjdk:17-jdk-slim # 维护者信息 LABEL maintainer="dunkeng" # 设置时区 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 将jar包复制到容器中 COPY your-app.jar /app.jar # 暴露端口 EXPOSE 8080 # 启动命令 ENTRYPOINT ["java","-jar","/app.jar"] ``` 构建Docker镜像并运行容器: ```bash docker build -t springboot-app . docker run -d --name=myapp -p 8080:8080 --restart=always springboot-app ``` #### 6. 配置Nginx(可选) 如果需要通过Nginx对外提供服务,可以在Nginx配置文件中添加反向代理规则: ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 保存配置后,重启Nginx服务: ```bash sudo systemctl restart nginx ``` --- ### 注意事项 - 如果项目需要连接外部数据库,请确保数据库服务已正确配置,并更新项目的`application.properties`或`application.yml`文件中的数据库连接信息[^1]。 - 在生产环境中,建议使用日志管理工具(如Logstash)来监控服务日志[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值