常见服务器大全----都是什么?又有何作用?区别联系是什么?---web,应用,数据库,文件,消息队列服务器,Tomat,Nginx,vite.....

news/2024/9/25 12:00:34/

Node.js 与 Express

  • Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它允许你在服务器端运行 JavaScript。
  • Express 是一个基于 Node.js 的 Web 应用程序框架,它简化了构建 Web 应用程序和 API 的过程。Express 可以用来创建后端服务器,并处理 HTTP 请求。

例如,一个简单的 Express 服务器可能如下所示:

1const express = require('express');
2const app = express();
3const port = 3000;
4
5app.get('/api/hello', (req, res) => {
6  res.send('Hello from Express!');
7});
8
9app.listen(port, () => {
10  console.log(`Server is running on http://localhost:${port}`);
11});


Vue.js 与 Vite

  • Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。Vue.js 专注于视图层,可以轻松地与其他库或现有项目集成。
  • Vite 是一个现代的前端构建工具,它利用浏览器原生的 ES 模块导入功能来提供快速的开发体验。Vite 主要用于开发环境中的热更新(HMR)和服务,而不是作为生产环境的服务器。

例如,一个使用 Vite 的 Vue 项目可以通过以下命令启动开发服务器:

1npm run dev

这将启动 Vite 开发服务器,默认监听 http://localhost:3000 或你配置的其他端口。

前端与后端服务器的区别

  • 前端服务器:在开发环境中,前端服务器(如 Vite、Webpack Dev Server 等)主要用于提供静态文件服务、热模块替换(HMR)、代理请求等。它们通常不处理业务逻辑,只负责前端资源的加载和开发体验的优化。
  • 后端服务器:后端服务器(如 Express、Spring Boot 等)处理业务逻辑、数据库操作、API 请求等。它们是实际处理数据和逻辑的地方。


示例

假设你有一个 Vue 项目和一个 Express 后端项目:

Vue 项目(前端
  1. 初始化 Vue 项目:

    1npm create vite@latest my-vue-app --template vue
    2cd my-vue-app
  2. 安装依赖并启动 Vite 开发服务器:

    1npm install
    2npm run dev
  3. 配置 Vite 代理(vite.config.ts):

    1import { defineConfig } from 'vite';
    2import vue from '@vitejs/plugin-vue';
    3
    4export default defineConfig({
    5  plugins: [vue()],
    6  server: {
    7    port: 7070,
    8    proxy: {
    9      '/api': {
    10        target: 'http://localhost:3000',
    11        changeOrigin: true
    12      }
    13    }
    14  }
    15});
Express 项目(后端)
  1. 初始化 Express 项目:

    1mkdir my-express-app
    2cd my-express-app
    3npm init -y
    4npm install express
  2. 创建一个简单的 Express 服务器(index.js):

    1const express = require('express');
    2const app = express();
    3const port = 3000;
    4
    5app.get('/api/hello', (req, res) => {
    6  res.send('Hello from Express!');
    7});
    8
    9app.listen(port, () => {
    10  console.log(`Server is running on http://localhost:${port}`);
    11});
  3. 启动 Express 服务器:

    1node index.js

总结

  • Node.js + Express 用于创建后端服务器,处理 API 请求和业务逻辑。
  • Vue.js + Vite 用于创建前端应用,并在开发环境中提供快速的开发体验。


Tomcat

Apache Tomcat 是一个开源的 Java Servlet 容器,它实现了 Java Servlet 和 JavaServer Pages (JSP) 技术规范。Tomcat 通常用于运行基于 Java 的 Web 应用程序和提供 HTTP 服务。

主要特点
  • 轻量级:Tomcat 是一个轻量级的服务器,易于设置和配置。
  • Servlet 和 JSP 支持:完全支持 Java Servlet 和 JSP 技术。
  • 跨平台:可以在多种操作系统上运行,如 Windows、Linux 和 macOS。
  • 模块化:可以通过添加或移除组件来扩展功能。
  • 安全性:提供了基本的安全特性,如 SSL 支持。
使用场景
  • 开发环境:在开发阶段,Tomcat 常用于快速部署和测试 Java Web 应用程序。
  • 小型生产环境:对于小型到中型的应用程序,Tomcat 可以作为独立的 Web 服务器使用。
  • 与反向代理结合:在大型生产环境中,Tomcat 通常与 Nginx 或 Apache HTTP Server 结合使用,后者处理静态内容和负载均衡,而 Tomcat 处理动态内容。

Nginx

Nginx(发音为 "engine-x")是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3 代理服务器。Nginx 以其高并发处理能力和低资源消耗而闻名。

主要特点
  • 高性能:能够处理大量并发连接,适合高流量网站。
  • 反向代理:可以将客户端请求转发到后端服务器,并将响应返回给客户端。
  • 负载均衡:支持多种负载均衡算法,如轮询、最少连接数等。
  • 静态内容服务:高效地提供静态文件(如 HTML、CSS、JavaScript 文件)。
  • SSL/TLS 终止:支持 HTTPS 加密,可以终止 SSL/TLS 连接。
  • 缓存:内置缓存机制,可以缓存后端服务器的响应。
使用场景
  • Web 服务器:作为主要的 Web 服务器,提供静态内容和简单的动态内容。
  • 反向代理:作为反向代理服务器,将请求转发到后端应用服务器(如 Tomcat、Node.js 等)。
  • 负载均衡:在多个后端服务器之间分配负载,提高系统的可用性和性能。
  • API 网关:作为 API 网关,管理和路由 API 请求。
  • 微服务架构:在微服务架构中,Nginx 可以作为服务网关,管理不同微服务之间的通信。

结合使用 Tomcat 和 Nginx

在实际项目中,Tomcat 和 Nginx 经常结合使用,以充分利用各自的优势。以下是常见的配置示例:

  1. Nginx 作为反向代理和负载均衡器

    • Nginx 接收来自客户端的所有请求。
    • Nginx 将静态内容(如图片、CSS、JavaScript 文件)直接提供给客户端。
    • 对于动态内容(如 JSP 页面),Nginx 将请求转发到后端的 Tomcat 服务器。
    • Nginx 可以配置为负载均衡器,将请求分发到多个 Tomcat 实例,以提高系统的可扩展性和可靠性。
  2. 配置示例

    • Nginx 配置文件 (/etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf):

      1http {
      2    upstream tomcat_servers {
      3        server 127.0.0.1:8080;
      4        server 127.0.0.1:8081;
      5        # 可以添加更多的 Tomcat 服务器
      6    }
      7
      8    server {
      9        listen 80;
      10        server_name example.com;
      11
      12        location / {
      13            root /var/www/html;
      14            index index.html index.htm;
      15        }
      16
      17        location /api/ {
      18            proxy_pass http://tomcat_servers;
      19            proxy_set_header Host $host;
      20            proxy_set_header X-Real-IP $remote_addr;
      21            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      22            proxy_set_header X-Forwarded-Proto $scheme;
      23        }
      24    }
      25}
    • Tomcat 服务器

      • 确保 Tomcat 服务器运行在指定的端口(例如 8080 和 8081)。
      • 部署你的 Java Web 应用程序到 Tomcat 服务器。


Web 服务器

Apache HTTP Server
  • 简介:Apache HTTP Server 是世界上最流行的开源 Web 服务器之一,由 Apache 软件基金会维护。
  • 主要特点
    • 模块化设计:可以通过添加或移除模块来扩展功能。
    • 安全性:提供了多种安全特性,如 SSL/TLS 支持、访问控制等。
    • 灵活性:支持多种操作系统,包括 Linux、Windows 和 macOS。
    • 社区支持:拥有庞大的用户和开发者社区,提供丰富的文档和支持。
  • 使用场景:适用于各种规模的网站,从小型个人站点到大型企业级应用。
Microsoft IIS (Internet Information Services)
  • 简介:IIS 是微软提供的 Web 服务器,与 Windows 操作系统紧密集成。
  • 主要特点
    • 集成性:与 Windows 系统和服务高度集成,便于管理和配置。
    • 安全性:提供了多种安全特性,如 Windows 集成身份验证、SSL/TLS 支持等。
    • 管理工具:提供了图形化的管理工具,方便管理员进行配置和监控。
    • ASP.NET 支持:特别适合运行 ASP.NET 应用程序。
  • 使用场景:适用于基于 Windows 的 Web 应用程序,特别是那些需要与 Windows 服务和功能紧密结合的应用。

应用服务器

WildFly (以前称为 JBoss AS)
  • 简介:WildFly 是一个开源的应用服务器,支持 Java EE 规范。
  • 主要特点
    • 全面的 Java EE 支持:支持所有 Java EE 标准技术,如 EJB、JPA、JMS 等。
    • 轻量级:启动速度快,资源消耗低。
    • 模块化架构:可以根据需要启用或禁用特定的功能模块。
    • 集群和负载均衡:支持高可用性和负载均衡配置。
  • 使用场景:适用于需要完整 Java EE 功能的企业级应用程序。
GlassFish
  • 简介:GlassFish 是一个开源的应用服务器,由 Oracle 维护。
  • 主要特点
    • Java EE 兼容性:完全符合 Java EE 规范。
    • 可扩展性:支持集群和负载均衡,适用于大规模部署。
    • 管理工具:提供了图形化的管理工具,方便管理和监控。
    • 开源:开放源代码,允许自定义和扩展。
  • 使用场景:适用于需要 Java EE 功能的企业级应用程序,特别是在开发和测试阶段。

数据库服务器

MySQL
  • 简介:MySQL 是一个开源的关系型数据库管理系统。
  • 主要特点
    • 高性能:支持高并发读写操作。
    • 可靠性:支持事务处理和数据完整性。
    • 易用性:提供了简单的 SQL 语法和管理工具。
    • 跨平台:可以在多种操作系统上运行。
  • 使用场景:适用于各种规模的应用程序,从小型项目到大型企业级应用。
PostgreSQL
  • 简介:PostgreSQL 是一个开源的对象关系型数据库管理系统。
  • 主要特点
    • 高级功能:支持复杂的数据类型、索引、视图和存储过程。
    • 扩展性:支持自定义函数和数据类型。
    • 安全性:提供了多种安全特性,如角色和权限管理。
    • ACID 合规:支持事务处理和数据一致性。
  • 使用场景:适用于需要高级数据库功能的应用程序,特别是在需要复杂查询和数据分析的情况下。

文件服务器

Samba
  • 简介:Samba 是一个开源软件套件,提供了文件和打印共享服务。
  • 主要特点
    • 跨平台:支持在不同操作系统之间共享文件和打印机。
    • 兼容性:与 Windows SMB/CIFS 协议兼容。
    • 安全性:提供了多种安全特性,如用户认证和访问控制。
    • 易于配置:提供了图形化的配置工具和命令行工具。
  • 使用场景:适用于需要在不同操作系统之间共享文件和打印机的网络环境。
NFS (Network File System)
  • 简介:NFS 是一种分布式文件系统协议,用于在网络上共享文件。
  • 主要特点
    • 跨平台:支持多种操作系统,包括 Unix、Linux 和 macOS。
    • 性能:通过缓存机制提高文件访问速度。
    • 透明性:对用户来说,远程文件系统看起来像本地文件系统一样。
    • 安全性:提供了基本的安全特性,如用户认证和访问控制。
  • 使用场景:适用于需要在网络中共享文件的 Unix 和 Linux 环境。

消息队列服务器

RabbitMQ
  • 简介:RabbitMQ 是一个开源的消息代理和队列服务器。
  • 主要特点
    • 多协议支持:支持 AMQP、MQTT、STOMP 等多种消息协议。
    • 高可用性:支持集群和镜像队列,提高系统的可靠性和可用性。
    • 插件系统:提供了丰富的插件,可以扩展功能。
    • 管理工具:提供了图形化的管理界面,方便管理和监控。
  • 使用场景:适用于需要异步消息传递和解耦的应用程序,特别是在微服务架构中。
Apache Kafka
  • 简介:Kafka 是一个开源的分布式流处理平台,主要用于构建实时数据管道和流应用。
  • 主要特点
    • 高吞吐量:能够处理大量数据流。
    • 持久化:将消息持久化到磁盘,确保数据不会丢失。
    • 水平扩展:支持大规模集群部署,提高系统的可扩展性。
    • 实时处理:支持实时数据处理和分析。
  • 使用场景:适用于需要处理大规模实时数据流的应用程序,如日志收集、事件驱动架构等。

这些服务器各有其特点和适用场景,选择合适的服务器取决于你的具体需求和技术栈。


http://www.ppmy.cn/news/1530277.html

相关文章

共享单车轨迹数据分析:以厦门市共享单车数据为例(六)

副标题:.基于POI数据的站点功能混合度探究——以厦门市为例 为了保证数据时间尺度上的一致性,我们从互联网上下载了2020年的POI数据,POI数据来源于高德地图 API平台,包括名称、大小类、地理坐标等。并将高德地图 POI数据的火星坐标 系 GCJ-0…

Angular面试题三

一、请解释Angular中的依赖注入是什么,并简述其工作原理。 Angular中的依赖注入(Dependency Injection, DI)是一种软件设计模式,它允许一个类(通常是组件或服务)在需要时接收其依赖项,而不是在类…

PostgreSQL技术内幕12:PostgreSQL事务原理解析-锁管理

0.简介 本文介绍PG中的锁技术,主要包括PG中两阶段锁的介绍和PG中各种不同级别的锁,死锁问题介绍,以及如何去查看锁。 1.PG中两阶段锁 1.1 需要锁机制的原因 PG中的隔离性是通过MVCC和两阶段锁实现的,有了MVCC为什么还要使用悲…

最新Kali Linux超详细安装教程(附镜像包)

一、镜像下载: 链接:https://pan.baidu.com/s/1BfiyAMW6E1u9fhfyv8oH5Q 提取码:tft5 二、配置虚拟机 这里我们以最新的vm17.5为例。进行配置 1.创建新的虚拟机:选择自定义 2.下一步 3.选择稍后安装操作系统 4.选择Debian版本 因…

Spark 的 Skew Join 详解

Skew Join 是 Spark 中为了解决数据倾斜问题而设计的一种优化机制。数据倾斜是指在分布式计算中,由于某些 key 具有大量数据,而其他 key 数据较少,导致某些分区的数据量特别大,造成计算负载不均衡。数据倾斜会导致个别节点出现性能…

leetcode力扣刷题系列——第一题【两数之和】

问题: 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出 和为目标值target的那两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案…

thinkphp6.0 伪静态失效404(win下)

找到问题点了,是 BtSoft/nginx/conf/php/ 下的 74.conf 问题,是 try_files $uri=404 与 pathinfo 有冲突,将这一行注释后就可以了。 发现 Linux 面板上相关 php 配置没有这个配置,所以是正常的,建议将这一行删除。 location ~ \.php(.*)$ {# try_files $uri=404 与 php 的…

kafka集群架构与原理

前言 这次我们从消息队列开始讨论。生产者-消费者模型中间需要一个消息队列,以存储生产者的产品。对传统的消息队列来说,它支持点对点(P2P)和发布/订阅(Pub/Sub)两种消息模型。在点对点模型中,消…