当我要安装软件包或软件时,我可以看到客户端 | 服务器版本。这到底是什么意思?例如:
apt-get install xxxx-client
apt-get install xxxx-server
这些有什么区别?当我们需要安装应用程序或软件包时,该如何分类?假设:
如果我想安装 nginx,我只需输入 即可安装apt-get install nginx
,因此我们不会有任何混淆。
当我寻找 MySQL 时,如何选择应该安装哪个版本?我对客户端和服务器感到很困惑。
答案1
几乎任何应用程序都可以使用分布式客户端-服务器模型:
- 服务器提供资源1或服务,
- 客户用途资源或服务。
在某些应用程序中,服务器和客户端由同一生产商生产,并被标记为一个产品的一部分 - 例如 OpenSSH 或 MySQL 的情况。
但是,那协议服务器和客户端之间的通信才是真正重要的。客户端-服务器模型的强大之处在于,任何实现该协议的软件都可以使用它(既可以作为客户端,也可以作为服务器,见下文)。为什么 Nginx(或 Apache)的生产商没有为他们的软件提供客户端?因为他们的产品是 Web 服务器,并且已经有很多客户端(在这种情况下称为 Web 浏览器)可用,例如 Firefox、Chrome 等。
回到第一组……虽然提供了 OpenSSH 的“官方”客户端,但你可以使用另一个,例如油灰,对吧?还有其他 MySQL 服务器实现(玛拉雅数据库和Percona 服务器) 与常见的 MySQL 客户端协作,这些客户端不限于软件包提供的命令行 MySQL 客户端mysql-client
。
1资源可以是数据库 (*SQL)、网页,甚至是控制台(键盘、鼠标和显示器)。X 服务器。
2另一个优点是,这些部件可以在不同的机器上运行 - 但大多数情况下也可以在同一台机器上运行,正如部署者所需要的那样。
答案2
有些程序可以在服务器模式下使用,有些则只能作为客户端使用。
nginx
是一个仅限服务器的应用程序,因此服务器/客户端的差异毫无意义(对我来说无论如何)。
然而 Openssh 两者兼有,即。
客户(允许登录到远程盒子或服务器), 或者
服务器(允许其他远程客户端登录到其自身,服务器)。
答案3
如果我想安装 nginx,我只需输入 apt-get install nginx 即可安装,这样就不会产生任何混淆。
没错,nginx 是一个 Web 服务器,除此之外还有其他用途。它为任何设置为与其通信的客户端提供内容。目前已经有大量设计良好的客户端可用于各种目的,因此 nginx 无需创建自己的客户端。
当我寻找 MySQL 时,如何选择应该安装哪个版本?
服务器是数据库,它保存所有数据库、表和数据。它还向知道如何与其通信的任何客户端提供数据。
客户端连接到数据库。它可用于执行一般管理任务或远程执行数据查询或其他功能。
如果你想要打个比方,你可以把它想象成一家商店。商店(服务器)为客户提供服务,允许他们用钱换取商品。顾客(客户)进来可以在商店买东西。有许多不同类型的客户想要做不同的事情,对不同的问题感兴趣。
答案4
我将尝试这样解释:
“服务器”为其他程序或计算机提供服务。例如:nginx 和 Apache 是 Web 服务器;MySQL 和 PostgreSQL 是数据库服务器。
“客户端”使用定义的协议与服务器通信——对于 Web 服务器,使用 HTTP 或 HTTPS;MySQL 和 PostgreSQL 有自己的特定协议(MySQL 的协议有文档说明)这里)。
当您想要访问服务器时,您需要客户端。以 mysql 为例,该协议的客户端有多种实现 - Java、PHP 等。此外还有 MySQL 提供的交互式客户端。
但是你不想要安装整个服务器只是为了获得客户端:服务器通常比客户端更大;但是,更重要的是:不要安装你不需要的东西——它们可能存在安全漏洞,并且需要保持最新。
因此:在 Ubuntu(和大多数其他 Linux 发行版)中,服务器和客户端位于单独的包中。