阿里云ECS服务器部署SpringBoot网站全流程指南:从环境配置到HTTPS加密
1. 项目概述从零到一在云端安家手里攥着一个刚开发完的SpringBoot项目或者任何你精心打磨的网站代码下一步最让人兴奋又有点忐忑的就是把它放到真正的服务器上让全世界都能访问。这个过程我们称之为“部署”。而阿里云作为国内最主流的云服务商之一无疑是很多个人开发者和中小团队的首选。它就像提供了一个功能齐全、按需租用的“数字地产”我们只需要把自己的“房子”网站搭建上去就行。今天要聊的就是如何一步步在阿里云服务器ECS上把一个网站从本地开发环境部署到公网可访问的线上环境。这不仅仅是点几个按钮背后涉及到服务器初始化、环境配置、安全加固、服务发布等一系列环环相扣的操作。无论你用的是SpringBoot、Vue、还是纯静态HTML核心的部署逻辑都是相通的。我会结合自己多次部署的经验用最直白的语言和详尽的图文带你走完这全程目标是让你看完就能自己动手成功上线你的第一个网站。2. 部署前的核心准备与规划在真正动手连接服务器之前充分的准备工作能避免后续80%的麻烦。部署网站不是简单的文件拷贝它更像一次精密的搬家你需要提前知道新家的地址、户型并准备好所有必需品。2.1 阿里云服务器选购与基础配置首先你得有一台阿里云ECS服务器。在阿里云官网选择“云服务器ECS”进行购买。对于新手或个人项目我强烈推荐选择“突发性能实例 t5”或“共享标准型 s6”它们性价比极高。地域选择离你的目标用户近的比如用户主要在华南就选“深圳”。镜像即操作系统是重点对于绝大多数JavaSpringBoot项目选择“Alibaba Cloud Linux 3”或“CentOS 7.9”如果你更熟悉Ubuntu也可以选“Ubuntu 22.04”。Alibaba Cloud Linux是阿里云基于CentOS的优化版本兼容性好且有一些额外优化我个人更常用。购买时系统会让你设置登录密码或密钥对。务必记住你设置的root密码或者妥善保管下载的.pem密钥文件这是你进入服务器的唯一钥匙。同时在“安全组”配置页面一定要提前放行必要端口。安全组相当于服务器的虚拟防火墙默认只开放了22端口SSH。你需要手动添加规则至少放行80端口HTTP协议用于网站普通访问。443端口HTTPS协议用于加密访问如果你后续配置SSL证书。你的应用端口例如SpringBoot默认的8080端口。添加规则时授权对象可以暂时设为0.0.0.0/0允许所有IP访问上线后可酌情收紧。2.2 本地开发环境与部署包整理在本地你需要将项目打包成可部署的形态。对于SpringBoot项目最常用的就是打成可执行的JAR包或WAR包。通过Maven或Gradle的打包命令如mvn clean package会在target目录下生成一个your-project-0.0.1-SNAPSHOT.jar文件。在打包前请务必检查application.properties或application.yml配置文件将数据库连接等配置从本地地址如localhost:3306改为线上服务器的地址或云数据库地址。另一个关键点是静态资源。如果你的项目是前后端分离的前端如Vue项目需要单独打包。执行npm run build后会生成一个dist目录里面的内容需要部署到Nginx等Web服务器下。请确保前端代码中请求的后端API地址已经修改为线上服务器的公网IP或域名而不是本地的localhost:8080。将所有需要上传到服务器的文件整理好通常包括应用JAR包、前端dist文件夹、可能的配置文件、启动脚本等。清晰的目录结构会让你在服务器上操作时更加从容。3. 服务器初始化与基础环境搭建拿到服务器公网IP后我们首先要登录并把它打造成一个适合运行应用的环境。这个过程就像毛坯房做基础装修。3.1 远程登录与系统更新我们使用SSH协议远程登录服务器。如果你在Windows上可以使用PuTTY或Windows Terminal在macOS或Linux上直接使用终端。使用密码登录的命令格式是ssh root你的服务器公网IP然后输入购买时设置的密码。如果使用密钥对命令类似ssh -i /路径/到/你的密钥.pem root你的服务器公网IP。登录成功后第一件事是更新系统软件包这能确保系统基础组件的安全性和稳定性。执行以下命令# 对于 CentOS/Alibaba Cloud Linux yum update -y # 对于 Ubuntu apt update apt upgrade -y3.2 安装必备运行环境根据你的项目类型安装对应的运行时。对于SpringBoot项目Java环境是必须的。安装JDK推荐安装OpenJDK 8或11这是长期支持版本兼容性最好。# CentOS/Alibaba Cloud Linux yum install -y java-1.8.0-openjdk-devel # Ubuntu apt install -y openjdk-11-jdk安装后通过java -version验证是否成功。安装Web服务器NginxNginx的作用非常重要1. 作为反向代理将用户对80/443端口的访问转发到你SpringBoot应用的8080端口2. 托管前端静态文件3. 配置SSL实现HTTPS。# CentOS/Alibaba Cloud Linux (需先安装EPEL仓库) yum install -y epel-release yum install -y nginx # Ubuntu apt install -y nginx安装后启动Nginx并设置开机自启systemctl start nginx和systemctl enable nginx。此时在浏览器输入你的服务器公网IP应该能看到Nginx的欢迎页面这证明80端口通了。安装其他可能需要的服务比如MySQL、Redis等。如果使用阿里云RDS云数据库则无需在ECS上安装直接通过内网地址连接更安全、性能更好。若需自行安装以MySQL为例# CentOS 7 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm rpm -ivh mysql80-community-release-el7-3.noarch.rpm yum install -y mysql-community-server # 启动并设置开机自启 systemctl start mysqld systemctl enable mysqld # 获取初始密码 grep temporary password /var/log/mysqld.log # 运行安全配置向导 mysql_secure_installation4. 应用部署与服务的核心配置基础环境就绪后就到了最关键的环节把你的应用跑起来并配置好访问入口。4.1 文件上传与项目部署将本地打包好的文件上传到服务器。推荐使用scp命令或图形化工具如FileZilla。使用scp上传JAR包示例# 从本地上传到服务器 scp /本地路径/your-project.jar root你的服务器公网IP:/root/上传后在服务器上创建一个专门的目录来管理应用例如/app/your-project并将JAR包移入。这样便于管理日志和后续更新。启动SpringBoot应用不建议直接用java -jar命令在前台启动因为一旦断开SSH连接进程就终止了。我们应该使用后台运行或系统服务来管理。简单后台运行nohup java -jar your-project.jar --server.port8080 app.log 21 。这会将应用日志输出到app.log文件。推荐配置为Systemd服务以CentOS为例这是更专业的管理方式。创建服务文件vim /etc/systemd/system/your-app.service写入以下内容[Unit] DescriptionYour SpringBoot Application Afternetwork.target [Service] Typesimple Userroot WorkingDirectory/app/your-project ExecStart/usr/bin/java -jar /app/your-project/your-project.jar Restarton-failure RestartSec10 [Install] WantedBymulti-user.target保存后执行systemctl daemon-reloadsystemctl start your-appsystemctl enable your-app。使用systemctl status your-app查看运行状态。这种方式可以实现应用崩溃后自动重启非常可靠。4.2 Nginx反向代理与域名解析现在你的应用在8080端口跑起来了但用户无法通过80端口直接访问。这就需要配置Nginx反向代理。编辑Nginx配置文件vim /etc/nginx/nginx.conf或在/etc/nginx/conf.d/目录下新建一个.conf文件如your-domain.conf。一个典型的反向代理配置如下server { listen 80; server_name your-domain.com www.your-domain.com; # 你的域名如果没有可以先填服务器IP location / { # 反向代理到SpringBoot应用 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; proxy_set_header X-Forwarded-Proto $scheme; } # 如果你的项目是前后端分离前端静态文件可以这样配置 # location / { # root /app/frontend/dist; # index index.html; # try_files $uri $uri/ /index.html; # } # location /api { # proxy_pass http://127.0.0.1:8080/api; # # ... 其他proxy_set_header配置同上 # } }配置完成后执行nginx -t测试配置语法是否正确然后systemctl reload nginx重新加载配置。绑定域名如果你有域名可以在阿里云万网购买需要添加一条A记录解析将域名指向你的服务器公网IP。解析生效后通常几分钟到几小时用户就可以通过域名访问你的网站了。5. 安全加固与HTTPS加密访问将网站暴露在公网安全是头等大事。仅开放必要端口、配置防火墙是基础为网站启用HTTPS加密则是现代网站的标配。5.1 服务器基础安全设置修改SSH默认端口编辑/etc/ssh/sshd_config文件找到#Port 22取消注释并改为一个其他端口如Port 23456。然后重启SSH服务systemctl restart sshd。注意修改前务必确保新端口已在阿里云安全组中放行并且用新端口测试能登录成功再关闭原22端口否则可能导致无法登录禁用root密码登录使用密钥对这是更安全的方式。在sshd_config中设置PasswordAuthentication no和PubkeyAuthentication yes。配置防火墙Firewalld或iptablesCentOS 7默认使用firewalld。只开放必要的端口firewall-cmd --permanent --add-port80/tcp firewall-cmd --permanent --add-port443/tcp firewall-cmd --permanent --add-port你的SSH新端口/tcp firewall-cmd --permanent --add-port你的应用端口/tcp # 如果Nginx不代理直接访问则需要 firewall-cmd --reload5.2 申请与配置SSL证书实现HTTPSHTTP是明文传输HTTPS则通过SSL/TLS加密。阿里云提供免费的SSL证书单域名有效期1年可续期。申请证书在阿里云控制台搜索“SSL证书”进入“免费证书”页面点击“创建证书”然后“证书申请”。填写你的域名信息选择“文件验证”方式最简单。域名验证按照提示下载验证文件将其上传到你的服务器Nginx根目录下的指定路径例如/.well-known/pki-validation/确保能通过http://你的域名/.well-known/pki-validation/文件.txt访问到内容。验证通过后证书状态会变为“已签发”。下载并部署证书下载证书文件通常包含.pem证书文件和.key私钥文件。在服务器上创建一个目录存放如/etc/nginx/ssl/。配置Nginx支持HTTPS修改之前的Nginx配置文件将80端口的server块重定向到443并新增443端口的server块。server { listen 80; server_name your-domain.com www.your-domain.com; # 强制将所有HTTP请求重定向到HTTPS return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name your-domain.com www.your-domain.com; ssl_certificate /etc/nginx/ssl/your-domain.pem; ssl_certificate_key /etc/nginx/ssl/your-domain.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers EECDHCHACHA20:EECDHAESGCM:EDHAESGCM; ssl_prefer_server_ciphers on; # 反向代理配置同之前80端口内的location配置 location / { proxy_pass http://127.0.0.1:8080; # ... proxy_set_header 配置保持不变 } }再次执行nginx -t和systemctl reload nginx。现在访问你的域名浏览器地址栏应该会出现一把安全锁表示HTTPS配置成功。注意免费证书有效期为1年记得在到期前续期。阿里云控制台通常会有续期提醒续期流程与申请类似重新验证域名并下载新证书替换即可。6. 部署后的维护、监控与问题排查网站上线并非终点而是运维的起点。保持网站稳定运行需要一些日常的关注和简单的工具。6.1 基础监控与日志查看进程监控使用systemctl status your-app和systemctl status nginx可以快速查看核心服务的运行状态。资源监控使用top或htop命令查看CPU、内存实时使用情况。使用df -h查看磁盘空间。阿里云控制台也提供了丰富的服务器监控图表可以关注CPU使用率、网络流入流出带宽、磁盘IO等关键指标。日志分析这是排查问题的金钥匙。应用日志SpringBoot应用的日志路径取决于你的配置如果使用上面的nohup方式日志在app.log如果使用Systemd服务日志可以通过journalctl -u your-app.service -f实时查看。Nginx访问日志与错误日志通常在/var/log/nginx/access.log和/var/log/nginx/error.log。使用tail -f命令可以实时跟踪日志输出对于分析用户访问情况和错误非常有用。6.2 常见问题与快速排查指南即使步骤再详细第一次部署也难免遇到问题。这里整理了几个最常见的问题和排查思路问题现象可能原因排查步骤浏览器无法访问服务器IP1. 安全组未放行80/443端口2. 服务器防火墙未放行端口3. Nginx服务未启动1. 检查阿里云控制台安全组规则。2. 执行firewall-cmd --list-ports查看。3. 执行systemctl status nginx查看状态。访问IP显示Nginx欢迎页但访问域名或代理的应用报错1. Nginx配置错误2. 域名解析未生效3. 后端应用未启动或端口不对1.nginx -t测试配置。2. 本地ping 你的域名看IP是否正确。3.netstat -tlnp | grep :8080检查应用端口监听。应用启动失败Java项目1. 端口被占用2. 数据库连接失败3. JAR包损坏或依赖缺失1. 检查端口冲突netstat -tlnp | grep :端口。2. 检查应用日志中的数据库连接错误。3. 尝试本地重新打包并上传。HTTPS访问提示不安全1. SSL证书配置错误或路径不对2. 证书链不完整3. 混合HTTP内容1. 检查Nginx配置中证书和私钥文件路径、权限。2. 使用在线SSL检测工具如SSL Labs诊断。3. 确保网页内所有资源如图片、JS都使用HTTPS链接。网站访问速度慢1. 服务器带宽跑满2. 数据库查询慢3. 应用性能瓶颈1. 通过阿里云监控查看带宽使用情况。2. 检查数据库慢查询日志优化索引。3. 使用top命令查看应用进程CPU/内存占用。一个关键的实操心得遇到问题一定要养成从外到内、从底层到上层的排查习惯。先确认网络通不通ping再确认端口开没开telnet或curl接着看服务在不在运行systemctl status最后查日志journalctl或日志文件。绝大多数部署问题都能通过这个方法定位。7. 进阶优化与自动化部署思路当网站稳定运行后可以考虑一些优化和自动化措施来提升效率和可靠性。7.1 使用对象存储OSS托管静态资源如果你的网站有大量图片、视频、用户上传的文件强烈建议使用阿里云对象存储OSS。将这些静态资源与你的应用服务器分离有三大好处1.大幅降低服务器带宽压力和负载2.利用OSS的CDN加速用户访问速度更快3.存储成本更低且具备高可靠性。使用方式很简单在OSS控制台创建Bucket设置好权限通常设为公共读然后将静态文件上传至OSS。最后将网站中引用这些资源的链接从原来的服务器路径改为OSS提供的公网访问地址即可。7.2 编写自动化部署脚本每次更新代码都手动打包、上传、重启服务效率太低且容易出错。可以编写一个简单的Shell脚本实现半自动化部署。一个极简的部署脚本deploy.sh示例#!/bin/bash APP_NAMEyour-project REMOTE_USERroot REMOTE_HOST你的服务器IP REMOTE_APP_DIR/app/your-project LOCAL_JAR_PATH./target/$APP_NAME.jar echo “开始构建项目...” mvn clean package -DskipTests if [ $? -ne 0 ]; then echo “项目构建失败” exit 1 fi echo “上传JAR包到服务器...” scp $LOCAL_JAR_PATH $REMOTE_USER$REMOTE_HOST:$REMOTE_APP_DIR/ echo “重启远程应用服务...” ssh $REMOTE_USER$REMOTE_HOST “cd $REMOTE_APP_DIR systemctl restart $APP_NAME” echo “部署完成”只需要在本地项目根目录执行bash deploy.sh脚本就会自动完成构建、上传和重启。你可以根据自己的流程在这个基础上增加备份旧版本、查看日志等更多功能。7.3 容器化部署的考量对于更复杂的项目或追求环境一致性的团队可以考虑使用Docker容器化部署。将你的SpringBoot应用和其依赖的环境打包成一个Docker镜像无论在开发、测试还是生产环境都能以完全相同的方式运行。基本步骤是1. 在项目根目录编写Dockerfile2. 使用docker build构建镜像3. 将镜像推送到阿里云容器镜像服务4. 在服务器上使用docker run运行容器。结合Docker Compose可以更方便地管理多容器应用如应用数据库Redis。容器化是云原生部署的大趋势虽然初期学习有成本但能极大简化后续的运维和伸缩。部署网站是一个系统工程从服务器选型、环境配置、服务部署到安全加固每一步都关乎线上服务的稳定与安全。我的经验是第一次部署可以慢一点把每个步骤的原理和命令都理解清楚记录下自己的操作和遇到的坑。这样第二次、第三次就会越来越熟练。当你在浏览器输入自己的域名看到精心开发的应用完美呈现时那种成就感就是对我们这些构建者最好的回报。

相关新闻

生产车间智能升级背后,数字孪生发挥了什么作用

生产车间智能升级背后,数字孪生发挥了什么作用

概述随着制造业数字化转型不断深入,生产车间正从传统的经验管理走向数据驱动和智能协同。作为企业生产活动最核心的场景,车间的运行效率、设备状态、工艺稳定性和资源配置能力,直接影响产品质量、交付周期和经营成本。传统车间管理往往存在信…

2026/7/30 7:18:06 阅读更多 →
STM32定时器PWM生成:计数器与对齐模式核心原理与应用

STM32定时器PWM生成:计数器与对齐模式核心原理与应用

1. 从“定时器”到“PWM发生器”:一个核心视角的转变很多刚开始接触STM32的朋友,一看到定时器(TIM)模块,第一反应就是“计时”或者“产生中断”。这没错,定时器的老本行确实是这个。但当你需要驱动一个舵机…

2026/7/30 7:17:06 阅读更多 →
数据清洗中3倍标准差异常值剔除方法与实践

数据清洗中3倍标准差异常值剔除方法与实践

1. 数据清洗中的异常值剔除方法解析在数据分析的实际工作中,我们经常会遇到这样的场景:一组看似正常的数据中混杂着少量明显偏离主体的异常值。这些"离群点"可能源于测量误差、录入错误或真实的极端情况,但无论成因如何&#xff0c…

2026/7/30 7:17:06 阅读更多 →

最新新闻

专业级Windows屏幕标注工具:ppInk的架构设计与高效应用实践

专业级Windows屏幕标注工具:ppInk的架构设计与高效应用实践

专业级Windows屏幕标注工具:ppInk的架构设计与高效应用实践 【免费下载链接】ppInk Fork from Gink 项目地址: https://gitcode.com/gh_mirrors/pp/ppInk 在数字教学、远程协作和在线演示日益普及的今天,如何在Windows平台上实现流畅、专业的屏幕…

2026/7/30 7:27:10 阅读更多 →
数字后端设计中的布图规划:从核心原理到工程实践

数字后端设计中的布图规划:从核心原理到工程实践

1. 项目概述:从“毛坯房”到“精装蓝图”的起点 如果你把一颗芯片的设计过程想象成建造一栋摩天大楼,那么“布图规划”就是在大楼地基打好之后,第一张决定性的“室内布局规划图”。它决定了CPU核、GPU核、内存控制器、各种接口模块这些“功能…

2026/7/30 7:27:10 阅读更多 →
中国漫剧出海,到底是真机会还是伪命题?从生产到分发,我踩过的坑和找到的解法

中国漫剧出海,到底是真机会还是伪命题?从生产到分发,我踩过的坑和找到的解法

先说结论:漫剧出海不是伪命题,但用传统影视外包的方式来做,成本和风险都很难控。我们团队从去年开始尝试将中文漫剧推向东南亚和欧美市场,踩了无数坑之后,才摸索出一套相对跑得通的流程。我和映悦AI没有利益关系&#…

2026/7/30 7:27:09 阅读更多 →
Qt应用动态语言切换:实现不重启实时更新界面文本

Qt应用动态语言切换:实现不重启实时更新界面文本

1. 项目概述:动态语言切换的核心价值 在开发面向全球用户的桌面或嵌入式应用时,多语言支持(i18n)是绕不开的一环。传统的Qt多语言实现,通常依赖于 QTranslator 加载 .qm 翻译文件,但一个让人头疼的问题…

2026/7/30 7:27:09 阅读更多 →
距2026世界机器人大会开幕仅26天,主论坛聚焦四大方向,共探行业未来!

距2026世界机器人大会开幕仅26天,主论坛聚焦四大方向,共探行业未来!

2026世界机器人大会主论坛:四天聚焦四大核心方向距离2026世界机器人大会开幕仅26天,其最具影响力的核心板块之一——主论坛备受瞩目。主论坛从8月19日下午至22日,为期三天半,紧扣前沿领航、应用牵引、生态建设和民生普惠四大方向&…

2026/7/30 7:27:09 阅读更多 →
Python CSV文件生成全攻略:从基础写入到实战避坑

Python CSV文件生成全攻略:从基础写入到实战避坑

1. 项目缘起:为什么我们总在和CSV文件打交道? 如果你用Python处理过数据,无论是从网页上抓取信息,还是分析本地日志,最终大概率都会遇到一个场景:把处理好的数据存下来,或者交给别人。这时候&am…

2026/7/30 7:26:09 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻