坑:阿里云服务器 SpringBoot项目启动后,无法通过IP地址访问

如图:
在这里插入图片描述
服务器内网能访问了。通过ip访问不了。
看了网上一堆:

  • 防火墙端口开启对应端口
  • 服务器放行端口
  • 修改配置文件application.properties中 server.address = 0.0.0.0
  • 服务器httpd服务异常
1、查看httpd服务
	chkconfig --list httpd
提示服务不存在
2、安装httpd 服务
	yum --disableexcludes=all install -y httpd
3、启动httpd服务
	service httpd start

大多数情况下都是服务器没有放行端口,很显然我也是。我一开始先在宝塔面板放行了端口,没有什么用。到阿里云里面放行(又放错了安全组…),白搞一晚上,记录下愚蠢!!!

### 如何在阿里云服务器部署 Spring Boot 项目 #### 准备工作 为了成功完成 Spring Boot 项目部署,需要先确认以下几个前提条件: - 已经购买并初始化了一台阿里云服务器。 - 能够通过 SSH 登录到服务器。 - 拥有一个已经打包好的 Spring Boot 可执行 JAR 文件。 --- #### 方法一:传统方式部署(无容器化) 此方法适用于不需要使用 Docker 的场景: 1. **安装 Java 环境** - 使用命令 `sudo apt update` 更新包管理器缓存[^1]。 - 执行 `sudo apt install default-jdk` 来安装默认版本的 JDK。 2. **上传 Spring Boot 项目文件** - 将本地构建好的 Spring Boot JAR 文件上传至服务器。可以借助工具如 FileZilla 或者 SCP 命令来传输文件。 ```bash scp /path/to/your-spring-boot-app.jar root@<server-ip>:/home/ ``` 3. **运行 Spring Boot 应用程序** - 进入目标目录并通过以下命令启动应用: ```bash nohup java -jar your-spring-boot-app.jar & ``` - 此处 `-jar` 参数指定要运行的应用程序,而 `nohup` 则确保即使关闭终端也能保持进程运行[^1]。 4. **设置开机自启脚本** - 创建一个 Systemd 服务文件 `/etc/systemd/system/springboot.service` 并写入相关内容以实现自动重启功能[^1]: ```ini [Unit] Description=Spring Boot Application Service [Service] ExecStart=/usr/bin/java -jar /home/your-spring-boot-app.jar Restart=always [Install] WantedBy=multi-user.target ``` - 启动服务并启用开机自启: ```bash sudo systemctl start springboot sudo systemctl enable springboot ``` --- #### 方法二:基于 Docker 的现代化部署方案 如果希望利用容器技术简化依赖管理和提高可移植性,则推荐采用 Docker 方式: 1. **Docker 安装与配置** - 在阿里云轻量级服务器上按照官方文档安装最新版 Docker 引擎[^2]。 ```bash curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER newgrp docker ``` 2. **创建 Dockerfile 构建镜像** - 编辑名为 `Dockerfile` 的文本文件定义所需环境以及如何加载应用程序代码[^2]: ```dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` - 构建镜像并将它推送到远程仓库或者直接拉取已有的公共镜像: ```bash docker build -t my-springboot-app . docker run -p 8080:8080 --name springboot-container my-springboot-app ``` 3. **集成数据库和其他中间件支持** - 如果项目涉及 MySQL 和 Redis 数据库连接,则需额外准备其对应的服务实例。可以通过 Compose 文件统一描述多个关联组件之间的关系: ```yaml version: '3' services: db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: examplepassword redis: image: redis:alpine web: build: ./my-springboot-project ports: - "8080:8080" depends_on: - db - redis ``` --- #### 方法三:结合 Nginx 实现 HTTPS 请求转发 对于生产环境中通常还需要考虑安全性和性能优化方面的要求,因此引入 Web Server 层面做负载均衡和 SSL 加密处理显得尤为重要[^3]: 1. **安装 Nginx** - 使用标准软件源获取稳定发行版: ```bash sudo apt-get install nginx ``` 2. **配置反向代理规则** - 修改站点可用配置模板位于路径 `/etc/nginx/sites-available/default` 中加入如下片段[^3]: ```nginx server { listen 80; location / { proxy_pass http://localhost:8080; # 替换为实际后端地址 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` 3. **申请免费 Let's Encrypt TLS 认证书** - 下载 Certbot 自动化工具生成可信证书链: ```bash sudo add-apt-repository ppa:certbot/certbot && sudo apt-get update sudo certbot --nginx -d yourdomain.com ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值