搭建一个使用 Vue、Jenkins、Nginx、Node.js(Express框架)、Redis 和 MongoDB 的全栈应用是一个复杂的过程,涉及到前端界面、持续集成/持续部署(CI/CD)、后端服务、Web服务器、缓存数据库和文档数据库的配置。以下是一个基础的项目搭建案例,以及一些关键概念的原理解释。
项目结构示例
my-app/
│
├── backend/ # 后端 Express 应用
│ ├── node_modules/ # Node.js 依赖
│ ├── models/ # MongoDB 模型
│ ├── controllers/ # 控制器层
│ ├── routes/ # 路由层
│ ├── redis/ # Redis 配置和集成
│ ├── app.js # Express 应用入口
│ └── package.json # package.json 文件
│
├── frontend/ # 前端 Vue 应用
│ ├── node_modules/ # Node.js 依赖
│ ├── public/ # 公共资源
│ ├── src/ # 源代码
│ ├── .env # 环境变量配置
│ ├── vue.config.js # Vue 配置文件
│ └── package.json # package.json 文件
│
├── jenkins/ # Jenkins 配置和脚本
│ ├── jobs/
│ │ └── my-app-job/
│ │ ├── config.xml
│ └── scripts/
│ └── deploy.sh
│
└── nginx/ # Nginx 配置文件
└── sites-available/
└── my-app.conf
后端 (Express + Node.js + MongoDB + Redis)
初始化项目和安装依赖
在 backend 目录中初始化 Node.js 项目并安装依赖。
cd backend
npm init -y
npm install express mongoose redis connect-redis ejs --save
设置 Express 服务器和 MongoDB、Redis 集成
backend/app.js
const express = require('express');
const mongoose = require('mongoose');
const redis = require('redis');
const connectRedis = require('connect-redis');
const session = require('express-session');
const app = express();
// 连接 MongoDB
mongoose.connect('mongodb://localhost/myapp', { useNewUrlParser: true });
// 设置 Redis 客户端和会话存储
const redisClient = redis.createClient();
const RedisStore = connectRedis(session);
const sessionMiddleware = session({
store: new RedisStore({ client: redisClient }),
secret: 'your-secret',
resave: false,
saveUninitialized: false,
cookie: { maxAge: 60000 } // 1 minute
});
app.use(sessionMiddleware);
// 启动 Express 服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
前端 (Vue)
初始化项目
在 frontend 目录中初始化 Vue 项目并安装依赖。
cd frontend
npm install -g @vue/cli
vue create my-app
配置 Vue 项目
配置 Vue 项目,设置代理以连接后端 API。
持续集成/持续部署 (Jenkins)
安装和配置 Jenkins
安装 Jenkins 并创建一个新 Job,配置源代码管理、构建触发器、构建环境、构建后执行的脚本等。
Jenkinsfile 示例
pipeline {
agent any
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build') {
steps {
script {
// 安装依赖、构建前端和后端
}
}
}
stage('Deploy') {
steps {
script {
// 部署脚本
}
}
}
}
post {
success {
echo 'Build and deploy successful!'
}
}
}
Web服务器 (Nginx)
安装 Nginx
在服务器上安装 Nginx。
配置 Nginx
配置 Nginx 作为反向代理服务器,服务静态文件并代理 API 请求。
nginx/sites-available/my-app.conf
server {
listen 80;
server_name my-app.example.com;
location / {
root /var/www/my-app/dist;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://localhost:3000;
# 其他代理配置...
}
}
原理
- Vue:用于构建前端用户界面的框架。
- Jenkins:一个开源的自动化服务器,用于处理持续集成和持续部署。
- Nginx:一个高性能的 HTTP 服务器和反向代理,用于服务静态文件和作为负载均衡器。
- Node.js (Express):Node.js 是一个 JavaScript 运行环境,Express 是一个基于 Node.js 平台的 Web 框架,用于构建后端服务。
- Redis:一个开源的内存中数据结构存储系统,用作数据库、缓存和消息代理。
- MongoDB:一个基于文档的 NoSQL 数据库,适用于存储灵活的数据结构。
- 持续集成/持续部署 (CI/CD):自动化的流程,用于代码的构建、测试和部署。
通过上述步骤和原理,你可以搭建一个完整的 Node.js + Vue + Jenkins + Nginx + Redis + MongoDB 的应用,前端界面通过 Vue 构建,后端服务通过 Express 提供,缓存通过 Redis 管理,数据存储在 MongoDB 中,持续集成和部署通过 Jenkins 自动化,最终通过 Nginx 作为 Web 服务器来服务静态文件和代理 API 请求。这种结构有助于实现高效的开发流程和应用部署,并利用 Redis 来提高应用的性能和响应速度。
#### 我的博客只写前端博文,点击我去看更多喜欢的前端博文,欢迎大家一起讨论学习!【https://blog.csdn.net/qq_29101285?spm=1011.2266.3001.5343】