湘西土家族苗族自治州网站建设_网站建设公司_UX设计_seo优化
2025/12/21 8:33:01 网站建设 项目流程

让尘封的旧电脑重获新生,成为家庭或办公室的网络打印中心

前言

你是否有一台旧电脑闲置在角落吃灰?其实只要稍加改造,它就能变身实用的网络打印机服务器,让所有设备都能无线打印!本文将详细记录我从零开始搭建网络打印机服务器的完整过程。

准备工作

第一步:系统安装

使用 Ventoy 启动盘安装 Ubuntu Server 24.04,选择最小化安装。最小化安装不包含图形界面,更加轻量省资源,非常适合做服务器。
如何制作Ventoy 启动盘参考:https://zhuanlan.zhihu.com/p/17040276952
如何安装Ubuntu Server参考:https://zhuanlan.zhihu.com/p/698434939

第二步:网络配置

安装完成后首先需要配置网络。最小化安装没有图形界面,也没有常见的文本编辑器,这时候就需要一些命令行技巧。

确定网卡名称

ip link show

这个命令会显示所有网络接口,我这里的网卡名称是 enp3s0

配置网络连接

由于没有编辑器,我们使用 cat 命令来编辑配置文件:

# 先给配置文件写权限
sudo chmod 777 /etc/netplan/50-cloud-init.yaml
# 使用cat编辑文件
sudo cat > /etc/netplan/50-cloud-init.yaml << 'EOF'
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
EOF
# 改回安全权限
sudo chmod 600 /etc/netplan/50-cloud-init.yaml

重要提示:一定要根据 ip link show 的结果使用正确的网卡名称!

设置静态IP(推荐)

为了方便后续使用,建议设置静态IP:

sudo cat > /etc/netplan/50-cloud-init.yaml << 'EOF'
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: no
addresses: [10.0.3.206/16]
routes:
- to: default
via: 10.0.0.2
nameservers:
addresses: [114.114.114.114, 8.8.8.8]
EOF

应用网络配置:

sudo netplan apply

联网后即可安装nano等组件:

# 更新系统
sudo apt update -y && sudo apt upgrade -y
# 安装nano
sudo apt install nano

第三步:安装和配置CUPS

什么是CUPS?

CUPS(Common UNIX Printing System,通用UNIX打印系统)是一个开源的打印系统,提供完整的管理打印设备、实现可靠打印和网络打印的方案。

安装步骤

# 更新系统
sudo apt update -y && sudo apt upgrade -y
# 安装CUPS
sudo apt install cups

配置CUPS

编辑配置文件 /etc/cups/cupsd.conf

sudo nano /etc/cups/cupsd.conf

需要修改的关键配置:

  1. Listen localhost:631 改为 Listen 0.0.0.0:631
  2. Browsing No 改为 Browsing Yes
  3. 在相应位置添加 Allow all
LogLevel warn
PageLogFormat
MaxLogSize 0
ErrorPolicy retry-job
Listen 0.0.0.0:631
Listen /run/cups/cups.sock
Browsing Yes
BrowseLocalProtocols dnssd
DefaultAuthType Basic
WebInterface Yes
IdleExitTimeout 60
<Location />
Order allow,deny
Allow all
</Location>
<Location /admin>
Order allow,deny
Allow all
</Location>
<Location /admin/conf>
Order allow,deny
Allow all
</Location>
<Location /admin/log>
Order allow,deny
Allow all
</Location>
<Policy default>
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default<Limit Create-Job Print-Job Print-URI Validate-Job>Order deny,allow
</Limit><Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job>Require user @OWNER @SYSTEMOrder deny,allow
</Limit><Limit CUPS-Get-Document>AuthType DefaultRequire user @OWNER @SYSTEMOrder deny,allow
</Limit><Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>AuthType DefaultRequire user @SYSTEMOrder deny,allow
</Limit><Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>AuthType DefaultRequire user @SYSTEMOrder deny,allow
</Limit><Limit Cancel-Job>Require user @OWNER @SYSTEMOrder deny,allow
</Limit><Limit CUPS-Authenticate-Job>AuthType DefaultRequire user @OWNER @SYSTEMOrder deny,allow
</Limit><Limit All>Order deny,allow
</Limit>
</Policy>
<Policy authenticated>
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default<Limit Create-Job Print-Job Print-URI Validate-Job>AuthType DefaultOrder deny,allow
</Limit><Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>AuthType DefaultRequire user @OWNER @SYSTEMOrder deny,allow
</Limit><Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>AuthType DefaultRequire user @SYSTEMOrder deny,allow
</Limit><Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>AuthType DefaultRequire user @SYSTEMOrder deny,allow
</Limit><Limit Cancel-Job CUPS-Authenticate-Job>AuthType DefaultRequire user @OWNER @SYSTEMOrder deny,allow
</Limit><Limit All>Order deny,allow
</Limit>
</Policy>
<Policy kerberos>
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default<Limit Create-Job Print-Job Print-URI Validate-Job>AuthType NegotiateOrder deny,allow
</Limit><Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>AuthType NegotiateRequire user @OWNER @SYSTEMOrder deny,allow
</Limit><Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>AuthType DefaultRequire user @SYSTEMOrder deny,allow
</Limit><Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>AuthType DefaultRequire user @SYSTEMOrder deny,allow
</Limit><Limit Cancel-Job CUPS-Authenticate-Job>AuthType NegotiateRequire user @OWNER @SYSTEMOrder deny,allow
</Limit><Limit All>Order deny,allow
</Limit>
</Policy>

重启CUPS服务:

sudo systemctl restart cups

第四步:连接打印机和安装驱动

检测硬件

# 查看USB设备
lsusb
# 查看已连接的打印机
sudo lpinfo -v

查询结果:

p303@printer-202-mzy:~$ sudo lpinfo -v
network beh
direct hp:/usb/HP_LaserJet_Professional_P1106?serial=000000000Q8FTERRPR1a
network lpd
network socket
serial serial:/dev/ttyS0?baud=115200
direct usb://HP/LaserJet%20Professional%20P1106?serial=000000000Q8FTERRPR1a
network ipps
network ipp
network https
network http
direct hpfax
network dnssd://HP%20LaserJet%20Pro%20M304-M305%20%5B472B71%5D._ipp._tcp.local/?uuid=e54d745b-e453-58d5-e671-089d9a126b79
network dnssd://HP-LaserJet-1320%20%40%20printer303._ipp._tcp.local/cups?uuid=c85b7787-a592-34b2-5c7f-0ba10bafe928
network dnssd://HP-P1106%20%40%20printer303._ipp._tcp.local/cups?uuid=02202fce-e209-388c-4c85-6aea277eaa8f
network socket://10.0.2.10:9100
network ipps://HP%20LaserJet%20Pro%20M304-M305%20%5B472B71%5D._ipps._tcp.local/

其中打印机串码为:

# P1106的串码
hp:/usb/HP_LaserJet_Professional_P1106?serial=000000000Q8FTERRPR1a
# HP1320的串码
direct usb://HP/LaserJet%201320%20series?serial=00CNBG4CSGX8

注意:每台打印机的串码是唯一的,添加打印机时需要使用串码。

安装惠普打印机驱动

sudo apt install hplip

惠普打印机检测(没啥大用)

hp-probe
hp-check

添加打印机到CUPS

根据lpinfo -v查询到的打印机串码添加打印机:

# 添加hp1320打印机(无驱动方式)
sudo lpadmin -p HP-LaserJet-1320 -v "hp:/usb/hp_LaserJet_1320_series?serial=00CNBG4CSGX8" -E
# 添加P1106打印机
sudo lpadmin -p HP-P1106-Room202-MZY -v "hp:/usb/HP_LaserJet_Professional_P1106?serial=000000000Q8FTERRPR1a" -E -m drv:///sample.drv/generpcl.ppd
# 启用打印机共享
sudo cupsctl --share-printers

验证打印机状态

# 查看所有打印机状态
lpstat -t
# 查看特定打印机详情
lpstat -p HP-LaserJet-1320 -l

输出示例:

scheduler is running
device for HP-LaserJet-1320: hp:/usb/hp_LaserJet_1320_series?serial=00CNBG4CSGX8
HP-LaserJet-1320 accepting requests since Sat Oct 11 06:40:21 2025
printer HP-LaserJet-1320 is idle. enabled since Sat Oct 11 06:40:21 2025

测试打印

echo "HP LaserJet 1320 测试页" | lp -d HP-LaserJet-1320

第五步:Windows客户端连接

现在可以在其他设备上连接这台网络打印机了:

  1. 打开"设备和打印机"
  2. 点击"添加打印机"
  3. 选择"网络打印机"
  4. 输入打印机地址:http://10.0.3.206:631/printers/HP-LaserJet-1320

注意:IP地址和打印机名称要替换成你自己的设置。

遇到的问题和解决方案

问题1:驱动兼容性问题

在添加打印机时遇到警告:

lpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS.

解决方案:使用无驱动方式添加打印机,现代CUPS支持自动识别大多数打印机。

问题2:权限问题

解决方案:确保使用sudo执行管理命令,并正确设置文件权限。

问题3:网络连接失败

解决方案:检查防火墙设置,确保631端口开放。

成果展示

现在,我的旧电脑已经成功变身网络打印机服务器:

  • ✅ 支持多台打印机同时工作
  • ✅ 网络内所有设备均可无线打印
  • ✅ 24小时稳定运行
  • ✅ 零额外成本

总结

通过这个项目,我们不仅让旧电脑重获新生,还建立了一个功能完整的网络打印解决方案。整个过程涉及Linux系统安装、网络配置、服务部署等多个方面,是一个很好的学习实践。

最重要的是,这个方案成本极低,只需要一台即将淘汰的旧电脑,就能为整个家庭或办公室提供便捷的打印服务。


希望这篇教程对你有帮助!如果你也在考虑搭建网络打印机服务器,不妨动手试试,让旧设备继续发挥余热。

参考文档:https://blog.csdn.net/zhengshaolin128/article/details/142366933

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询