加油
努力

如何在阿里云服务器上配置多个服务并同时运行?

在阿里云服务器上配置并运行多个服务,核心思路是:利用 Linux 系统的多进程/多服务机制 + 合理端口规划 + 进程管理工具(如 systemd)。以下是完整、可落地的操作步骤:


✅ 一、前期准备

  1. 登录服务器

    ssh -p <端口> root@<你的公网IP>
  2. 确认系统环境

    uname -a          # 查看内核版本
    cat /etc/os-release  # 确认发行版(如 Ubuntu 20.04 / CentOS 7)
  3. 开放所需端口

    • 登录 阿里云控制台 → ECS → 实例 → 安全组 → 添加入方向规则
      例如:允许 80(HTTP)、443(HTTPS)、3000(Node.js)、5432(PostgreSQL)等。

✅ 二、安装基础依赖(以 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)
  1. 创建项目目录:
    sudo mkdir -p /opt/myapp
    cd /opt/myapp
    npm init -y
    npm install express
    echo 'const app = require("./app"); app.listen(3000);' > index.js
  2. 编写 /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
  3. 启用并启动:
    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 等)提供定制化的多服务配置模板吗?欢迎告诉我你的场景 😊

云服务器