在阿里云轻量应用服务器上部署多个项目,可以通过以下方法实现,具体选择取决于项目类型(如Web应用、API服务等)和技术栈(Nginx、Docker等):
一、基于端口或域名区分(推荐)
1. 使用不同域名(最常用)
-
步骤:
- 域名解析:将多个域名解析到服务器公网IP(如
project1.com
和project2.com
)。 -
配置Nginx/Apache:
# /etc/nginx/conf.d/project1.conf server { listen 80; server_name project1.com; root /var/www/project1; index index.html; # 其他配置(如PHP、反向X_X等) } # /etc/nginx/conf.d/project2.conf server { listen 80; server_name project2.com; root /var/www/project2; index index.php; # PHP项目示例 location ~ .php$ { include fastcgi_params; fastcgi_pass unix:/run/php/php8.0-fpm.sock; } }
- 重启Nginx:
sudo systemctl restart nginx
。
- 域名解析:将多个域名解析到服务器公网IP(如
2. 使用不同端口
- 修改项目配置文件,监听不同端口(如3000、4000),并通过Nginx反向X_X或直接访问:
server { listen 80; server_name project1.com; location / { proxy_pass http://localhost:3000; # 转发到Node.js应用 } }
二、使用Docker容器化部署
适合隔离环境依赖的项目。
- 安装Docker:
curl -fsSL https://get.docker.com | sh
-
为每个项目创建容器:
# 项目1(例如WordPress) docker run -d --name project1 -p 8080:80 -v /path/to/project1:/var/www/html wordpress # 项目2(例如Node.js) docker run -d --name project2 -p 3000:3000 -v /path/to/project2:/app node:14 node /app/index.js
- 通过Nginx反向X_X(可选):
将域名指向不同容器的端口。
三、使用进程管理工具(PM2、Supervisor)
适用于后台运行多个Node.js/Python脚本。
- 安装PM2:
npm install pm2 -g
- 启动项目:
pm2 start /path/to/project1/app.js --name "project1" pm2 start /path/to/project2/main.py --interpreter python3 --name "project2"
- 查看状态:
pm2 list
四、虚拟主机(Apache)
适用于传统PHP项目。
-
编辑Apache配置(
/etc/apache2/sites-available/
):<VirtualHost *:80> ServerName project1.com DocumentRoot /var/www/project1 </VirtualHost> <VirtualHost *:80> ServerName project2.com DocumentRoot /var/www/project2 </VirtualHost>
- 启用配置并重启:
sudo a2ensite project1.conf sudo systemctl restart apache2
五、数据库隔离
- 为不同项目创建独立数据库用户和库:
CREATE DATABASE project1_db; CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password1'; GRANT ALL PRIVILEGES ON project1_db.* TO 'user1'@'localhost';
注意事项
- 防火墙:确保阿里云安全组放行所需端口(80、443、自定义端口等)。
- 资源监控:轻量服务器资源有限,避免同时运行过多高负载项目。
- HTTPS:使用Let’s Encrypt为域名免费配置SSL证书:
sudo certbot --nginx -d project1.com -d project2.com
根据项目复杂度选择合适方案。简单静态站点用Nginx多域名,复杂服务建议用Docker隔离。