阿里云企业认证老号 阿里云国际站服务器Java部署详细指南
阿里云国际站服务器Java部署详细指南
别慌,这不是一篇让你边看边叹气的‘官方文档翻译版’。它更像一位刚熬完三夜帮你把项目跑起来的同事——语气有点损,但每一步都踩在你真正卡壳的地方。今天咱们不讲云原生、不聊K8s编排,就老老实实把一个Spring Boot(或传统WAR)应用,稳稳当当地塞进阿里云国际站(Alibaba Cloud International)的ECS里,让它能被全世界访问到。
第一步:买台“干净”的ECS,别选错区
国际站界面和国内站长得像表兄弟——相似但细节处处是坑。首先进控制台,选 Elastic Compute Service (ECS) → Create Instance。重点来了:
- Region(区域):别图便宜选‘印度孟买’,除非你用户真在那儿。推荐新加坡(ap-southeast-1)或东京(ap-northeast-1),延迟友好、IP质量稳、中文支持还行;
- Instance Type:新手闭眼选
t6或t7共享型(比如 t7.small),1核2G起步够跑个管理后台;别碰‘突发性能实例’,CPU一飙高就限频,你Java应用GC时它直接给你表演龟速; - OS Image:选 Ubuntu 22.04 LTS(不是24.04!新系统OpenJDK版本太新,某些老框架会翻白眼)或 CentOS Stream 9(注意:不是CentOS 7!那玩意儿官方早停更了);
- Key Pair:必须创建并下载私钥(
.pem文件),别勾‘Password Authentication’——密码登录?那是给黑客递梯子。
下单前再瞄一眼:公网IP要勾选‘Assign Public IPv4 Address’,不然你的服务器就是个局域网里的哑巴。
第二步:连上去,先别急着装JDK
用终端(Mac/Linux)或PuTTY(Windows)连:ssh -i "your-key.pem" [email protected](Ubuntu用户)或 ssh -i "your-key.pem" [email protected](CentOS用户)。
连上第一件事?不是装Java,而是 更新源+装基础工具:
# Ubuntu
sudo apt update && sudo apt install -y curl wget vim net-tools gnupg lsb-release
# CentOS Stream 9
sudo dnf update -y && sudo dnf install -y curl wget vim net-tools gnupg
为什么?因为后面装JDK、传文件、查端口全靠它们。别跳过——我见过三次因没装net-tools导致ifconfig报错,然后人就去搜‘Linux ifconfig command not found’,再点进知乎看了两小时哲学问答……
第三步:装JDK,别信‘sudo apt install default-jdk’
Ubuntu默认JDK可能是11或17,但你的Spring Boot 2.7要求JDK 11,而Spring Boot 3.x死磕JDK 17+。所以——手动装指定版本最稳。
以JDK 17为例(LTS长期支持版):
curl -O https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
sudo tar -xzf jdk-17_linux-x64_bin.tar.gz -C /opt/
sudo ln -sf /opt/jdk-17.0.1 /opt/java
然后写入环境变量:
echo 'export JAVA_HOME=/opt/java
export PATH=$JAVA_HOME/bin:$PATH' | sudo tee /etc/profile.d/java.sh
source /etc/profile.d/java.sh
验证:java -version 输出带17.0.1才算成功。如果还是旧版本?重启shell或重登SSH。
阿里云企业认证老号 第四步:部署方式二选一:Jar or WAR?
Scenario A:Spring Boot 打成 jar 包(推荐)
本地mvn clean package后,用scp上传:
scp -i "your-key.pem" target/myapp.jar [email protected]:/home/ubuntu/app/
建个守护脚本/home/ubuntu/app/start.sh:
#!/bin/bash
nohup java -Xms512m -Xmx1g -jar /home/ubuntu/app/myapp.jar --server.port=8080 > /home/ubuntu/app/app.log 2>&1 &
加执行权限:chmod +x start.sh,运行:./start.sh。再用tail -f app.log盯日志,看到Started Application in X.XXX seconds?恭喜,活了。
Scenario B:传统WAR丢Tomcat(怀旧党适用)
装Tomcat 10(注意:Servlet API 5.0,别下错成9):
curl -O https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.26/bin/apache-tomcat-10.1.26.tar.gz
sudo tar -xzf apache-tomcat-10.1.26.tar.gz -C /opt/
sudo ln -sf /opt/apache-tomcat-10.1.26 /opt/tomcat
改端口(避免冲突):sudo vim /opt/tomcat/conf/server.xml,把Connector port="8080"改成8081;
放WAR包:cp your-app.war /opt/tomcat/webapps/;
启动:sudo /opt/tomcat/bin/startup.sh;
查日志:tail -f /opt/tomcat/logs/catalina.out。
第五步:防火墙?安全组才是真·门神
ECS自带UFW(Ubuntu)或firewalld(CentOS),但阿里云国际站的流量第一道关卡是安全组!去ECS控制台 → 实例详情 → Security Groups → 编辑入方向规则:
- HTTP:端口 80,来源 0.0.0.0/0;
- HTTPS:端口 443,来源 0.0.0.0/0;
- 自定义TCP:端口 8080(或你用的端口),来源 0.0.0.0/0;
- 别开22端口给全世界——只留你办公室IP或公司出口IP。
改完等10秒,再浏览器敲http://你的公网IP:8080,看到熟悉的欢迎页?干杯!
第六步:域名+HTTPS,让老板觉得你很专业
买个域名(Namecheap、Google Domains都行),DNS解析A记录指向你的ECS公网IP。
HTTPS用 Let’s Encrypt + Certbot,一行命令搞定:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com
证书路径:/etc/letsencrypt/live/yourdomain.com/fullchain.pem 和 privkey.pem。
Spring Boot里加配置:
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=changeit
# (或直接用Nginx反向代理+SSL,更推荐)
或者,更优雅的方式:装Nginx做反代(轻量、稳定、还能加缓存):
sudo apt install nginx
sudo vim /etc/nginx/sites-available/myapp
内容:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
启用:sudo ln -sf /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/,sudo nginx -t && sudo systemctl reload nginx。
最后送你三条保命口诀
- 日志永远比报错快半拍:
journalctl -u tomcat -f、tail -f /var/log/nginx/error.log、journalctl -u nginx -f——这三个命令背熟,能省你六小时; - 端口占用?杀它全家:
sudo lsof -i :8080查PID,sudo kill -9 PID; - 重启不是万能解药,但不重启一定不行:改完Nginx、改完安全组、改完Java参数……统统要reload或restart,别信‘应该生效了’。
好了,现在你可以把链接发给产品、测试、甚至老板了。他问‘怎么部署的?’,你就微微一笑:“买了台云服务器,敲了几行命令,顺便给它配了个域名和绿锁。” —— 而你心里清楚:这背后是三个深夜、七次重装、和一次差点卸载IDEA的冲动。

