将应用和数据库部署在同一台服务器上是可行的,尤其适用于以下场景:
✅ 适用场景
-
小型项目或测试环境
- 流量小、数据量少
- 开发/测试阶段,节省资源成本
-
预算有限的初创项目
- 节省云服务费用
- 部署简单,维护方便
-
学习目的
- 学习部署流程时更容易理解和操作
🔧 部署方式示例(以Linux系统为例)
1. 安装基础环境
# 更新系统包
sudo apt update && sudo apt upgrade -y
# 安装常用工具
sudo apt install curl wget git -y
2. 安装数据库(如 MySQL / PostgreSQL)
安装 MySQL:
sudo apt install mysql-server -y
sudo mysql_secure_installation
创建数据库与用户:
CREATE DATABASE myapp;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON myapp.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
3. 部署应用程序(以 Node.js 应用为例)
安装 Node.js:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install nodejs -y
部署应用:
git clone https://github.com/yourname/yourapp.git
cd yourapp
npm install
npm run build
修改数据库连接配置:
// config/db.js
module.exports = {
host: 'localhost',
user: 'myuser',
password: 'password',
database: 'myapp'
};
启动应用(使用 pm2 管理):
sudo npm install -g pm2
pm2 start app.js
4. 设置反向(可选,如 Nginx)
sudo apt install nginx -y
sudo nano /etc/nginx/sites-available/default
添加如下内容:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
重启 Nginx:
sudo systemctl restart nginx
⚠️ 注意事项
| 问题 | 建议 |
|---|---|
| 性能瓶颈 | 单台服务器 CPU/内存可能成为瓶颈 |
| 安全性风险 | 数据库暴露在公网容易被攻击,应限制访问权限 |
| 备份困难 | 要定期做完整备份,防止数据丢失 |
| 扩展性差 | 后期流量增长时需要拆分架构 |
📈 推荐升级路径
当业务发展后,建议采用以下结构:
[客户端] → [Nginx 反向] → [应用服务器 1]
↘ [应用服务器 2]
↘ [应用服务器 3]
↘ → [数据库服务器]
这样可以实现负载均衡、高可用、横向扩展等。
如果你告诉我你的具体技术栈(比如:Java/Spring Boot、Python/Django、Node.js、MySQL/PostgreSQL),我可以提供更详细的部署步骤。欢迎继续提问!
ECLOUD博客