在阿里云服务器上部署多个项目时,合理的端口和资源分配是关键。以下是一套完整的解决方案:
一、端口分配策略
1. 端口规划原则
- 系统端口:0-1023(保留,避免使用)
- 用户端口:1024-49151(推荐使用)
- 动态端口:49152-65535(临时使用)
2. 推荐端口分配方案
前端项目:3000, 8080, 8888
后端API:8000, 8081, 9000
数据库:3306(MySQL), 5432(PostgreSQL), 6379(Redis)
管理界面:7000, 9001
特殊服务:9200(Elasticsearch), 5672(RabbitMQ)
3. 使用Nginx反向XX
# 多项目共用80/443端口
server {
listen 80;
server_name api.project1.com;
location / {
proxy_pass http://localhost:8000;
}
}
server {
listen 80;
server_name admin.project2.com;
location / {
proxy_pass http://localhost:7000;
}
}
二、资源分配方案
1. CPU和内存分配
# 使用Docker限制资源
docker run -d
--name project1
--cpus="1.0"
--memory="1g"
-p 8000:8000
your-image
# 使用systemd限制资源(非容器)
[Service]
CPUQuota=100% # 限制CPU
MemoryLimit=1G # 限制内存
2. 磁盘空间管理
/home/
├── project1/ # 项目1目录
│ ├── app/ # 应用代码
│ ├── logs/ # 日志文件
│ └── data/ # 项目数据
├── project2/ # 项目2目录
└── shared/ # 共享资源
三、部署架构建议
方案A:容器化部署(推荐)
# docker-compose.yml 示例
version: '3'
services:
project1:
image: project1:latest
ports:
- "8000:8000"
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M
project2:
image: project2:latest
ports:
- "9000:9000"
deploy:
resources:
limits:
cpus: '1.0'
memory: 1G
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
方案B:传统进程管理
# 使用PM2管理Node.js应用
pm2 start app1.js --name "project1" --port 8000
pm2 start app2.js --name "project2" --port 9000
# 设置资源限制
pm2 startup
pm2 save
四、监控与优化
1. 资源监控
# 安装监控工具
sudo apt-get install htop iotop iftop
# 查看资源使用
htop # CPU/内存
iotop # 磁盘IO
iftop # 网络流量
2. 日志管理
# 按项目分离日志
/var/log/
├── project1/
│ ├── access.log
│ └── error.log
├── project2/
└── nginx/
3. 自动化脚本示例
#!/bin/bash
# 项目部署脚本
deploy_project() {
PROJECT_NAME=$1
PORT=$2
MEMORY_LIMIT=$3
echo "部署项目: $PROJECT_NAME"
echo "端口: $PORT"
echo "内存限制: $MEMORY_LIMIT"
# 具体部署逻辑
docker run -d
--name $PROJECT_NAME
--memory=$MEMORY_LIMIT
-p $PORT:$PORT
-v /home/$PROJECT_NAME:/app
your-image
}
# 使用示例
deploy_project "project1" 8000 "512m"
deploy_project "project2" 9000 "1g"
五、安全建议
-
防火墙配置
# 只开放必要端口 sudo ufw allow 22/tcp # SSH sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS sudo ufw enable -
使用非root用户运行服务
# 创建专用用户 sudo useradd -m -s /bin/bash project1 sudo chown -R project1:project1 /home/project1
六、最佳实践总结
- 端口管理:使用反向XX统一入口,内部服务使用不同端口
- 资源隔离:优先使用Docker容器进行资源限制
- 监控预警:设置资源使用阈值,及时报警
- 文档记录:维护端口和资源配置文档
- 备份策略:定期备份配置和数据
根据项目重要性和资源需求,可以灵活调整分配策略。对于生产环境,建议使用阿里云容器服务ACK或函数计算FC获得更好的隔离性和弹性伸缩能力。
CLOUD技术笔记