在阿里云服务器上配置并运行多个服务,核心思路是:利用 Linux 系统的多进程/多服务机制 + 合理端口规划 + 进程管理工具(如 systemd)。以下是完整、可落地的操作步骤:
✅ 一、前期准备
-
登录服务器
ssh -p <端口> root@<你的公网IP> -
确认系统环境
uname -a # 查看内核版本 cat /etc/os-release # 确认发行版(如 Ubuntu 20.04 / CentOS 7) -
开放所需端口
- 登录 阿里云控制台 → ECS → 实例 → 安全组 → 添加入方向规则
例如:允许80(HTTP)、443(HTTPS)、3000(Node.js)、5432(PostgreSQL)等。
- 登录 阿里云控制台 → ECS → 实例 → 安全组 → 添加入方向规则
✅ 二、安装基础依赖(以 Ubuntu 为例)
sudo apt update && sudo apt upgrade -y
# 安装常用服务栈(按需选择)
sudo apt install nginx mysql-server php-fpm python3-pip docker.io -y
✅ 三、部署多个服务的典型方案
方案 A:使用 systemd 管理每个服务(推荐)
为每个服务创建独立的 .service 文件,实现自动启动、崩溃重启、日志隔离。
示例 1:部署 Node.js 应用(服务名:myapp)
- 创建项目目录:
sudo mkdir -p /opt/myapp cd /opt/myapp npm init -y npm install express echo 'const app = require("./app"); app.listen(3000);' > index.js -
编写
/etc/systemd/system/myapp.service:[Unit] Description=My Node.js App After=network.target [Service] Type=simple User=ubuntu WorkingDirectory=/opt/myapp ExecStart=/usr/bin/node index.js Restart=on-failure Environment="NODE_ENV=production" [Install] WantedBy=multi-user.target - 启用并启动:
sudo systemctl daemon-reload sudo systemctl enable myapp sudo systemctl start myapp sudo systemctl status myapp
示例 2:部署 Nginx(反向X_X前端)
- 若已安装
nginx,直接:sudo systemctl enable nginx sudo systemctl start nginx -
编辑
/etc/nginx/sites-available/default添加 upstream:server { listen 80; server_name your-domain.com; location /api { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }测试并重载:
sudo nginx -t && sudo systemctl reload nginx
示例 3:部署 MySQL 数据库
- 默认监听
3306,确保安全组放行该端口(或仅内网访问更佳)。 - 设置远程访问(谨慎操作):
CREATE USER 'appuser'@'%' IDENTIFIED BY 'strong_password'; GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'%'; FLUSH PRIVILEGES;
✅ 四、进阶优化建议
| 需求 | 解决方案 |
|---|---|
| 避免端口冲突 | 明确规划:Web 用 80/443,API 用 3000~9000,DB 用 3306/5432;非标准端口需开放安全组 |
| 多域名/多子站 | Nginx 配置多个 server 块,通过 server_name 区分 |
| 容器化部署 | 使用 Docker + docker-compose.yml 统一管理多服务(见下方补充) |
| 监控与日志 | 配合 journalctl -u <service> 查日志;推荐接入云监控(CloudMonitor)+ Prometheus/Grafana |
| 高可用 | 多台 ECS + SLB(负载均衡)+ Keepalived 做主备 |
🐳 补充:Docker Compose 多服务编排(更灵活)
创建 docker-compose.yml:
version: '3.8'
services:
web:
image: node:18-alpine
ports: ["3000:3000"]
volumes: ["./app:/app"]
command: ["npm", "start"]
depends_on: [db]
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: example
volumes: ["pgdata:/var/lib/postgresql/data"]
volumes:
pgdata:
启动:
docker compose up -d
→ 所有服务自动关联网络、日志、启动顺序,适合微服务架构。
🔒 安全提醒
- 禁止将数据库端口暴露给公网(除非必要且加密码/IP 白名单)
- 定期更新系统:
sudo apt upgrade -y - 使用 SSH 密钥登录,禁用 root 远程登录
- 启用防火墙(
ufw enable)只开放必需端口
需要我根据你的具体技术栈(如 Java/Spring、Python/Django、Go 等)提供定制化的多服务配置模板吗?欢迎告诉我你的场景 😊
云小栈