在 Alibaba Cloud Linux 3.2104 LTS(基于 CentOS/RHEL 8 内核优化)上部署项目,通常涉及以下几个核心步骤。由于该操作系统兼容 RHEL/CentOS生态,你可以使用标准的 Linux 运维流程,但建议优先使用其自带的优化工具和包管理器 dnf。
以下是通用且推荐的部署流程,适用于大多数 Web 应用、Java 应用、Python 应用等:
✅ 一、基础环境准备
1. 登录服务器
ssh root@<your-server-ip>
2. 更新系统软件包
sudo dnf update -y
sudo dnf install -y epel-release
sudo dnf install -y vim wget curl git net-tools telnet
3. 配置防火墙(如需开放端口)
Alibaba Cloud Linux 默认使用 firewalld:
sudo systemctl enable firewalld
sudo systemctl start firewalld
# 开放常用端口(如 80, 443, 8080)
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
⚠️ 注意:阿里云 ECS 实例还需在 安全组 中放行对应端口。
✅ 二、根据项目类型选择部署方案
🟦 场景1:部署 Java 应用(Spring Boot / Tomcat)
方法 A:直接运行 JAR 包
# 上传 jar 包到服务器,例如 /opt/myapp/
cd /opt/myapp
nohup java -jar myapp.jar > app.log 2>&1 &
方法 B:使用 Systemd 管理进程(推荐)
创建服务文件 /etc/systemd/system/myapp.service:
[Unit]
Description=My Spring Boot App
After=network.target
[Service]
User=root
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -jar /opt/myapp/myapp.jar
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo systemctl status myapp
🟩 场景2:部署 Node.js / Nginx + PM2
安装 Node.js 和 npm
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo dnf install -y nodejs
安装 PM2(进程管理器)
sudo npm install -g pm2
部署项目
cd /opt/myapp
pm2 start app.js --name "myapp"
pm2 save
pm2 startup systemd
安装 Nginx 作为反向X_X
sudo dnf install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
编辑 /etc/nginx/conf.d/myapp.conf:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
重启 Nginx:
sudo nginx -t && sudo systemctl reload nginx
🟨 场景3:部署 Python 应用(Flask / Django)
安装 Python 3.9+(Alibaba Cloud Linux 3 自带较新 Python)
python3 --version
使用虚拟环境
cd /opt/myapp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
使用 Gunicorn + Systemd 部署
安装 Gunicorn:
pip install gunicorn
创建 /etc/systemd/system/myapp.service:
[Unit]
Description=Gunicorn instance to serve myapp
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/opt/myapp
Environment="PATH=/opt/myapp/venv/bin"
ExecStart=/opt/myapp/venv/bin/gunicorn --workers 3 --bind unix:myapp.sock -m 007 wsgi:app
[Install]
WantedBy=multi-user.target
启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
配合 Nginx 反向X_X(类似 Node.js 示例,将 proxy_pass 指向 unix:/opt/myapp/myapp.sock)。
🟥 场景4:部署 Docker 容器化应用
安装 Docker
sudo dnf install -y yum-utils
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable docker
sudo systemctl start docker
部署项目
docker pull your-image:tag
docker run -d -p 8080:80 --name myapp your-image:tag
或使用 docker-compose.yml:
version: '3'
services:
web:
image: your-image:tag
ports:
- "8080:80"
docker-compose up -d
✅ 三、监控与日志管理
查看服务状态
systemctl status myapp
journalctl -u myapp -f
日志轮转(logrotate)
确保应用日志不会无限增长,可配置 /etc/logrotate.d/myapp。
✅ 四、安全加固建议
-
禁用 root 远程登录
vi /etc/ssh/sshd_config # 设置 PermitRootLogin no systemctl restart sshd -
配置 SSH 密钥登录
-
定期更新系统
sudo dnf update -y -
使用云盾或安骑士进行安全扫描
✅ 五、自动化部署(可选)
- 使用 Jenkins / GitLab CI / GitHub Actions 实现自动化构建与部署。
- 使用 Ansible / Shell 脚本 批量部署多台服务器。
📌 总结
| 项目类型 | 推荐部署方式 | 关键工具 |
|---|---|---|
| Java | Systemd + JAR | systemd, java |
| Node.js | PM2 + Nginx | pm2, nginx |
| Python | Gunicorn + Nginx | gunicorn, nginx |
| Docker | Docker / Docker Compose | docker, docker-compose |
| PHP | Nginx + PHP-FPM | nginx, php-fpm |
如你能提供具体的项目类型(如语言、框架、是否需要数据库等),我可以给出更精确的部署脚本和配置。
PHPWP博客