在CentOS 8 / RHEL 8(Bonjour,IPP,Samba,AirPrint)上设置CUPS打印服务器

本教程将向您展示如何在同一网络上与Windows,macOS和iOS客户端共享连接到CentOS 8 / RHEL 8计算机的打印机。 CUPS(通用Unix打印系统)是Linux,FreeBSD和macOS上的默认打印系统。 您的Linux桌面环境可能具有专用的打印机配置实用程序,但是它们都在后台使用CUPS。 CUPS打印机可以使用多种协议在网络上共享,包括:

  • 卓悦+ IPP:Bonjour,也称为mDNS / DNS-SD(多播DNS / DNS服务发现),允许计算机在本地网络上查找服务。 IPP(Internet打印协议)是传输协议。
  • 中小型企业:又名Samba,主要用于与Windows客户端共享文件和打印机。
  • AirPrint:允许iPhone,iPad和macOS客户端通过Wi-Fi打印。

每种协议都有其优点和缺点。 首先,我将向您展示如何安装和配置CUPS。 然后,我们将学习如何通过以上3种协议共享CUPS打印机。 我建议使用所有3种方法共享您的打印机,以便用户可以轻松地在本地网络上找到可用的打印机。

步骤1:在CentOS 8 / RHEL 8上安装和配置CUPS

CentOS 8 / RHEL 8桌面版已预安装CUPS。 如果您使用的是CentOS 8 / RHEL 8服务器版本,则需要运行以下命令从默认的CentOS 8 / RHEL 8存储库安装CUPS。

sudo dnf install cups

然后启动CUPS。

sudo systemctl start cups

在启动时启用自动启动。

sudo systemctl enable cups

检查其状态:

systemctl status cups

样本输出:

cups-printing-system-centos8-rhel8

接下来,使用命令行文本编辑器(如Nano)编辑CUPS主配置文件。

sudo nano /etc/cups/cupsd.conf

默认情况下,CUPS Web界面仅在以下位置可用 localhost:631。 如果您正在运行CentOS 8 / RHEL 8服务器版本,则可能希望使CUPS在所有可用的网络接口上侦听,以便您能够从其他计算机访问CUPS Web界面。 找到以下行。

Listen localhost:631

将其更改为以下内容,因此CUPS将侦听所有网络接口。

Port 631

以下行将使CUPS显示本地网络上的共享打印机,因此同一网络中的其他计算机可以看到连接到CentOS 8 / RHEL 8计算机的打印机。

Browsing On

然后找到以下几行。

<Location />
  Order allow,deny
</Location>

以上配置仅允许从本地主机访问CUPS Web界面。 要允许来自同一网络中其他计算机的访问,请添加 Allow @LOCAL 如下所示。

<Location />
  Order allow,deny
  Allow @LOCAL
</Location>

如果要允许从本地网络进行远程管理,请同时将其添加到 /admin 目录。

<Location /admin>
  Order allow,deny
  Allow @LOCAL
</Location>

保存并关闭文件。 然后重新启动CUPS,以使更改生效。

sudo systemctl restart cups

我们需要允许同一网络中的客户端访问CentOS 8 / RHEL 8计算机上的端口631。

sudo firewall-cmd --permanent --add-port=631/tcp

重新加载防火墙以使更改生效。

sudo systemctl reload firewalld

除主 cups.service,还有 cups-browsed.service,用于从本地网络扫描和添加打印机。 如果您希望CentOS 8 / RHEL 8计算机能够使用本地网络上的其他打印机,请启动此服务。

sudo systemctl start cups-browsed

并在引导时启用自动启动。

sudo systemctl enable cups-browsed

步骤2:在CentOS 8 / RHEL 8上为打印机安装驱动程序

您需要在CentOS 8 / RHEL 8上安装驱动程序,以便它可以识别和使用打印机。 如果您有HP打印机,则可以使用以下命令轻松安装驱动程序。

sudo dnf install hplip

我还建议安装 gutenprint-cups 软件包,其中提供了适用于佳能,爱普生,惠普和兼容打印机的CUPS驱动程序。

sudo dnf install gutenprint-cups

如果您有其他打印机,则可以在openprinting.org上找到驱动程序。

安装驱动程序后,您可能需要将打印机重新连接到CentOS 8 / RHEL 8计算机的USB端口。 要测试驱动程序是否正常运行,可以在CentOS 8 / RHEL 8上创建一个文本文件:

echo "LinuxBabe is awesome!" > file.txt

然后运行以下命令从命令行打印此文本文件。

lp file.txt

这是一种非常基本的方法,因此现在不必担心打印质量。

步骤3:通过Bonjour / IPP协议共享CUPS打印机

安装Avahi守护程序

CUPS可以通过mDNS(多播DNS)和DNS-SD(DNS服务发现)协议(也称为Bonjour)在网络上宣布其存在。 为此,您需要安装并运行 avahi-daemon,它是类似于Apple Bonjour服务的服务,该服务允许计算机自动发现本地网络上的共享设备和服务。

sudo dnf install avahi

我们还需要安装 nss-mdns EPEL存储库中的软件包,客户端需要此软件包来解析 .local 网络上的域。

sudo dnf install epel-release

sudo dnf install nss-mdns

启动avahi-daemon。

sudo systemctl start avahi-daemon

在启动时启用自动启动。

sudo systemctl enable avahi-daemon

Avahi-daemon侦听UDP端口5353。在防火墙中将其打开。

sudo firewall-cmd --permanent --add-port=5353/udp

重新加载防火墙以使更改生效。

sudo systemctl reload firewalld

IPP无人驾驶打印

Bonjour用于在本地网络上宣传打印机。 为了使客户端和CUPS服务器相互通信,需要IPP(Internet打印协议)。 IPP的优点是客户端可以使用共享打印机,而无需在自己的设备上安装任何驱动程序。 CUPS开箱即用地支持IPP,因此您无需执行任何其他操作即可通过IPP共享CUPS打印机。

步骤4:在客户端计算机上添加打印机

macOS和Linux客户端

由于macOS和大多数Linux桌面发行版均已将CUPS安装为默认打印系统,因此,一旦在CentOS 8 / RHEL 8盒子上通过Bonjour / IPP启用了打印机共享,则同一网络中的macOS和Linux用户可以自动使用打印机。 当他们在应用程序(文字处理器,电子邮件阅读器,照片编辑器和Web浏览器)中单击打印选项时,打印机将自动可用。 他们不必显式添加打印机。 这是魔法。

如果您的Linux计算机找不到打印机,则您的系统可能没有 ippfind 命令。 运行以下命令以将其安装在基于Debian的Linux发行版上。

sudo apt install cups-ipp-utils

在CentOS 8上,运行以下命令。

sudo dnf install cups-ipptool

然后在客户端计算机上重新启动CUPS。

sudo systemctl restart cups

视窗

Windows 10随附IPP客户端。 输入 打印机 在左下方的搜索栏中,然后打开 打印机和扫描仪。 然后点击 添加打印机或扫描仪 按钮。 它将扫描本地网络上的可用打印机。

Windows 10打印机和扫描仪

如您所见,它找到了我的HP Deskjet打印机。 选择找到的打印机,然后单击 添加设备。 稍后,它将被添加到打印机列表中。

在CentOS 8 / RHEL 8(Bonjour,IPP,Samba,AirPrint)上设置CUPS打印服务器

如果您使用的Windows版本无法通过这种方式添加打印机,则可以安装Bonjour Print服务。 安装完成后,启动Bonjour打印机向导。 它将自动扫描本地网络上的可用打印机。 从屏幕截图中可以看到,它找到了我的HP打印机。

在Windows上添加bonjour打印机

单击“下一步”,然后需要为此打印机选择驱动程序。 您可以选择默认情况下安装在系统上的Microsoft IPP类驱动程序。

Microsoft IPP类驱动程序

单击下一步,打印机将被添加到Windows系统中。

在Linux上手动添加打印机

如果出于任何原因看不到打印机,则可以手动添加。 要在台式机Linux上添加Bonjour共享的打印机,请在系统设置或应用程序菜单中搜索打印机配置实用程序。 点击 按钮添加新打印机。

在Linux上添加杯子打印机

然后单击“网络打印机”,它将自动扫描本地网络上的可用打印机。 如您所见,它找到了我的HP Deskjet打印机。 点击 前锋 按钮。

杯子centos 8 dnssd

然后,您可以给打印机起一个名称和描述。 我只是接受默认值。 请点击 应用 到此为止。

centos 8杯打印机mdns dnssd

在macOS上手动添加打印机

要在macOS上添加Bonjour共享的打印机,请转到 系统偏好 -> 打印机和扫描仪。 单击加号(+)按钮添加打印机。

在macOS上添加bonjour打印机

它将自动扫描本地网络上的可用打印机。 如您所见,它找到了我的HP Deskjet打印机。

macOS bonjour打印机

点击 按钮,它将出现在打印机列表中。

macOS打印机和扫描仪

步骤5:通过Samba共享CUPS打印机

Samba是针对Unix和Linux的免费开源SMB / CIFS协议实现,它允许Unix / Linux与局域网中Windows机器之间的文件和打印共享。 它主要用于与Windows客户端共享文件和打印机。

要在CentOS 8 / RHEL 8上安装Samba,请运行以下命令。

sudo dnf install samba

然后发出以下命令以启动 smbdnmbd 服务。

sudo systemctl start smb nmb

在启动时启用自动启动。

sudo systemctl enable smb nmb

要检查Samba服务是否正在运行,请发出以下命令。

systemctl status smb nmb

一旦开始, smb 守护程序将监听TCP端口139和445。 nmbd 将在UDP端口137和138上监听。运行以下命令在防火墙中打开这些端口。

sudo firewall-cmd --permanent --add-service=samba

重新加载firwall守护程序以使更改生效。

sudo systemctl reload firewalld

然后编辑主配置文件。

sudo nano /etc/samba/smb.conf

找出 [printers] 部分。 默认情况下,它看起来像这样:

[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No

我们需要改变的价值 browseableyes,因此同一网络中的客户端可以找到打印机并添加 guest ok = yes 允许网络中的任何人使用打印机。

[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = yes
        guest ok = yes

建议启用 spoolssd 共享打印机时的服务。 当有大量打印作业时,这将使Samba更加高效。 只需将以下两行添加到 [global] 部分以启用 spoolssd 服务。

 rpc_server:spoolss = external
 rpc_daemon:spoolssd = fork

保存并关闭文件。 然后重新启动Samba。

sudo systemctl restart smb nmb

在Windows中添加Samba共享打印机。

打开文件浏览器,在地址栏中输入CentOS 8 / RHEL 8计算机的IP地址,例如 \192.168.0.110。 现在应该列出打印机。

在Windows 10上添加samba共享打印机

双击打印机将其添加​​到Windows系统。 然后单击确定按钮以选择要安装的驱动程序。 安装驱动程序后,打印机将被添加到Windows系统中。

Windows添加打印机向导

步骤6:通过AirPrint与iOS客户端共享CUPS打印机

AirPrint允许iPhone,iPad和macOS客户端通过Wi-Fi进行打印,而无需在客户端设备上安装驱动程序软件。 CUPS支持Airprint,但 avahi-daemon 默认情况下,不会在本地网络上宣布AirPrint服务。 我们需要创建一个 .service 文件在 /etc/avahi/services/ 带有Python脚本的打印机的目录。 运行以下命令以在CentOS 8 / RHEL 8上下载脚本。

wget https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py

添加执行权限。

chmod +x airprint-generate.py

这个python脚本是为Python2制作的。 CentOS 8 / RHEL 8默认使用Python3。 我们需要安装Python2。

sudo dnf install python2

编辑此文件。

nano airprint-generate.py

更改

#!/usr/bin/env python

#!/usr/bin/env python2

保存并关闭文件。 然后安装依赖项。

sudo dnf install gcc python2-devel cups-devel redhat-rpm-config

安装杯子模块。

sudo pip2 install cups pycups

然后运行此脚本。

sudo ./airprint-generate.py -d /etc/avahi/services/

现在应该有一个 .service 文件下 /etc/avahi/services/ 打印机的目录。

ls /etc/avahi/services/

样本输出:

AirPrint-DeskJet-2130-series.service

重新启动Avahi守护程序。

sudo systemctl restart avahi-daemon

现在,同一网络中的iOS和macOS客户端应该可以使用您的打印机。 以下屏幕截图显示了我的iPhone成功找到了AirPrint打印机。

centos 8杯空气印

包起来

我希望本教程可以帮助您在CentOS 8 / RHEL 8上设置CUPS打印服务器。与往常一样,如果您发现这篇文章很有用,请订阅我们的免费时事通讯以获取更多提示和技巧。 您可能还需要阅读以下文章来设置Samba文件共享服务器。

  • 在CentOS 8 / RHEL 8上设置Samba服务器以进行文件共享
Sidebar