Web Hosting与Printing系统全解析
1. Web Hosting相关
1.1 反向代理配置
在为提供基于Web的电子邮件的Microsoft Outlook Web Access (OWA)服务器前插入UNIX DMZ系统时,需要如下反向代理配置片段:
<Location /rpc>
ProxyPass https://wm.monkeypaw.com/rpc
ProxyPassReverse https://wm.monkeypaw.com/rpc
SSLRequireSSL
</Location>
<Location /exchange>
ProxyPass https://wm.monkeypaw.com/exchange
ProxyPassReverse https://wm.monkeypaw.com/exchange
SSLRequireSSL
</Location>
<Location /exchweb>
ProxyPass https://wm.monkeypaw.com/exchweb
ProxyPassReverse https://wm.monkeypaw.com/exchweb
SSLRequireSSL
</Location>
<Location /public>
ProxyPass https://wm.monkeypaw.com/public
ProxyPassReverse https://wm.monkeypaw.com/public
SSLRequireSSL
</Location>
<Location /oma>
ProxyPass https://wm.monkeypaw.com/oma
ProxyPassReverse https://wm.monkeypaw.com/oma
SSLRequireSSL
</Location>
<Location /Microsoft-Server-ActiveSync>
ProxyPass https://wm.monkeypaw.com/Microsoft-Server-ActiveSync
ProxyPassReverse https://wm.monkeypaw.com/Microsoft-Server-ActiveSync
SSLRequireSSL
</Location>
在这个例子中,仅为几个顶级URL提供代理服务,出于安全考虑,限制通过代理的请求是个好主意。
1.2 应对流量增长的解决方案
当网站流量突然增长或持续增长,超出本地服务器容量或网络连接带宽时,可以采用以下解决方案:
-
云计算
:云托管让你无需在本地安置硬件,就能访问所选操作系统的虚拟化实例。亚马逊的Amazon Web Services (AWS)是市场领导者,不到5分钟就能启动新的Linux或UNIX实例,通过ssh登录管理,且价格便宜。还有如Auto Scaling和RightScale等服务可根据负载自动开启或关闭服务器。
-
Co - lo托管
:将系统托管在远程数据中心,通常需要拥有或租赁服务器硬件。在某些标准或监管要求禁止使用云数据中心的情况下,或者需要定制硬件时,这种方式可能更合适。应根据Uptime Institute的标准选择合适等级的数据中心,商业应用通常使用Tier 3或Tier 4数据中心。
-
内容分发网络(CDN)
:互联网上大部分内容是静态的,CDN通过在网络层面将这些静态内容的副本放置在离用户近的地方,减少或消除从原始源传输数据的需求。Akamai Technologies运营着最成功和知名的CDN平台,Limelight和EdgeCast是较大的新兴竞争者。使用CDN对最终用户完全透明,但成本较高。
1.3 相关练习
-
E16.1
:在工作站上配置虚拟接口,运行
ifconfig查看前后变化,尝试从同一子网或不同网络ping该虚拟接口,并分析原因(需要root权限)。 -
E16.2
:在浏览器中访问如abcnews.com等内容丰富的网站,查看页面源代码,使用
dig查找各个对象URL的主机的DNS条目,确定哪些对象由CDN托管。 - E16.3 :使用数据包嗅探器(tcpdump)捕获上传信息的双向HTTP对话(如填写表单或搜索字段),注释会话以显示浏览器如何将信息传达给Web服务器(需要root权限)。
- E16.4 :使用数据包嗅探器捕获打开如amazon.com或cnn.com等繁忙网页时的流量,统计打开的独立TCP连接数量,确定发起者,并思考系统是否可以更高效(需要root权限)。
- E16.5 :定位可从互联网访问的Web服务器的日志文件,检查日志文件,分析一段时间内的访问模式、出现的错误以及日志文件内容所涉及的隐私问题(可能需要root权限)。
- E16.6 :在系统上安装Apache并创建几个内容页面,从其他机器验证Web服务器是否正常运行,找到Apache日志文件以查看哪些浏览器正在访问服务器,配置Apache将部分内容页面提供给E16.1中创建的虚拟接口(需要root权限)。
2. 打印系统相关
2.1 打印系统概述
Linux和Mac OS X的打印系统基于Common UNIX Printing System (CUPS),这是一个先进、复杂、具备网络和安全意识的打印系统,提供现代的基于浏览器的GUI和shell级命令。然而,Solaris、HP - UX和AIX等UNIX平台不使用CUPS,而是提供基于System V和BSD的老旧打印系统。
2.2 打印系统架构
打印系统依赖以下几个部分:
-
打印“假脱机程序(spooler)”
:收集和调度作业,“spool”最初是Simultaneous Peripheral Operation On - Line的缩写,现在是通用术语。
-
用户级实用程序
:与假脱机程序通信的命令行界面和/或GUI,用于发送作业、查询作业信息、移除或重新调度作业以及配置系统的其他部分。
-
后端
:与打印设备本身通信,通常隐藏在系统底层。
-
网络协议
:使假脱机程序能够通信和传输作业。
主要的打印系统家族有System V、BSD和CUPS。可以通过查找假脱机程序来确定系统使用的打印软件类型:CUPS有
cupsd
,BSD有
lpd
,System V有
lpsched
,使用命令
which cupsd lpd lpsched
即可判断。
2.3 CUPS打印系统
2.3.1 基本信息
CUPS服务器也是Web服务器,客户端是Web客户端。CUPS服务器在端口631提供完整功能的Web界面,管理员通常使用Web浏览器管理系统,也可使用脚本或GNOME、KDE界面。HTTP(实际上是Internet Printing Protocol,HTTP的增强版本)是CUPS服务器和客户端之间所有交互的底层协议。
2.3.2 打印操作
使用
lpr
命令可以将文件发送到CUPS服务器进行打印,例如:
$ lpr foo.pdf /tmp/testprint.ps
CUPS会在打印机可用时依次处理每个文件。打印时,CUPS会检查文档和打印机的PostScript Printer Description (PPD)文件,以确定如何正确打印文档。
2.3.3 打印队列管理
-
lpq命令用于请求作业状态信息并格式化显示。 -
其他CUPS客户端可以请求服务器暂停、取消或重新优先级作业,也可以将作业从一个队列移动到另一个队列。大部分操作需要通过
lpq获取作业编号来识别作业,例如使用lprm jobid移除打印作业。 -
lpstat -t可以总结打印服务器的整体状态。
2.3.4 多打印机和队列管理
CUPS服务器为每个打印机维护一个单独的队列。命令行客户端可以使用
-P
或
-p
选项指定要处理的队列。可以通过设置
PRINTER
环境变量或使用
lpoptions -dprinter_name
来设置默认打印机。
lpoptions
还可以让用户定义个人打印机实例和默认设置,存储在
~/.lpoptions
中,使用
lpoptions -l
可以列出当前设置。
2.3.5 打印机实例
如果只有一台打印机但需要用于不同用途,可以设置不同的“打印机实例”。例如,为名为Phaser_6120的打印机创建一个执行2 - up打印并添加横幅页的实例:
$ lpoptions -p Phaser_6120/2up -o number-up=2 -o job-sheets=standard
然后使用以下命令打印文件:
$ lpr -P Phaser_6120/2up biglisting.ps
2.3.6 网络打印
从CUPS的角度看,网络中的机器与孤立机器差别不大,每台计算机都运行
cupsd
,所有CUPS守护进程相互通信。可以通过编辑
/etc/cups/cupsd.conf
文件配置CUPS守护进程接受来自远程系统的打印作业,默认情况下,配置好的服务器会每30秒广播一次所服务的打印机信息。如果要让打印机在多个子网可用,可以指定每个子网的从服务器,通过
BrowsePoll
和
BrowseRelay
配置来实现信息的传递。
2.3.7 过滤器
CUPS使用过滤器链将每个打印文件转换为打印机可以理解的格式。它使用
.types
文件确定文档的MIME类型,参考打印机的PPD文件确定打印机可以处理的MIME类型,使用
.convs
文件推断可能的过滤器链及其成本,选择成本最低的链并将文档通过这些过滤器处理。可以使用
locate pstops
查找系统上可用的过滤器,使用
lpinfo -v
查看可用的后端。
2.3.8 服务器管理
cupsd
在启动时自动运行,配置文件
cupsd.conf
通常位于
/etc/cups
,格式与Apache配置文件相似。可以使用文本编辑器或CUPS Web GUI查看和编辑该文件。修改配置文件后,需要重启
cupsd
才能使更改生效,可以使用
/etc/init.d/cups restart
或
/etc/initd.cupsys restart
命令。也可以通过桌面特定的GUI工具进行配置,但浏览器GUI更安全和权威。
2.3.9 网络打印服务器设置
如果在网络打印时遇到问题,可以在基于浏览器的CUPS GUI中检查相关设置。如果直接编辑
cupsd.conf
文件,需要进行以下更改:
<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From netaddress
</Location>
将
netaddress
替换为要接受作业的网络的IP地址,然后设置
BrowseAddress
为该网络的广播地址加上CUPS端口,例如:
BrowseAddress 192.168.0.255:631
重启
cupsd
后,服务器将作为网络打印服务器运行。
2.3.10 打印机配置
-
自动配置
:CUPS会尝试自动检测插入系统的USB打印机。打印机制造商通常会提供安装软件,但很少有供应商明确支持Linux。即使需要手动配置,通常也只需插入硬件,连接到
localhost:631/admin的CUPS Web界面并回答几个问题。 - 网络打印机配置 :网络打印机需要知道自己的IP地址和子网掩码,可以通过BOOTP或DHCP服务器获取,也可以从打印机控制台手动分配静态IP地址。配置好后,网络打印机通常有一个可通过浏览器访问的Web控制台,但在配置过程中可能无法使用。
-
配置示例
:从命令行添加并行打印机
groucho和网络打印机fezmo的示例如下:
$ sudo lpadmin -p groucho -E -v parallel:/dev/lp0 -m pxlcolor.ppd
$ sudo lpadmin -p fezmo -E -v socket://192.168.0.12 -m laserjet.ppd
CUPS接受多种类型的打印机URI,使用
lpinfo -v
可以列出系统可以识别的设备和URI类型。
-
打印机类设置
:“类”是一组共享一个队列的打印机,队列中的作业将在可用的打印机上打印。以下命令创建了一个名为
haemer
的类,并将
riley
、
gilly
和
zoe
三台打印机添加到该类中:
$ sudo lpadmin -p riley -c haemer
$ sudo lpadmin -p gilly -c haemer
$ sudo lpadmin -p zoe -c haemer
-
服务关闭
:使用
lpadmin -x可以移除打印机或类。使用cupsdisable和cupsenable控制队列的出口端,使用reject和accept控制队列的提交端。对于长时间停机,建议使用reject;对于短暂中断,使用cupsd。
2.4 命令总结
| 命令 | 功能 |
|---|---|
lpr
| 打印文件 |
lpq
| 查询作业状态 |
lprm
| 移除打印作业 |
lpstat -t
| 总结打印服务器整体状态 |
lpoptions
| 设置默认打印机、定义个人打印机实例和默认设置 |
lpinfo -v
| 查看可用的后端和设备URI类型 |
cupsdisable
| 禁用打印机队列的出口端 |
cupsenable
| 启用打印机队列的出口端 |
reject
| 拒绝新作业提交 |
accept
| 接受新作业提交 |
lpadmin
| 配置打印机、类,设置系统级打印机选项 |
2.5 打印系统流程
graph LR
A[用户提交打印任务] --> B[CUPS接收任务]
B --> C[确定文档MIME类型]
C --> D[参考PPD文件确定打印机可处理的MIME类型]
D --> E[选择过滤器链]
E --> F[通过过滤器处理文档]
F --> G[后端传输作业到打印机]
G --> H[打印机打印作业]
通过以上内容,我们对Web Hosting和打印系统有了全面的了解,包括反向代理配置、应对流量增长的解决方案、不同类型的打印系统架构以及CUPS打印系统的详细操作和管理方法。这些知识对于系统管理员和相关技术人员在实际工作中具有重要的指导意义。
2.6 其他配置任务
现代打印机具有丰富的可配置性,CUPS允许通过其Web界面以及
lpadmin
和
lpoptions
命令对各种功能进行调整。一般来说,
lpadmin
用于系统级任务,
lpoptions
用于用户级任务。
lpadmin
可以限制对打印机和队列的访问,例如设置打印配额,指定哪些用户可以使用哪些打印机。
下面为你总结一些常见的操作场景及对应命令:
| 操作场景 | 命令示例 | 说明 |
| ---- | ---- | ---- |
| 限制用户访问打印机 |
sudo lpadmin -p printer_name -u allow:user1,user2
| 仅允许user1和user2访问指定打印机 |
| 设置打印配额 |
sudo lpadmin -p printer_name -q 100
| 为指定打印机设置每个用户的打印配额为100页 |
2.7 命令记忆技巧
管理员有时会混淆控制打印队列两端的命令,以下为你提供一些记忆方法:
-
语义关联法
:如果CUPS “rejects” 一个作业,意味着你无法 “inject” 它,所以
reject
用于控制作业提交端。
-
功能区分法
:接受和拒绝是针对打印作业的操作,而禁用和启用是针对打印机的操作,因此
reject
和
accept
控制提交端,
cupsdisable
和
cupsenable
控制出口端。
2.8 故障处理
CUPS有时会因某些问题(如电缆松动)暂时禁用打印机。当问题解决后,需要重新启用队列,否则
lpstat
会给出提示。
以下是一个简单的故障处理流程:
graph LR
A[打印机出现问题] --> B[检查硬件连接]
B --> C{连接是否正常}
C -- 是 --> D[重新启用打印机队列]
C -- 否 --> E[修复硬件连接]
E --> D
D --> F[使用lpstat检查状态]
F --> G{状态是否正常}
G -- 是 --> H[打印机恢复正常]
G -- 否 --> I[进一步排查软件配置问题]
2.9 打印系统综合对比
| 系统类型 | 打印系统 | 特点 | 适用场景 |
|---|---|---|---|
| Linux | CUPS | 先进、支持网络和安全,有GUI和shell命令 | 大多数Linux环境,对打印功能要求较高 |
| Mac OS X | CUPS | 集成度高,用户体验好 | Mac用户日常办公打印 |
| Solaris、HP - UX、AIX | System V/BSD | 老旧,功能有限 | 对兼容性要求高,不追求新特性的传统UNIX环境 |
2.10 总结与建议
2.10.1 Web Hosting方面
- 对于网站流量可能出现的突发增长,建议提前规划云计算、Co - lo托管或CDN等解决方案,以确保网站的稳定性和可用性。
- 在进行Web Hosting相关练习时,务必注意root权限的使用,避免对系统造成不必要的损害。
2.10.2 打印系统方面
- 优先考虑使用基于CUPS的打印系统,如Linux和Mac OS X,以获得更好的打印体验和管理效率。
-
在配置打印机和管理打印队列时,仔细阅读相关文档,正确使用
lpadmin、lpoptions等命令,避免因配置错误导致打印问题。 - 定期检查打印机的硬件连接和状态,及时处理CUPS自动禁用打印机的情况,确保打印系统的正常运行。
通过对Web Hosting和打印系统的深入了解和合理配置,可以提高系统的性能和可靠性,满足不同用户的需求。希望以上内容对你有所帮助,在实际应用中能够灵活运用这些知识,解决遇到的问题。
超级会员免费看
2092

被折叠的 条评论
为什么被折叠?



