vue+jenkins+nginx+node+express+redis+mongodb搭建一整套完整案例和原理

184 阅读2分钟

搭建一个使用 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;
        # 其他代理配置...
    }
}

原理

  1. Vue:用于构建前端用户界面的框架。
  2. Jenkins:一个开源的自动化服务器,用于处理持续集成和持续部署。
  3. Nginx:一个高性能的 HTTP 服务器和反向代理,用于服务静态文件和作为负载均衡器。
  4. Node.js (Express):Node.js 是一个 JavaScript 运行环境,Express 是一个基于 Node.js 平台的 Web 框架,用于构建后端服务。
  5. Redis:一个开源的内存中数据结构存储系统,用作数据库、缓存和消息代理。
  6. MongoDB:一个基于文档的 NoSQL 数据库,适用于存储灵活的数据结构。
  7. 持续集成/持续部署 (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】