Ubuntu伺服器入門指南
出自Ubuntu中文
Ubuntu 伺服器指南
[編輯] 關於本指南
[編輯] 排版約定
本文件將使用下列記號: 備註,一般表示一段有趣的,有時是技術性的,並和上下文相關的信息。 提示,提供有完成某件事情的建議或捷徑。 警示,提醒讀者可能面臨的問題,並給出避免這些問題的幫助信息。 警告,告知讀者在特定情形下可能出現的風險。
用於列印的交叉引用排版約定效果如下:
- 到其它文件和網站的鏈接看上去像這樣。
PDF、HTML 以及 XHTML 版本的文件將使用超鏈接來處理交叉引用。
輸入內容的排版約定效果如下:
- 文件名或者目錄路徑,將以等寬字體(monospace)顯示。
- 您在終端(Terminal)里輸入的命令顯示效果如下:
command to type
- 您在用戶界面上點擊、選擇或選中的選項,將以等寬字體(monospace)顯示。
菜單選擇、滑鼠動作及鍵盤快捷鍵:
- 菜單選擇的序列操作顯示效果如下:
文件(F) → 打開(O)
- 滑鼠動作假定您使用右手模式的滑鼠設定。文中述及的「單擊」和「雙擊」皆使用滑鼠左鍵。文中述及的「單擊右鍵」指的是使用滑鼠右鍵。文中述及的「單擊中鍵」指的是使用滑鼠中鍵、按下滑鼠滾輪,或者是以模擬中鍵的方式同時按下滑鼠左、右鍵,這取決於您的滑鼠設計。
- 鍵盤快捷鍵組合的顯示效果如下:
Ctrl+N 。根據慣例,「Control」、「Shift」 以及 「Alternate」 按鍵將以 Ctrl、Shift 以及 Alt 來表示,需要特別指出的是,其中第一個按鍵在按下第二個鍵的過程中應該一直被按住。
[編輯] 貢獻和反饋
本文件由 Ubuntu 文件小組 編寫。您可以通過 Ubuntu 文件小組的郵件列表發送自己的意見或評論來完善本文件。欲知該小組的信息、其郵件列表、計劃等等詳情,您可以訪問 Ubuntu 文件小組官方網站。本文件的簡體中文版由 UbuntuChina 文件組翻譯,欲知更多信息或加入我們,請訪問 Ubuntu 中文 Wiki。
如果您發現了文件中存在的問題,或者想提些建議,您可以直接在Ubuntu Bug 跟蹤系統上提交一份bug報告。您的幫助是這些文件成功的關鍵![翻譯相關的 bug 可以聯繫UbuntuChina 文件組成員。]
非常感謝
- 您的 Ubuntu 文件小組
[編輯] 介紹
歡迎閱讀 Ubuntu 伺服器指南!
Ubuntu 伺服器指南 包括了在您的 Ubuntu 系統中如何安裝和配置滿足您需要的不同伺服器的相關信息。它是一個循序漸進、面向任務的配置和定製您系統的指南。本手冊討論的主題如下所示:
- 網路配置
- Apache2 的配置
- 資料庫
- Windows 聯網
本手冊主要分為以下幾塊:
- 安裝
- 包管理
- 聯網
- Windows 聯網
本指南假定您已經對您的 Ubuntu 系統有個基本的了解。如果您需要安裝 Ubuntu 的詳細幫助,將參考 Ubuntu 安裝指南。
本手冊的 HTML 和 PDF 版本可以在 Ubuntu 文件網站 在線獲得。
您可以在our Lulu store上購買到本指南的紙質品,只需支付列印和郵寄費用。
[編輯] 安裝
本章提供了安裝 Ubuntu 6.06 LTS Server Edition(伺服器版)的快速入門。更多細節說明,請參見 Ubuntu 安裝指南。
[編輯] 準備安裝
準備安裝,本部分內容說明在開始安裝之前要考慮的各個方面。
[編輯] 系統要求
Ubuntu 6.06 LTS Server Edition (伺服器版)支援三種主要的體系架構: Intel x86、AMD64 和 PowerPC。下表列出了被推薦硬體明細表。您可以根據需要使用比這更少的(硬體)進行管理。然而,大多數用戶不應當忽略這些建議,否則風險自負。 表 2-1 最小建議配置
| 安裝類型 | RAM | 硬碟空間 |
| 伺服器 | 64 MB | 500 MB |
Ubuntu 6.06 LTS Server Edition (伺服器版)的默認自述文件已經在下面列出了。當然,安裝的尺寸大小極大程式上取決於您在安裝過程中安裝服務的多少。對於大多數管理員來說,默認的服務對於伺服器一般的使用已經足夠了。
伺服器
這是一個小型伺服器服務列表,它為各種伺服器應用程式提供了一個通用基礎。它是最低限度的並被設計成可以在其上添加想要的服務,如文件/列印服務、web 主機、郵件主機等。要滿足這些服務至少需要 500 MB 的磁碟空間,但考慮添加更多的空間是要取決於在您伺服器上您想要提供的服務。
記住這些尺寸並不包括其他的素材如用戶文件、郵件、日誌和數據。當為您自己的文件和數據考慮空間時最好能留足。
[編輯] 備份
- 在您開始之前,請確保備份了您現在系統上的每個文件。如果第一次時已經有一個作業系統安裝在您的計算機上,那麼最合適的辦法就是把您的磁碟重新分區,為 Ubuntu 留出空間。無論哪次對您的磁碟進行分區您都應該做好丟失磁碟上所有東西的準備,因為您可能會誤操作或者在分區過程中出錯,如系統掉電等。在安裝中所使用的程式是相當可靠的,大多數已經用了幾年,但它們執行的也是破壞性的操作,一個操作出錯可能會把您有價值的數據丟失掉。
如果您是想把電腦做成多重引導的系統,請先確定您手頭上有電腦里已經存在的這些作業系統的安裝介質。特別是當您把啟動盤重新分區以後,您可能會發現必須重新安裝原有作業系統的啟動引導程式,某些情況下,還得重新安裝該作業系統並恢復受影響分區上的文件。
[編輯] 從 CD 安裝
將您的安裝 CD 插入 您的 CD-ROM 設備並重啟計算機。當從 CD-ROM 重啟時安裝系統將立即開始。一旦初始化之後,您的第一個安裝屏幕將出現。
此時,閱讀屏幕上的文字。您也許想看看安裝程式提供的幫助屏。如果您想這麼做的話,請按 F1 鍵。
要執行預設的伺服器安裝程式,選擇 「安裝到硬碟」 並按 回車 鍵。安裝過程將開始。簡單地根據屏幕上的指示,您的 Ubuntu 系統將被安裝。
或者,您要安裝一個 LAMP 伺服器 (Linux, Apache, MySQL, PHP/Perl/Python),選擇 「安裝 LAMP 伺服器」,並根據指示進行安裝。施文
[編輯] 包管理
Ubuntu 提供一套全面的包管理系統用於軟體的安裝、升級、配置和卸載。除了讓您 Ubuntu 計算機可以訪問組織好的超過 17,000 個軟體包的軟體庫之外,包管理工具還可以解決依賴關係並提供軟體更新檢查。
一些工具可以和 Ubuntu 包管理系統進行交互,從便於系統管理員做自動化處理的簡單命令行工具到便於 Ubuntu 新手使用的簡單圖形界面。
[編輯] 介紹
Ubuntu 的包管理系統是從 Debian GNU/Linux 發行版中洐生出來的。包文件包括在您 Ubuntu 系統中實現特定功能或軟體所必需的文件、元數據和指令。
Debian 包文件一般用 '.deb' 作後綴,而且位於建立在不同介質上由包組成的 軟體庫 中,這些介質包括 CD-ROM 光碟和網站。包通常是預編譯的二進位形式,因此安裝速度快而且軟體也無需編譯。
許多複雜的包使用 依賴包 這一概念,依賴包是主包為實現完整功能而要求的附加包。例如,語音合成包 Festival 依賴 festvox-kalpc16k 包,該依賴包提供被應用程式使用的眾多聲音之一。為了能使 Festival 正常運行,所有依賴包都必須與 Festival 主包同時安裝。Ubuntu 軟體管理工具將會自動完成這一切。 ff
[編輯] Apt-Get
apt-get 命令是一個強大的命令行工具,用於同 Ubuntu 的 Advanced Packaging Tool (APT) 一起執行諸如安裝新軟體包、升級已有軟體包、更新包列表索引,甚至是升級整個 Ubuntu 系統等功能。
作為一個簡單的命令行工具,apt-get 對於伺服器管理員來說比 Ubuntu 中的其他軟體包管理工具有著相當多的優點。這些優點包括便於在簡單終端連接 (SSH) 中使用,同時能夠用於系統管理腳本中,以便能被cron 動作計劃工具自動運行。
apt-get 工具的一些常見用法示例:
關於 APT 用法的更多信息,可閱讀全面的Debian APT 用戶手冊 或輸入:
apt-get help
[編輯] Aptitude
Aptitude 是一個菜單驅動,基於文本的 Advanced Packaging Tool (APT) 系統前端。包管理的許多常用功能,如安裝,卸載和升級,可以在Aptitude 中單鍵執行命令,它通常是小寫字母。
Aptitude 最適用於非圖形的終端環境,確保命令關鍵字的適當功能。您可以作為一個普遍用戶在終端提示符後用以下命令開始運行 Aptitude:
sudo aptitude
當 Aptitude 開始之後,你將看在屏幕頂部的一個菜單條,其下有兩個窗,頂窗包含包的類別,如 新軟體包 和 未安裝軟體包 。底窗包含包和包類別的相關信息。
使用 Aptitude 作包管理相對直觀,用戶界面便於執行常用任務。下面是在 Aptitude 中進行包管理時常見用法如下:
- 安裝軟體包:要安裝包,通過未安裝軟體包包類別找到該軟體包,如通過鍵盤箭頭鍵和 ENTER 鍵定位並高亮你想安裝的軟體包。在高亮你要安裝的軟體包之後,將其標示為安裝。現在按 g 鍵顯示軟體包的操作提示。再按 g 鍵,您將被提示要成為 root 用戶以完成安裝。按 ENTER 鍵將顯示 Password: 提示。輸入您的用戶密碼成為 root 用戶。最後,再一次按 g 鍵,您將被提示下載軟體包。在Continue 提示上按 ENTER 鍵,開始下載和安裝軟體包。
- 卸載軟體包:要卸載軟體包,通過已安裝軟體包包類別找到該軟體包,如通過鍵盤箭頭鍵和 ENTER 鍵定位並高亮你想卸載的軟體包。在高亮你要卸載的軟體包之後,按 - 鍵,文件包條目將變成 pink,標示其為卸載。現在按 g 鍵顯示軟體包的操作提示。再按 g 鍵,您將被提示要成為 root 用戶以完成卸載。按 ENTER 鍵將顯示 Password: 提示。輸入您的用戶密碼成為 root 用戶。最後,再一次按 g 鍵,您將被提示下載軟體包。在Continue 提示上按 ENTER 鍵,開始卸載軟體包。
- 更新軟體包索引:要更新軟體包索引,簡單按 u 您將被提示要成為 root 用戶以完成更新。按 ENTER 鍵將顯示 Password: 提示,輸入您的用戶密碼成為 root 用戶。開始更新軟體包索引,當出現下載對話框時在 OK 提示上按 ENTER 鍵以結束更新過程。
- 升級軟體包:要升級軟體包,如上所述更新軟體包索引,然後按U 鍵標示所有能升級的軟體包。現在按 g 鍵顯示軟體包的操作提示。再按 g 鍵,您將被提示要成為 root 用戶以完成安裝。按 ENTER 鍵將顯示 Password: 提示。輸入您的用戶密碼成為 root 用戶。最後,再一次按 g 鍵,您將被提示下載軟體包。在Continue 提示上按 ENTER 鍵,開始升級軟體包。
當實際查看軟體時列出軟體包當前狀態,在頂窗軟體包列表中顯示信息的第一列使用下列關鍵字來描述軟體包狀態:
- i: 安裝軟體包
- c: 軟體包沒有安裝,但在系統中有軟體包的殘留配置
- p: 從系統徹底刪除
- v: 虛擬軟體包
- B: 已損壞的軟體包
- u: 解壓文件,但尚未配置軟體包
- C: 半配置 - 配置失敗需要修復
- H: 半安裝 - 卸載失敗需要修復
要退出 Aptitude,只需簡單按 q 鍵並確認您想退出即可。在 Aptitude 菜單中按 F10 鍵可以列出其他許多功能。
[編輯] 配置
Advanced Packaging Tool (APT) 系統軟體庫的配置被保存在 /etc/apt/sources.list 文件中。這兒有個該文件的示例,
[file:///usr/share/ubuntu-docs/ubuntu/serverguide/sample/sources.list 這裏] 是一個典型的 /etc/apt/sources.list 文件範例。
您可以編輯該文件來使軟體庫生效或失效。舉個例子,要不想無論何時在發生文件包操作都會引起要求插入 Ubuntu CD-ROM ,只需要簡單地將在文件頂部的 CD-ROM 相應行註釋掉即可:
==== 其他软件库 ==== 除了可以使用官方支持的 Ubuntu 软件包库之外,还存在拥有几千个潜在软件包的由其它社区维护的软件库。这些软件库中最流行的两个是 Universe 和 Multiverse 软件库。这些软件库并不被 Ubuntu 官方支持,这就是它们为什么在缺省时不能的原因,但它们提供的包通常是可以在您的 Ubuntu 计算机上安全使用的。 在 Multiverse 软件库中的包通常有许可证的问题,这使得它们不能和自由操作系统一起分发,它们在您所在的地区可能是违法的。 建议不要在 Universe 或 Multiverse 软件库中包含官方支持的软件包。尤其是在升级这些包时可能会不安全。 许多其他软件包源也是可用的,有时甚至只提供一个软件包,这种情况主要发生在由单个应用程序的开发人员所提供软件包源上。然而当您在使用非标准软件包源时您应该非常小心谨慎,在执行任何安装之前仔细考查源和软件包,因为有些软件包源和其中的软件包可能会使您的系统在某些方面运行不稳定或不正常。 要使 Universe 和 Multiverse 库可用,编辑/etc/apt/sources.list 文件并将去掉相关行的注释: <pre><nowiki> deb http://archive.ubuntu.com/ubuntu dapper universe multiverse deb-src http://archive.ubuntu.com/ubuntu dapper universe multiverse
[編輯] 3.5.1. 引用
[編輯] 聯網
網路是由兩個或兩個以上的設備通過物理線纜或無線連接而成並在連接設備之間共享和分發信息。這些設備包括計算機系統、印表機或用有線或無線連接起來的其它相關設備。
Ubuntu 伺服器指南的這部分提供與聯網相關的一般和特定信息,包括網路概念的簡介以及對常用網路協議及伺服器應用程式的詳細討論。
[編輯] 網路配置
Ubuntu 提供了許多圖形化工具來配製您的網路設備。本文適用於伺服器管理員並聚焦在命令行中管理您的網路。
[編輯] 4.1.1. 乙太網
大多數乙太網配置都集中在單個文件 /etc/network/interfaces 中。如果您沒有乙太網設備,那麼在該文件中將只出現環回口,該文件看上去類似這樣:
auto lo iface lo inet loopback address 127.0.0.1 netmask 255.0.0.0
如果您只有一個乙太網設備 eth0,被配置成從 DHCP 伺服器得到設置,並且在引導時自動激活,那麼只需要再添加兩行:
auto eth0↵ iface eth0 inet dhcp
第一行說明 eth0 將會在您啟動時自動激活。第二行說明該介面 (「iface」) eth0 將有得到一個 IPv4 地址空間 (如果是一個 IPv6 的設備將須將 「inet」 用 「inet6」 代替) 並且它將自動從 DHCP 中自動獲得它的配置。假定您的網路和 DHCP 服務都已經被正確配置,該機的網路將不需要更多的配置。DHCP 伺服器將提供默認網關 (通過 route 命令來實現) 、設備的 IP 地址 (通過 ifconfig 命令來實現)以及網路使用的 DNS 伺服器 (在 /etc/resolv.conf 文件中實現)。
要把您的乙太網設備配置成靜態 IP 地址和自定義配置的話,則要求更多的信息。假設您想指定 IP 地址 192.168.0.2 給設備 eth1,其掩碼是 255.255.255.0。您的默認網關的 IP 地址是 192.168.0.1。您可以在 /etc/network/interfaces 中輸入類似下面的語句:
iface eth1 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
在這個例子中,您將需要在 /etc/resolv.conf 中手工指定您的DNS伺服器,看起來如下:
search mydomain.com nameserver 192.168.0.1 nameserver 4.2.2.2
search 語句在試圖解析網路名時把 mydomain.com 添到主機名查詢中。舉個例子,如果您的網路域名是 mydomain.com 並且您試圖去 ping 主機 「mybox」,DNS 查詢將在解析時改為 「mybox.mydomain.com」。nameserver 語句指定用於將主機名解析成 IP 地址的的 DNS 伺服器。如果您使用自己的名稱伺服器,在這裏輸入它。否則詢問您的 Internet 服務供應商要使用的主、輔 DNS 伺服器,並把它們如上所示輸入到 /etc/resolv.conf 中。
配置更多的介面是可能的,包括撥號的 PPP 介面、IPv6 網路、VPN 設備等。更多信息和支援選項請參考 man 5 interfaces。記住 ifup/ifdown 腳本使用的/etc/network/interfaces 是比其他一些 Linux 發行版更高級的配置模式。傳統的低級工具如ifconfig、route 和 dhclient 也為了 ad hoc 配置對您來說也是可用的。
[編輯] 4.1.2. 管理 DNS 記錄
本部分說明如何配置用來將IP地址解析成主機名或相反功能的名稱服務,而不是說如何將整個系統配置成一個名稱伺服器。
要管理 DNS 條目,您可以在 /etc/resolv.conf 文件中添加、編輯或刪除 DNS 名稱伺服器。一個 範例文件 在下面給出:
search com nameserver 204.11.126.131 nameserver 64.125.134.133 nameserver 64.125.134.132 nameserver 208.185.179.218
search 關鍵字指定為未完成主機名添加的字元串,在這裏我們使用com。因此當我們運行:ping ubuntu 時它被理解成 ping ubuntu.com。
nameserver 關鍵字指定名稱伺服器的 IP 地址,它將被用來解析 IP 地址或主機名。該文件可以有多個名稱伺服器記錄。名稱伺服器將按相同順序進行網路查詢。
如果 DNS 伺服器名稱是通過 DHCP 或 PPPOE 動態取回的(從您 ISP 取回),那麼不要在該文件中添加名稱伺服器記錄。它將被自動更新。
[編輯] 4.1.3. 管理主機
要管理主機,您可以在 /etc/hosts 文件中添加、編輯或刪除主機。該文件包括 IP 地址和相對應的主機名。當您的系統要解析一個主機到 IP 地址或從一個 IP 地址獲取主機名時,它將在使用名稱伺服器之前參考 /etc/hosts 文件。如果該 IP 地址已經在 /etc/hosts 文件中被列出,那麼將不再使用名稱伺服器。這一動作可以通過編輯 /etc/nsswitch.conf 來改變,不過後果自負。
如果您網路所包含計算機的 IP 地址沒有在 DNS 中列出,建議您將它們加入到 /etc/hosts 文件中。
[編輯] TCP/IP
傳輸控制協議和網際協議 (TCP/IP) 是在 20世紀70年代被美國國防部高級研究規劃局 (DARPA)作為在不同類型計算機及計算機網路之間的通信手段而被開發的一個標準協議簇。TCP/IP 是 Internet 的驅動力,因此它是全球最流行的網路協議簇。
[編輯] 4.2.1. TCP/IP 介紹
TCP/IP 的兩個協議組件處理計算機網路的不同方面。網際協議,TCP/IP 中的 "IP" 是一個連接協議,只處理使用 IP 數據報 作為網路信息基本單元的網路包路由。IP 數據報由報頭和其後的消息組成。傳輸控制協議 是 TCP/IP 中的 "TCP",可以使網路主機之間建立用於交換數據流的連接。TCP 也保證連接之間的數據傳送以及其在網路主機上的接收順序與其從另一台網路主機上的發送順序一致。
[編輯] 4.2.2. TCP/IP 配置
TCP/IP 協議配置由必須設置的幾個元素組成,可以通過編輯相應的配置文件或配置方案如動態主機配置協議 (DHCP) 來設置,它可以配置成提供適當的 TCP/IP 配置來自動設置網路客戶機。這些配置值必須正確設置,以便於您的 Ubuntu 系統進行相應網路操作。
TCP/IP 常用配置元素及其作用如下所示:
- IP 地址 IP 地址是唯一標識字元串,它由四部分由點號分隔的,範圍從 0 到 255 的十進位數組成。 每部分由8個比特表示,整個地址總長為32個比特。這種格式被稱為 dotted quad notation。
- 掩碼 子網掩碼 (或簡稱掩碼) 是一個局部位掩碼,或用指定的 子網掩碼 來將IP 地址中的網路分隔出來的一組標識。舉個例子,在 C 類網路中,標準的掩碼是 255.255.255.0 屏蔽了 IP 地址的前三個位元組,並允許 IP 地址的最後一個位元組指定子網中的主機。
- 網路地址 網路地址表示包括IP 地址網路部分的位元組。 例如, 一個 A 類網路的主機 12.128.1.2 將使用 12.0.0.0 作為網路地址,使用 12 來表示 IP 地址的第一個位元組 (網路部分), 餘下的三個為 0 的位元組表示可能的主機值的。網路主機使用象 192.168.1.100 這樣非常普遍的不可路由的私有 IP 地址將使用 192.168.1.0 網路地址,用前三個位元組來指定 C 類 192.168.1 網路,而用一個 0 來表示網路上所有可能的主機。
- 廣播地址 廣播地址是一個允許向給定子網中的所有主機而不是一台特定的網路主機同時發送網路數據的 IP 地址。一般標準 IP 網路的地址是 255.255.255.255,但這個廣播地址不能用來為 Internet 網上的每台主機發送一個廣播消息,因為路由器會阻止它。更適當的廣播地址設置是匹配特定子網的。例如,在流行的私有 C 類 IP 網 192.168.1.0 中,廣播地址應該設為 192.168.1.255。廣播消息一般都是由網路協議產生的,如地址識別協議 (ARP) 和路由信息協議 (RIP)。
- 網關地址 網關地址是一個通過該地址可能會到達指定網路或網路主機的 IP 地址。如果一台網路主機希望與另一台網路主機通訊,而該機並不在同一網路中,而是要傳輸到另一個網路或主機上,如 Internet 主機。網關地址設置必須正確,否則您的系統將不能到達不在同一網路中的任何主機。
- 名稱伺服器地址 名稱伺服器地址表示域名服務 (DNS) 系統的 IP 地址。該系統將網路主機名解析成 IP 地址。可以按順序來指定三個不同優先順序的名稱伺服器地址:主 名稱伺服器,次 名稱伺服器,和 第三 名稱伺服器。按順序為您系統將網路主機名解析成相應的 IP 地址,你必須指定合法的名稱伺服器地址,該地址應該在您系統的 TCP/IP 配置中被授權使用。在許多情況下這些地址可以也應該被您的網路服務供應商提供,但也可以使用許多免費的、可供公眾訪問的名稱伺服器,如 IP 從 4.2.2.1 到 4.2.2.6 的 Level3 (Verizon) 伺服器。
IP 地址、掩碼、網路地址、廣播地址以及網關地址一般都是在文件 /etc/network/interfaces 中通過相應的語句來指定的。名稱伺服器地址一般是在文件 /etc/resolv.conf 中通過 nameserver 語句來指定的。更多詳情,請分別查閱 interfaces 或 resolv.conf 的系統手冊頁。
查閱 interfaces 系統手冊頁,可用以下命令:
man interfaces
查閱 resolv.conf 系統手冊頁,用以下命令:
man resolv.conf
[編輯] 4.2.3. IP 路由
IP 路由是在 TCP/IP 網路上為可能發送的網路數據指明或發現路徑。路由使用一組路由表來指示網路數據包從源地址轉發到目的地,經常是通過許多叫做路由器的網路節點做中轉。IP 路由是 Internet 上路徑發現的主要方式。IP 路由分為兩種形式:靜態路由 和 動態路由。
靜態路由包含向系統路由表中手工添加的 IP 路由,一般是通過 route 命令來向路由表手工添加的。靜態路由與動態路由相比有許多優點,如在小網路中實施簡單,有可預測性 (路由表總是事先算好,因此路由在每次使用時都相當一致),在其它路由器和網路鏈路處理上比動態路由協議開銷小。然而,靜態路由也有一些缺點。如靜態路由只限於小網路而且不能很好地進行調整。靜態路由由於路由固定的特性,因此根本無法根據路由來適應網路中斷和故障。
動態路由有賴於從一個源到目的有多條可用 IP 路由的大型網路,利用特定的路由協議,如路由信息協議 (RIP),可以自動調整路由表以生成可能的動態路由。動態路由相對靜態路由有幾個優點,如擁有較大的伸縮性和能根據網路路由來適應網路中斷和故障。另外,幾乎無須手工配置路由表,因為路由器可以相互學到其他已有並且可用的路由器。這一特性也消除了由於人為錯誤而在路由表中引入錯誤的可能。然而,動態路由也並不完美,其表現出來的缺點如相當複雜以及由於路由器通訊所帶來的額外的網路開銷,並不能使最終用戶由此獲益,並卻一直消耗著網路帶寬。
[編輯] 4.2.4. TCP 和 UDP
TCP 是一個基於連接的協議,提供糾錯並通過 流量控制 來傳輸數據。流量控制決定什麼時間一個數據流需要停止,例如在出現諸如 衝突 等問題時重發先前發送的數據包,以確保完整和準確的數據傳輸。TCP 常用於重要信息的交換,如資料庫傳輸。
另一方面,用戶數據報協議 (UDP) 是一個 無連接 協議,很少用於重要數據的傳輸,因為缺乏流量控制或其他一些確保可靠數據傳輸的方法。UDP 常用在如音視頻流這樣的應用程式,由於它缺少糾錯和流控,因此相對於 TCP 來說更快,而且丟失少量包通常也不會造成災難性的後果。
[編輯] 4.2.5.ICMP
Internet 控制消息協議是在Request For Comments (RFC) #792 中定義的,是對網際協議 (IP) 的一個擴充。支援的網路包包括控制、錯誤和信息的消息。ICMP 常被用在諸如判斷一台網路主機或設備可用性的 ping 工具這樣的網路應用程式。在網路主機和設備如路由器之間使用 ICMP 所返回的錯誤消息示例包括 Destination Unreachable 和 Time Exceeded。
[編輯] 4.2.6. 守護程式
守護程式是特殊的系統應用程式,一般常駐在後台並等待來自其他應用程式請求其所提供的功能。許多守護程式都是網路中心;在 Ubuntu 系統後台執行的許多守護程式都可以提供網路的相關功能。這些網路守護程式包括 超文本傳輸協議守護程式 (httpd),用於提供網站伺服器功能;Secure SHell 守護程式 (sshd),用於提供安全遠程登錄 shell 和文件傳輸功能;Internet Message Access Protocol 守護程式 (imapd),用於提供 E-Mail 服務。
[編輯] OpenSSH 伺服器
[編輯] 4.4.1. 介紹
Ubuntu 伺服器指南的這部分內容介紹一個強大的遠程控制網路計算機和在它們之間傳輸數據的工具集 OpenSSH。您也可以學到一些 OpenSSH 伺服器應用程式的配置以及如何在您 Ubuntu 系統修改它們。
OpenSSH 是Secure Shell (SSH) 協議工具集中的一個自由可用的版本,用以遠程控制一台計算機或在計算機之間傳輸文件。完成這些功能的傳統工具,如 telnet 或 rcp 等,是不安全的,它們在使用時用明文來傳輸用戶的密碼。OpenSSH 提供一個伺服器守護程式和客戶端工具來保障安全、加密的遠程控制和文件傳輸操作,以有效地取代傳統的工具。
OpenSSH 伺服器組組件 sshd 持續監聽來自任何客戶端工具的連接請求。當一個連接請求發生時,sshd 根據客戶端連接的類型來設置當前連接。例如,如果遠程計算機是通過 ssh 客戶端應用程式來連接的話,OpenSSH 伺服器將在認證之後設置一個遠程控制會話。如果一個遠程用戶通過 scp 來連接 OpenSSH 伺服器,OpenSSH 伺服器將在認證之後開始伺服器和客戶機之間的安全文件拷貝。OpenSSH 可以支援多種認證模式,包括純密碼、公鑰以及Kerberos 票據。
[編輯] 4.4.2. 安裝
OpenSSH 客戶端及伺服器應用程式的安裝是簡單的。要在您 Ubuntu 系統中安裝 OpenSSH 客戶端應用程式,可以在終端提示符后使用以下命令:
sudo apt-get install openssh-client
要安裝 OpenSSH 伺服器應用程式及相關的支援文件,可以在終端提示符后使用以下命令:
sudo apt-get install openssh-server
[編輯] 4.4.3. 配置
您可以通過編輯 /etc/ssh/sshd_config 文件來配置 OpenSSH 伺服器應用程式的預設過程。關於該文件中使用的配置語句信息,您可以在終端提示符后運行下列命令來查閱相應的手冊頁:
man sshd_config
在 sshd 配置文件中有許多語句來控制那些諸如通信設置和認證模式。下面是一個通過編輯 /etc/ssh/ssh_config 文件來改變配置語句的例子。
在編輯配置文件之前,您應該生成一個原始文件的拷貝並對其防寫,以便您可以參考原始文件並在必要時重用它。
拷貝 /etc/ssh/sshd_config 文件並對其防寫可以通過在終端提示符后運行下列命令:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original sudo chmod a-w /etc/ssh/sshd_config.original
以下是您可能更改配置語句的範例:
- 要設置您 OpenSSH 在 TCP 2222 埠而不是預設的 TCP 20 埠監聽,可以如下使用改變 Port 語句:
Port 2222
- 要讓 sshd 允許基於公鑰登錄證書,可以簡單添加或修改該行語句:
PubkeyAuthentication yes
到 /etc/ssh/sshd_config 文件中。如果已經存在,確保該行語句沒有被註釋。
- 要使您的 OpenSSH 伺服器顯示 /etc/issue.net 文件的內容以作為預登錄 Banner,只需簡單地將下行添加或修改:
Banner /etc/issue.net
到 /etc/ssh/sshd_config 文件中即可。
在修改 /etc/ssh/sshd_config 文件之後,保存該文件並重啟 sshd 伺服器應用程式以使之生效。可以在終端提示符后使用下列命令:
sudo /etc/init.d/ssh restart
許多其他的 sshd 配置語句可以使伺服器應用程式按您的要求運行。然而,給您一個忠告,如果您訪問伺服器的唯一方法就是使用 ssh,而且您在通過 /etc/ssh/sshd_config 文件來配置 sshd 時犯了一個錯誤,那麼在重啟該服務之後您可能會發現您被鎖在伺服器外面了,或者是 sshd 服務在處理一個不正確的配置語句時拒絕啟用。因此當在遠程伺服器上編輯該文件時要格外的小心。
[編輯] 4.4.4. 引用
[編輯] FTP 伺服器
文件傳輸協議 (FTP) 是一個 TCP 協議,用於在計算機之間上傳和下載文件。FTP 工作在客戶端/伺服器模式下。伺服器組件被稱為 FTP 守護程式。它持續不斷地監聽來自遠程客戶端的 FTP 請求。當一個請求到達時,它管理登錄和建立連接。在整個會話期間它執行 FTP 客戶端發送來的任何命令。
可以通過兩種方式來管理 FTP 伺服器的訪問:
- 匿名
- 授權
在匿名模式中,遠程客戶端可以使用 "anonymous" 或 "ftp" 預設用戶帳號並通過發送一個郵件地址做為密碼來訪問 FTP 伺服器。在授權模式下一個用戶必須擁有帳號和密碼。用戶所訪問 FTP 伺服器中目錄和文件的許可權是根據登錄時所用帳號來定義的。一般來說,FTP 守護程式將隱藏在 FTP 伺服器的根目錄中並將其改到 FTP 家目錄。這樣就可以向遠程傳話隱藏文件系統的其他部分。
[編輯] 4.5.1. vsftpd - FTP 伺服器安裝
vsftpd 是可在 Ubuntu 中使用的 FTP 守護程式之一。它在安裝、設置和維護方面十分方便。要安裝 vsftpd 您可以使用下列命令:
sudo apt-get install vsftpd
[編輯] 4.5.2. vsftpd - FTP 伺服器配置
你可以編輯 vsftpd 配置文件,/etc/vsftpd.conf,來配置預設設置。預設狀態下只允許匿名 FTP。如果您希望禁用該選項,您可以將下面這行:
anonymous_enable=YES
改為
anonymous_enable=NO
- 預設狀態下,本地系統用戶是不允許登錄 FTP 伺服器的。要改變該設置,您可以將下面這行反註釋:
- 預設狀態下,允許用戶從 FTP 下載文件,但不允許他們上傳文件到 FTP 伺服器。為了能夠上傳文件到 FTP 伺服器,需要改變該設置,您可以將下面這行反註釋掉:
- 配置文件包括許多配置參數。關於配置文件中的每個參數的信息都可以得到,或者您可以參考手冊頁,man 5 vsftpd.conf 說明每個參數的細節。
一旦您配置好了 vsftpd 您就可以運行該守護程式了。您可以執行下列命令來運行vsftpd 守護進程:
sudo /etc/init.d/vsftpd start
請注意在配置文件中預設的設置主要是出於安全考慮。上面每一個改變都會使系統的安全性更小,所以請只在您需要時才改變他們。
[編輯] 網路文件系統 (NFS)
NFS 允許系統將其目錄和文件共享給網路上的其他系統。通過 NFS,用戶和應用程式可以訪問遠程系統上的文件,就象它們是本地文件一樣。
NFS 最值得注意的優點有:
- 本地工作站可以使用更少的磁碟空間,因為常用數據可以被保存在一台機器上,並讓網路上的其他機器可以訪問它。
- 不需要為用戶在每台網路機器上放一個用戶目錄。用戶目錄可以在 NFS 伺服器上設置並使其在整個網路上可用。
- 存儲設備如軟盤、光碟機及 USB 設備可以被網路上其它機器使用。這可能可以減少網路上移動設備的數量。
[編輯] 4.6.1. 安裝
在終端提示符后鍵入以下命令安裝 NFS 伺服器:
sudo apt-get install nfs-kernel-server
[編輯] 4.6.2. 配置
您可以配置要輸出的目錄,您可以在 /etc/exports 文件中添加該目錄。例如:
/ubuntu *(ro,sync,no_root_squash) /home *(rw,sync,no_root_squash)
您可以用主機名來代替 *。盡量指定主機名以便使那些不想其訪問的系統訪問 NFS 掛載的資源。
您可以在終端提示符后運行以下命令來啟動 NFS 伺服器:
sudo /etc/init.d/nfs-kernel-server start
[編輯] 4.6.3. NFS 客戶端配置
使用 mount 命令來掛載其他機器共享的 NFS 目錄。可以在終端提示符后輸入以下類似的命令:
sudo mount example.hostname.com:/ubuntu /local/ubuntu
掛載點 /local/ubuntu 目錄必須已經存在。而且在 /local/ubuntu 目錄中沒有文件或子目錄。
另一個掛載其他機器的 NFS 共享的方式就是在 /etc/fstab 文件中添加一行。該行必須指明 NFS 伺服器的主機名、伺服器輸出的目錄名以及掛載 NFS 共享的本機目錄。
以下是在 /etc/fstab 中的常用語法:
example.hostname.com:/ubuntu /local/ubuntu nfs rsize=8192,wsize=8192,timeo=14,intr
[編輯] 4.6.4. 引用
[編輯] 動態主機配置協議 (DHCP)
動態主機配置協議 (DHCP) 是一種網路服務,相對於手工為每台網路主機配置,它使網路主機可能自動被伺服器指定設置。被配置成 DHCP 客戶端的計算機並不能控制其從 DHCP 伺服器得到的設置,且該配置對於計算機用戶來說是透明的。
由 DHCP 伺服器提供給 DHCP 客戶端最常用的設置包括:
- IP 地址和掩碼
- DNS
- WINS
然而,一個 DHCP 伺服器也支援配置如下屬性,如:
- 主機名
- 域名
- 默認網關
- 時間伺服器
- 列印伺服器
使用 DHCP 的好處在於當網路發生改變如 DNS 伺服器地址改變時,只需要在 DHCP 伺服器中改變即可,所有網路主機將在其 DHCP 客戶端下一次輪詢 DHCP 伺服器時被重新配置。另一個好處就是,它在將新計算機整合到網路時也更容易,因為不需要再檢查 IP 地址的有效性。同時也減少 IP 地址的衝突。
一個 DHCP 伺服器可以用兩個模式來提供配置設置
- MAC 地址
該模式需要用 DHCP 去標明連接到網上的每塊網卡唯一的硬體地址,然後在 DHCP 客戶端每次使用該網路設備發送給 DHCP 伺服器請求時提供給它一個固定的配置。
- 地址池
該模式需要定義一個 IP 地址池 (有時也叫範圍或作用域) ,以便 DHCP 客戶端可以被動態提供它們的配置from which DHCP clients are supplied their configuration properties dynamically and on a fist come first serve basis。當一個 DHCP 客戶端有段時間不再在網路上時,該配置將過期並釋放回地址池以便為其他 DHCP 客戶端使用。
ubuntu 提供 DHCP 伺服器及其客戶端。伺服器叫 dhcpd (動態主機配置協議守護程式)。Ubuntu 提供的客戶端叫 dhclient,應該安裝在所有自動配置的計算機上。這兩個程式很容易安裝和配置,並可在系統引導時自動啟用。
[編輯] 4.7.1. 安裝
要安裝 dhcpd,可以在終端提示符后輸入以下命令:
sudo apt-get install dhcpd
您將看到下面的輸出,說明接下來做什麼:
Please note that if you are installing the DHCP server for the first time you need to configure. Please stop (/etc/init.d/dhcp stop) the DHCP server daemon, edit /etc/dhcpd.conf to suit your needs and particular configuration, and restart the DHCP server daemon (/etc/init.d/dhcp start). You also need to edit /etc/default/dhcp to specify the interfaces dhcpd should listen to. By default it listens to eth0. NOTE: dhcpd's messages are being sent to syslog. Look there for diagnostics messages. Starting DHCP server: dhcpd failed to start - check syslog for diagnostics.
[編輯] 4.7.2. 配置
安裝結束后的錯誤消息可能會帶來小小的困惑,不過下面幾步將幫助您配置服務: 通常,您想做的是隨機指定一個 IP 地址。這可以通過以下設置來實現:
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.org";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}
這將導致 DHCP 伺服器從 192.168.1.10-192.168.1.100 或 192.168.1.150-192.168.1.200 範圍中分配客戶端一個 IP 地址。如果客戶端沒有要求一個特定的時間幀的話它將租用 600秒的 IP 地址。否則最大 (允許) 租用時間為 7200 秒。伺服器也 "建議" 客戶端使用 255.255.255.0 做為它的子網掩碼,192.168.1.255 作為它的廣播地址,192.168.1.254 作為路由器/網關,同時將 192.168.1.1 和 192.168.1.2 作為它的 DNS 伺服器。
如果您需要為您的 Windows 客戶機指定一個 WINS 伺服器,您需要包含 netbios-name-servers 選項,如:
option netbios-name-servers 192.168.1.1;
Dhcpd 配置設置可以從 DHCP 快速指南中得到,該指南可以在 這裏 找到。
[編輯] 4.7.3. 引用
[編輯] 域名解析服務 (DNS)
域名解析服務 (DNS) 是一個 Internet 服務,相互映射 IP 地址和完全限定域名 (FQDN) 。通過這種方式,使用 DNS 將不再需要記住 IP 地址。運行 DNS 的計算機稱為 名稱伺服器。Ubuntu 提供 BIND (伯克利 Internet 名稱守護程式),一個在 GNU/Linux 上最常用的維護名稱伺服器的程式。
[編輯] 4.8.1. 安裝
在終端提示符后輸入以下命令來安裝 dns:
sudo apt-get install bind9
[編輯] 4.8.2. 配置
DNS 配置文件被保存在 /etc/bind 目錄中。主配置文件叫 /etc/bind/named.conf。預設配置文件的內容如下所示:
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind/README.Debian for information on the
// structure of BIND configuration files in Debian for BIND versions 8.2.1
// and later, *BEFORE* you customize this configuration file.
//
include "/etc/bind/named.conf.options";
// reduce log verbosity on issues outside our control
logging {
category lame-servers { null; };
category cname { null; };
};
// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/etc/bind/db.root";
};
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
// add local zone definitions here
include "/etc/bind/named.conf.local";
include 行指定包含 DNS 選項的文件名。在選項文件中的directory 行告訴 DNS 在哪兒尋找文件。所有 BIND 用到的文件都與該目錄相關。 名為 /etc/bind/db.root 的文件描述世界上的根名稱伺服器。這些伺服器按時更新並不時被維護。
zone 部分定義一個主伺服器,並將其保存在 file 標籤所指定的文件中。每個 zone 文件包括 3 個資源記錄 (RRs):一個 SOA RR、一個 NS RR 以及一個 PTR RR。SOA 是授權開始的縮寫。"@" 符是一個特定的符號表示原點。NS 是名稱伺服器 RR。PTR 是域名指針。要開始 DNS 伺服器,可以在終端提示符后運行以下命令:
sudo /etc/init.d/bind start
詳情您可以參考在參考部分所提及的文件。
[編輯] 4.8.3. 引用
[編輯] CUPS - 列印伺服器
Ubuntu 列印及列印服務主要是 通用 UNIX 列印服務 (CUPS)。該列印系統是自由可用、可移植的列印層,正在成為絕大多數 GNU/Linux 發行版新的列印標準。
CUPS 管理列印作業和隊列,並使用標準的 Internet 列印協議 (IPP) 提供網路列印,該協議提供最大範圍的印表機支援,從點陣印表機到激光印表機以及位於兩者之間的許多印表機。CUPS 也支援 PostScript Printer Description (PPD) 和網路印表機的自動檢測,以及提供基於 Web 的簡單配置和管理工具。
[編輯] 4.9.1. 安裝
在您 Ubuntu 計算機上安裝 CUPS,只需簡單使用 sudo 和apt-get 命令並將要安裝包作為第一個參數即可。一個完全的 CUPS 安裝需要安裝許多從屬包,但它們也可以在同一個命令行指定。在終端提示符后輸入以下命令以安裝 CUPS:
sudo apt-get install cupsys cupsys-client
認證您的用戶密碼之後,這些包將被下載並正確安裝。在安裝結束之後,CUPS 伺服器將自動開始。為了發現並修復問題,您可以通過錯誤日誌文件 /var/log/cups/error_log 來查看 CUPS 伺服器的錯誤。如果錯誤日誌並沒有顯示足夠的用於找到和解決您所遇問題的信息,通過將配置文件 (下面要討論) 中將LogLevel 語句從預設的 "info" 改為 "debug" 甚至是記錄每件事的 "debug2",以獲得 CUPS 日誌的詳細信息。
[編輯] 4.9.2. 配置
可以通過 /etc/cups/cupsd.conf 文件中的指令來配置通用 UNIX 列印系統伺服器的行為的。CUPS 配置文件與 Apache HTTP 伺服器的主配置文件語法相同,因此熟悉編輯 Apache 配置文件的用戶在編輯 CUPS 配置文件時會感到相當容易。在這裏將顯示一些您可能想要改變初始值的設置範例。
在編輯配置文件之前,您應該將原始文件做個副本並將其防寫,以便您可以將原始文件作為參考並在必要時重用它。
拷貝 /etc/cups/cupsd.conf 文件並對其防寫,可以在終端提示符后執行以下命令:
sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original sudo chmod a-w /etc/cups/cupsd.conf.original
- ServerAdmin:要配置指定 CUPS 伺服器管理員的郵件地位,只需用你喜歡的文本編輯器簡單編輯 /etc/cups/cupsd.conf 配置文件,並修改相應的 ServerAdmin 行即可。舉個例子,如果您是 CUPS 伺服器的管理員,並且您的郵件地址是'bjoy@somebigco.com',那麼您可以象下面這樣修改 ServerAdmin 行:
ServerAdmin bjoy@somebigco.com
關於 CUPS 伺服器配置文件中配置語句的更多範例,通過在終端提示符后輸入以下命令可以查閱相關的系統手冊頁:
man cupsd.conf
無論您在什麼時間修改了 /etc/cups/cupsd.conf 配置文件,您都需要重啟 CUPS 服務,在終端提示符后鍵入以下命令:
sudo /etc/init.d/cupsys restart
CUPS 伺服器的其它一些配置在文件 /etc/cups/cups.d/ports.conf 中:
- Listen:在 Ubuntu 的預設狀態下,CUPS 伺服器安裝后只監聽 IP 地址為 127.0.0.1 的環回介面。為了讓 CUPS 伺服器可以在網路適配器真正的 IP 地址上監聽,您必須要麼指定一個指定主機名、要麼指定一個IP 地址,隨您選擇。可以通過 Listen 語句來添加一個 IP 地址/埠對。例如:如果您的 CUPS 伺服器在一個區域網中,其 IP 地址為 192.168.10.250,您想要該子網中的其它系統能夠訪問它,您可以編輯 /etc/cups/cups.d/ports.conf 並如下所示添加一個 Listen 語句:
Listen 127.0.0.1:631 # existing loopback Listen Listen /var/run/cups/cups.sock # existing socket Listen Listen 192.168.10.250:631 # Listen on the LAN interface, Port 631 (IPP)
在上面的例子里,如果您不想 cupsd 監聽環回地址 (127.0.0.1) ,您可能註釋或刪除了相關語句。但最好保留它以監聽區域網 (LAN) 的乙太網介面。為了能監聽一個特定主機名所綁定的所有的網路介面,您可以為 socrates 主機名創建一個 Listen 條目,如下所示:
Listen socrates:631 # Listen on all interfaces for the hostname 'socrates'
或者忽略 Listen 語句並使用 Port 來代替,如:
Port 631 # Listen on port 631 on all interfaces
[編輯] 4.9.3. 引用
[編輯] HTTPD - Apache2 Web 伺服器
Apache 是在 GNU/Linux 系統中最常用的 Web 伺服器。Web 伺服器為客戶機所提交的網頁請求服務。客戶機一般通過網頁瀏覽器如 Firefox、Opera、Mozilla或IE來請求和查看網頁。
用戶輸入統一資源定位器 (URL) 來指向一個 Web 伺服器,並通過完全限定域名 (FQDN) 和路徑來請求資源。例如,要查看 Ubuntu 網站 的主頁,用戶只需要輸入 FQDN 即可。如果要請求關於 有償技術支援 的特定信息,用戶將在 FQDN 后輸入路徑。
用於傳輸網頁的最常用協議就是超文本傳輸協議 (HTTP)。也支援諸如基於安全套接層的超文本傳輸協議 (HTTPS) 以及用於上傳和下載文件的文件傳輸協議 (FTP) 等協議。
Apache Web 伺服器常與 MySQL 資料庫引擎、超文本處理器 (PHP) 腳本語言及其他流行的腳本語言如Python 和 Perl 組合在一起。這一組合被稱為 LAMP (Linux, Apache, MySQL and Perl/Python/PHP) ,並形成一個強大健壯的開發基於 Web 應用程式的開發平台。
[編輯] 4.10.1. 安裝
Apache2 web 伺服器在 Ubuntu Linux 中是可用的。要安裝 Apache2:
- 在終端提示符后輸入下列命令:
sudo apt-get install apache2
[編輯] 4.10.2. 配置
Apache 可以在純文本配置文件中通過 語句 來配置的。主配置文件叫 apache2.conf。此外,其外配置文件可以用 Include 語句來添加,也可以使用通配符來包含多個配置文件。任何語句都可能被放在這些配置文件的任何一個文件中。修改過的主配置文件只在 Apach2 啟動或重啟時才能被其識別。
伺服器也查看包含 mime 文件類型的文件;該文件名通過 TypesConfig 設置,預設情況下是mime.types。
預設的 Apache2 配置文件是 /etc/apache2/apache2.conf。您可以編輯該文件以配置 Apache2 伺服器。您可以配置埠號、文件根目錄、模塊、日誌文件及虛擬主機等。
[編輯] 4.10.2.1. 基本設置
本部分內容說明 Apache2 伺服器基本的配置參數。詳情請參閱 Apache2 文件
- Apache2 提供了一個友好虛擬主機的預設配置。它配置成單個預設虛擬主機 (使用 VirtualHost 語句) 。如果您有單個站點,可以修改或直接使用它。如果您有多個站點的話,可以將其作為其它虛擬主機的模板。如果對其不加理會,該預設虛擬主機將會作為您的預設網站提供服務,或者如果網站用戶所輸入的 URL 並沒有匹配您任何所定義站點的 ServerName 語句時,將看到該虛擬主機內容。要修改預設虛擬主機,可以編輯文件 /etc/apache2/sites-available/default。如果您希望配置一個新的虛擬主機或站點,在同一目錄中將拷貝該文件並將新文件重命名為您所想要的文件名,如sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mynewsite。編輯新文件並用下面的所描述的語句來配置新的站點:
- ServerAdmin 語句指定伺服器管理員的郵件地址,預設值是 webmaster@localhost。應該改成您的郵件地址 (如果您是伺服器管理員的話)。如果您的網站有問題,Apache2 將顯示包含該郵件地址的錯誤信息以便報告該問題。在 /etc/apache2/sites-available 目錄中您網站的配置文件里可以找到該語句。
- Listen 語句指定埠以及可選的 IP 地址,Apache2 將在其上監聽。如果 IP 地址沒有被指定,Apache2 將監聽所有指向其所運行機器上的 IP 地址。Listen 語句的預設值是 80。把其改成 127.0.0.1:80 將使 Apache2 只在您的環回介面上臨聽以致於它相對於 Internet 不可用。也可改變其監聽埠如81,或保持原樣以便正常操作。該語句可以在它自己的文件 /etc/apache2/ports.conf 中發現並修改。
- The ServerName 語句是可選的,它指明您站點要應答什麼 FQDN。預設虛擬主機沒有指定 ServName,因為它要應答沒有匹配其它虛擬主機 ServerName 語句的所有請求。如果您只獲得 ubunturocks.com 域名並希望在您的 Ubuntu 伺服器上只作它的主機,那麼在您虛擬主機配置文件中的 ServerName 語句值應該是 ubunturocks.com。在您先前創建的新虛擬主機文件 (/etc/apache2/sites-available/mynewsite) 中添加該語句。
您也可能要您的網站響應 www.ubunturocks.com 的請求,因為許多用戶會假定 www 前綴是適當的。可以使用 ServerAlias 語句來解決這個問題。您也可以在 ServerAlias 中使用通配符。例如,ServerAlias *.ubunturocks.com 將使您的網站響應任何域名以 .ubunturocks.com 結尾的請求。
- DocumentRoot 語句指定 Apache 將到哪兒去尋找站點文件,預設值為 /var/www。沒有站點配置在那裡,但如果您反註釋在 /etc/apache2/apache2.conf 中的 RedirectMatch 語句,請求將被重定向到 /var/www/apache2-default,那裡是預設的 Apache2 站點。在您站點的虛擬主機文件中改變該值,記住在必要時可以創建相應的目錄!
/etc/apache2/sites-available 目錄並 不會 被 Apache2 解析。在 /etc/apache2/sites-enabled 的軟鏈接指向 "可用的" 站點。使用 a2ensite (Apache2 啟用站點) 工具可以創建這些軟鏈接,如:sudo a2ensite mynewsite 這裏您站點的配置文件是 /etc/apache2/sites-available/mynewsite。同樣,a2dissite 工具將用來禁用站點。
[編輯] 4.10.2.2. 預設設置
這部分內容說明 Apache2 伺服器預設設置的配置。舉個例子,如果您添加一個虛擬主機,您為該虛擬主機配置的設置將優先於預設虛擬主機。如果在該虛擬主機的設置中有個語句沒有定義,那麼將使用預設值。
- 當用戶在目錄名后使用斜杠 (/) 來請求一個目錄索引時,The DirectoryIndex 將通過伺服器提供預設頁服務。
例如,當一個用戶請求 http://www.example.com/this_directory/ 頁時,他或她要麼得到 DirectoryIndex 頁,如果它存在的話;要麼得到一個伺服器生成的目錄列表,如果它不存在且設置了 Indexes 選項的話;要麼就得到一個無權訪問頁,如果它不存在且沒有設置 Indexes 選項的話。伺服器嘗試找到在 DirectoryIndex 語句中所列文件之一,並返回它所找到的第一個。如果它沒有找到任何一個文件且該目錄設置了 Indexes 選項,伺服器將生成並返回一個 HTML 格式的列表,包括該目錄中的子目錄和文件。預設值可以在 /etc/apache2/apache2.conf 文件中找到,是 " index.html index.cgi index.pl index.php index.xhtml"。因此,如果 Apache2 在所請求的目錄中找到任何一個匹配這些名字的文件,第一個將被顯示。
- ErrorDocument 語句允許您為 Apache 指定一個用於特定錯誤事件的文件。例如,如果用戶請求的資源不存在,那麼將引發 404 錯誤,而在 Apache2 的預設配置中,文件 /usr/share/apache2/error/HTTP_NOT_FOUND.html.var 將被顯示。該文件並不在伺服器的 DocumentRoot 中,但在 /etc/apache2/apache2.conf 中有個別名語句將到 /error 目錄的請求重定向到 /usr/share/apache2/error/ 中。要查看預設的 ErrorDocument 語句列表,可以使用命令:grep ErrorDocument /etc/apache2/apache2.conf
- 在預設狀態下,伺服器將傳輸日誌記錄在文件 /var/log/apache2/access.log 中。您可以在您每個虛擬主機站點的配置文件上用 CustomLog 語句來改變它,或者忽略它以接受在 /etc/apache2/apache2.conf 中指定的預設設置。您也可以通過 ErrorLog 語句來指定記錄錯誤日誌的文件,該文件預設是 /var/log/apache2/error.log。這些都從傳輸日誌中分離出來以便更好地在您的 Apache2 伺服器中發現和解決問題。您也可以指定 LogLevel (預設值是 "warn") 和 LogFormat (預設值參見 /etc/apache2/apache2.conf)
- 一些選項是基於每目錄而非每伺服器的。Option 是這些語句中的一個。Directory 段是被放在類 XML 標記中,如:
<Directory /var/www/mynewsite>
...
</Directory>
在 Directory 段中的 Options 語句接受一個或更多下面的用空格分隔的值 (包括其它):
- ExecCGI - 允許執行 CGI 腳本。如果該選項沒有設置,則 CGI 腳本將不能執行。
大多數文件不會作為 CGI 腳本運行的。這是非常危險的。CGI 腳本應該位於您 DocumentRoot 目錄以外與之分開的目錄中,並且只能該目錄才有 ExecCGI 選項設置。預設狀態下,CGI 腳本默認位於 /usr/lib/cgi-bin。
- Includes - 允許伺服器端包含。伺服器端包含允許一個 HTML 文件包含其他文件。這不是一個常用選項。更多信息參見 the Apache2 SSI 指南。
- IncludesNOEXEC - 允許伺服器端包含,但 CGI 腳本中的 #exec 和 #include 指令無效。
- Indexes - 如果 DirectoryIndex (如 index.html) 在請求的目錄沒存在的話,按一定方式顯示目錄內容列表。
- Multiview - 支援內容協商的多重視圖;該選項在預設狀態下出於安全的考慮是被禁用的。參見 Apache2 關於該選項的文件。
- SymLinksIfOwnerMatch - 僅在軟連接與其目的文件或目錄擁有相同所有者時才使用。
[編輯] 4.10.2.3. 虛擬主機設置
虛擬主機允許您在同一台機器上相對不同的 IP 地址、主機名或不同埠號運行不同的伺服器。例如,您可以運行使用虛擬主機在同一個 Web 伺服器上運行網站 http://www.example.com 和 http://www.anotherexample.com。這一選項適用於預設虛擬主機和基於 IP 的虛擬主機的 <VirtualHost> 語句,也適用於基於名稱的虛擬主機的 <NameVirtualHost> 語句。
虛擬主機的語句設置僅應用於特定的虛擬主機。如果一個語句在伺服器範圍中設置而沒有在虛擬主機設置中定義,那麼將使用預設設置。例如,您可以定義網路管理員的郵件地址而無需為每個虛擬主機都分別定義郵件地址。
為虛擬主機設置 DocumentRoot 語句到包含根文件 (如 index.html) 目錄。預設的 DocumentRoot 是 /var/www。
在 VirtualHost 段中的 ServerAadmin 語句是指用於錯誤頁的頁腳中的郵件地址,如果您想在錯誤頁的頁腳顯示郵件地址的話。
[編輯] 4.10.2.4. 伺服器設置
這部分內容說明如何配置基本的伺服器設置。
LockFile - 當伺服器編譯時使用了 USE_FCNTL_SERIALIZED_ACCEPT 或 USE_FLOCK_SERIALIZED_ACCEPT 參數時,使用 LockFile 語句來設置 lockfile 的路徑。它必須保存在本地磁碟上,它應該設置成預設值,除非日誌目錄被定位在 NFS 共享上。如果是這種情況,預設值應該被改為本地磁碟的位置並且其目錄只對 root 用戶可讀。
PidFile - PidFile 語句設置伺服器記錄其進程 ID (pid) 的文件。該文件只對 root 用戶可讀。在大多數情況下,應該保留其預設值。
User - 用戶語句設置被伺服器用於回應請求的用戶 ID。該設置決定伺服器的許可權。一些該用戶無法訪問的文件也無法被您網站的訪問者訪問。用戶預設值是 www-data。
除非您的確知道您在做什麼,否則請不要將 User 設為 root 用戶。用 root 作為 User 的值將會在您的 Web 伺服器中產生極大的安全漏洞。
Group 語句同 User 語句相似。Group 設置被伺服器用於回應請求的用戶組。預設的組也是 www-data。
[編輯] 4.10.2.5. Apache 模塊
Apache 是一個模塊化的伺服器。這就意味著在核心伺服器中只包括最基本的功能。擴展功能可以通過被引導進 Apache 的模塊來實現。預設情況下,基本模塊是在編譯時被包含進伺服器的。如果伺服器編譯成可以動態引導模塊,那麼模塊可以單獨編譯,並在任何時候使用 LoadModule 語句來添加。否則,Apache 必須在添加或刪除模塊時重新編譯。Ubuntu 編譯 Apache2 時是允許動態引導模塊的。配置語句通過將已有模塊放置 <IfModule> 塊中以便有條件地包含在配置語句中。您可以在您的 Web 伺服器上安裝和使用額外的 Apache2 模塊。您可以用 apt-get 命令來安裝 Apache2 模塊。如安裝 MYSQL 認證的 Apach2 模塊,您可以在終端提示符中運行以下命令:
sudo apt-get install libapache2-mod-auth-mysql
一旦您安裝了模塊,模塊將出現在 /etc/apache2/mods-available 目錄中。您可以使用 a2enmod 命令來啟用模塊。您也可以使用 a2dismod 命令來禁用模塊。一旦您啟用該模塊,該模塊將在 /etc/apache2/mods-enabled 目錄中出現。
[編輯] 4.10.3. HTTPS 配置
The mod_ssl 模塊為 Apache2 伺服器添加了一個重要的功能 - 通訊加密的能力。因此,當您的瀏覽器要用 SSL 加密通訊時,需要在瀏覽器導航欄中在輸入的統一資源定位器 (URL) 的開始處使用 https:// 前綴。
mod_ssl 模塊已經包含在 apache2-common 軟體包中。如果您安裝該軟體包,您可以在終端提示符之後執行下列命令啟用 mod_ssl 模塊:
sudo a2enmod ssl
[編輯] 4.10.3.1. 證書和安全
要設置您的安全伺服器,使用公共鑰創建一對公鑰私鑰對。大多數情況下,您發送您的證書請求 (包括您的公鑰),您公司證明材料以及費用到一個證書頒發機構 (CA)。CA 檢證證書請求及您的身份,然後將證書發回您的安全伺服器。
還有種辦法就是您可以創建您自己簽署的證書。然而請注意自己簽置的證書不應該用於生產環境。自已簽署的證書不會被用戶瀏覽器自動接受。瀏覽器將提示用戶接受證書並創建一個安全的連接。
一旦您有一個自己簽署的證書或一個您選擇的 CA 簽署的證書,您需要將它安裝在您的安全伺服器上。
[編輯] 4.10.3.2. 證書類型
您需要一個鑰匙和一個證書來操作您的安全伺服器,這意味著您可以生成自己簽署的證書或購買 CA 簽署的證書。由 CA 簽署的證書為您的伺服器提供兩個重要的功能:
- 瀏覽器 (通常) 會自動地識別證書並且在不提示用戶的情況下允許創建一個安全連接。
- 當一個 CA 生成一個簽署過的證書,它為提供網頁給瀏覽器的組織提供身份擔保。
多數支援 SSL 的 Web 瀏覽器都有一個 CA 列表,它們的證書會被自動接受。如果一個瀏覽器遇到一個其授權 CA 並不在列表中的證書,瀏覽器將詢問用戶是否接受或拒絕連接。
您可以為您的安全伺服器生成一個自己簽署的證書,但要知道自己簽署的證書並不提供與 CA 簽署的證書相同的功能。自己簽署的證書不會被多數 Web 瀏覽器自動識別,而且自己簽署的證書也不為任何提供網站的組織提供擔保。CA 簽署的證書為安全伺服器提供所有這些重要的功能。從 CA 得到證書的過程相當容易。下面簡要介紹一下:
- 創建一個私有和公共密鑰對
- 基於公鑰創建一個證書請求。證書請求包含您伺服器及公司信息。
- 發送證書請求,並隨之提供您的身份文件到一個 CA。我們不能告訴您選擇哪個證書頒發機構。您可以基於您以往的經驗或您朋友或同事的經驗或純粹基於經濟因素來決定。
一旦您選定一家 CA,您需要根據他們所提供的規程來從他們那裡獲得證書。
- 當 CA 確定您確實如您所聲稱的那樣時,他們將發給您一個數字證書。
- 在您的安全伺服器上安裝該證書,並開始進行安全事務處理
無論您是從一家 CA 那兒獲得證書或是生成您自己簽署的證書,第一步就是生成鑰匙。
[編輯] 4.10.3.3. 生成一個證書籤署請求 (CSR)
要生成證書籤署請求 (CSR),您應該創建您自己的鑰匙。您可以在終端提示符后運行以下命令以創建鑰匙:
openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus .....................++++++ .................++++++ unable to write 'random state' e is 65537 (0x10001) Enter pass phrase for server.key:
您現在可以輸入您的 passphrase。為了最大程度的安全,它至少應該包含八個字元。當指定 -des3 時最小長度為四個字元。它應該包含數字和/或標點符號,並且不應該是字典中的單詞。也請記住您的 passphrase 是大小寫敏感的。
再次輸入 passphrase 核對。一旦您再次輸入正確的話,伺服器密鑰就生成了並保存在 server.key 文件中。
您也可以不用 passphrase 來運行您的安全 Web 伺服器。這樣比較方便,因為在您啟動您的安全 Web 伺服器時您不需要每次都輸入 passphrase。但它也是相當不安全的,鑰匙的風險也同樣意味著伺服器的風險。
在任何情況下,您都可以選擇不用 passphrase 來運行您的安全 Web 伺服器,這可以通過在生成時不帶 -des3 參數來實現或者通過在終端提示符后執行以下命令:
openssl rsa -in server.key -out server.key.insecure
一旦您運行上述命令,不安全的鑰匙將被保存在 server.key.insecure 文件中。您可以使用該文件來生成沒有 passphrase 的 CSR。
要創建 CSR,可以在終端提示符后運行以下命令:
openssl req -new -key server.key -out server.csr
它將提示您輸入 passphrase。如果您輸入正確的 passphrase,它將提示您輸入公司名、站點名、郵件ID等。一旦您輸入了所有內容,您的 CSR 將被創建並被保存在 server.csr 文件中。您可以提交該 CSR 文件給一家 CA 去處理。CA 將使用該 CSR 並頒發證書。但是,您也可以使用該 CSR 生成自己簽署的證書。
[編輯] 4.10.3.4. 創建一個自己簽署的證書
要創建自己簽署的證書,在終端提示符下運行以下命令:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
上述命令將提示您輸入 passphrase。一旦您輸入正確的 passphrase,您的證書將被創建並將保存在 server.crt 文件中。
如果您的安全伺服器被用在生產環境中,你也許需要 CA 簽署的證書。並不推薦使用自己簽署的證書。
[編輯] 4.10.3.5. 安裝證書
您可以安裝鑰匙文件 server.key 和證書文件 server.crt 或由您的 CA 頒發的證書文件,在終端提示符后運行以下命令:
sudo cp server.crt /etc/ssl/certs sudo cp server.key /etc/ssl/private
您要添加以下四行到 /etc/apache2/sites-available/default 文件或您安全虛擬主機的配置文件。您要將它們放在 VirtualHost 部分。他們應該放在 DocumentRoot 行下面:
SSLEngine on SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key
HTTPS 在 443 埠監聽。您可以將下面一行添加到 /etc/apache2/ports.conf 文件中:
Listen 443
[編輯] 4.10.3.6. 訪問伺服器
一旦您安裝了您的證書,您應該重啟您的 Web 伺服器。您可以在終端提示符后運行以下命令以重啟您的 web 伺服器:
sudo /etc/init.d/apache2 restart
您應該記住並在每次您啟動您的安全 web 伺服器時輸入 passphrase。
您將被提示輸入 passphrase。一旦您輸入正常的 passphrase,將啟動安全 web 伺服器。您可以通過在您的瀏覽器地址欄上輸入 https://your_hostname/url/ 來訪問安全伺服器的頁面。
[編輯] 4.10.4. 引用
[編輯] Squid - 代理伺服器
Squid 是一個全功能的 web 代理與緩存伺服器應用程式,它為超文本傳輸協議 (HTTP)、文件傳輸協議 (FTP) 以及其他流行網路協議提供代理和緩存服務。Squid 可以實現安全套接層 (SSL) 請求的緩存和代理、域名伺服器 (DNS) 的緩存以及進行傳輸緩存。Squid 也支援大量不同的緩存協議,如 Internet 緩存協議 (ICP)、超文本緩存協議 (HTCP)、緩存陣列路由協議 (CARP) 以及 Web 緩存協同協議 (WCCP)。
Squid 代理緩存伺服器對於不同的代理和緩存伺服器需求來說是一個極好的解決方案,它適用於從分支機構到企業級的網路,訪問控制機制的粒度以及通過簡單網路管理協議 (SNMP) 對臨界參數的監視。當選擇計算機系統用於 Squid 代理或緩存伺服器時,請確保您的系統配置大量的物理內存以便 Squid 可以使用內存進行緩存以提高性能。
[編輯] 4.11.1. 安裝
在終端提示符后輸入下列命令安裝 Squid 伺服器:
sudo apt-get install squid squid-common
[編輯] 4.11.2. 配置
Squid 可以通過編輯在 /etc/squid/squid.conf 配置文件中的語句來進行配置。下面的範例說明一些語句的修改可能對 Squid 伺服器的影響。更多 Squid 的配置可以參閱參考章節。
在編輯配置文件之前,您應該生成一份原始文件副本並對其進行防寫,以便您可以將原始文件作為參考並在必要時重用它。
要拷貝 /etc/squid/squid.conf 文件並對其進行防寫,可以在終端提示符后使用以下命令:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original sudo chmod a-w /etc/squid/squid.conf.original
- 要將您的 Squid 伺服器監聽 TCP 埠 8888 以代替預設的 TCP 埠 3128,可以如下所示修改 http_port 語句:
http_port 8888
- 改變 visible_hostname 語句是為了給 Squid 伺服器一個特定的主機名。該主機名並必是計算機的主機名。在本範例中它被設為 weezie。
visible_hostname weezie
- 此外,使用 Squid 訪問控制,您可以通過 Squid 代理將 Internet 服務配置成僅限於有確定網際協議 (IP) 地址的用戶使用。例如,我們將舉例說明只讓 192.168.42.0/24 子網的用戶訪問:
將下列語句添加到您 /etc/squid/squid.conf 文件 ACL 部分的 底部:
acl fortytwo_network src 192.168.42.0/24
然後添加下列語句到你 /etc/squid/squid.conf 文件 http_access 部分的 頂部:
http_access allow fortytwo_network
- 使用 Squid 卓越的訪問控制功能,您可以通過 Squid 代理將 Internet 服務配置成僅限於在正常商務時間使用。例如,我們將舉例說明只允許來自 10.1.42.0/24 子網的商務僱員在周一到周五的上午 9:00 到 下午 5:00 時間段內訪問:
將下列語句添加到您 /etc/squid/squid.conf 文件 ACL 部分的 底部:
acl biz_network src 10.1.42.0/24 acl biz_hours time M T W T F 9:00-17:00
然後添加下列語句到你 /etc/squid/squid.conf 文件 http_access 部分的 頂部:
http_access allow biz_network biz_hours
在修改 /etc/squid/squid.conf 文件后,保存該文件並重啟 squid 伺服器應用程式以使改動生效。可以在終端提示符后使用下列命令:
sudo /etc/init.d/squid restart
[編輯] 4.11.3. 引用
[編輯] 版本控制系統
版本控制是管理改動信息的技術。它對於程式員而言一直是重要的工具,他們經常花時間對程式進行小改動之後又在第二天改回來。但版本控制軟體的用途卻遠遠超出了軟體開發的界線。無論何處您可以發現人們使用計算機去管理那些經常變動的信息,那裡都有使用版本控制的空間。
[編輯] 4.12.1. Subversion
Subversion 是一個開源的版本控制系統。使用 Subversion,您可以記錄源文件和文件的歷史。它管理文件和目錄。文件樹被放入了中心庫中。庫更象是一個普通的文件伺服器,除了它可以記住對文件和目錄的每次改變。
[編輯] 4.12.1.1. 安裝
要通過 HTTP 協議來訪問 Subversion 庫,您必須安裝和配置一個 web 伺服器。Apache2 被證明可以和 Subversion 一起工作。請參考 Apache2 章節的 HTTP 小節以安裝和配置 Apache2。要使用 HTTPS 協議訪問 Subversion 庫,您必須在您的 Apache2 web 伺服器上安裝和配置數字證書。請參考 Apache2 章節的 HTTPS 小節以安裝和配置數據證書。
要安裝 Subversion,可以在終端提示符后運行以下命令:
sudo apt-get install subversion libapache2-svn
[編輯] 4.12.1.2. 伺服器配置
這一步假定您已經在您的系統上安裝了上面提及的包。本部分內容說明如何創建一個 Subversion 庫和訪問計劃。 創建 Subversion 庫
Subversion 庫可以在終端提示符后使用以下命令創建:
svnadmin create /path/to/repos/project
[編輯] 4.12.1.3. 訪問方式
Subversion 庫可以通過許多不同的方式如通過在本地磁碟或不同的網路協議來訪問 (checked out)。然而,庫的位置經常是一個 URL。下表描述了不同的URL模式如何映射相應的訪問方式。 表 4-1 訪問方式
| 模式 | 訪問方式 |
| file:// | 直接訪問庫 (在本地磁碟) |
| http:// | 通過 WebDAV 協議訪問帶有 Subversion 的 Apache2 web 伺服器。 |
| https:// | 與 http:// 相同,但有 SSL 加密 |
| svn:// | 通過自身協議訪問 svnserve 服務 |
| svn+ssh:// | 與 svn:// 一樣,但使用 SSH 遂道 |
在本部分,我們將看到如何為所有這些訪問方式來配置 Subversion。這裏,我們只介紹基本用法。更多詳細、高級用法請參閱svn 書
[編輯] = 4.12.1.3.1. 直接訪問庫 (file://) =
這是所有訪問方式中最簡單的。它不要求運行任何 Subversion 伺服器進程。該訪問方式用於在同一台機器上訪問 Subversion。在終端提示符后輸入的命令如下所示:
svn co file:///path/to/repos/project
或
svn co file://localhost/path/to/repos/project
如果您沒有指定主機名,則需要三個斜杠 (///) -- 其中兩個是協議的 (這裡是 file),另一個是路徑前的。如果您指定了主機名,那麼您必須使用雙個斜杠 (//)。
庫許可權依賴於文件系統的許可權。如果用戶有讀/寫許可權,他可以從庫中檢出或者提交到庫。
[編輯] = 4.12.1.3.2. 通過 WebDAV 協議 (http://) 訪問 =
要通過 WebDAV 協議訪問 Subversion,您必須配置您的 Apache2 web 伺服器。您必須在您的 /etc/apache2/apache2.conf 文件中添加下面一小段:
<Location /svn> DAV svn SVNPath /path/to/repos AuthType Basic AuthName "Your repository name" AuthUserFile /etc/subversion/passwd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
接下來,您必須創建 /etc/subversion/passwd 文件。該文件包含用戶認證細節。要添加一個條目,如添加一個用戶,您可以在終端提示符后運行下列命令:
htpasswd2 /etc/subversion/passwd user_name
該命令將提示您輸入密碼。一旦您輸入密碼。該用戶將被添加。現在您可以運行下列命令來訪問庫:
svn co http://servername/svn
該密碼是以純文本傳輸的。如果您擔心密碼被截取,建議您使用 SSL 加密。相關細節,請參考下一章節。
[編輯] = 4.12.1.3.3. 通過帶有 SSL 加密的 WebDAV 協議來訪問 (https://) =
通過帶 SSL 加密的 WebDAV 協議 (https://) 訪問也使用 http:// 類似,只是您必須在您的 Apache2 web 伺服器中安裝和配置數字證書。
您可以安裝由證書籤署機構如 Verisign 頒發的數字證書。或者,您也可以安裝自己簽署的證書。
這一步假設您已經在您的 Apache2 web 伺服器中安裝和配置了數字證書。現在要訪問 Subversion 庫,請參考上一章節!除了所用協議之外訪問方式完全相同。您必須使用 https:// 來訪問 Subversion 庫。
[編輯] = 4.12.1.3.4. 通過自身協議訪問 (svn://) =
一旦 Subversion 庫被創建,您就可以配置訪問控制了。您可以通過編輯 /path/to/repos/project/conf/svnserve.conf 文件來配置訪問控制了。例如,要設置認證,您可以在配置文件中反註釋下列行:
在反注释上面几行之后,您可以在 passwd 文件中维护用户列表。因此编辑同一目录中的文件 passwd 并添加新用户。其语法如下: <pre><nowiki> username = password
更多細節,請參考該文件。
現在要從本機或不同機器通過 svn:// 自身協議來訪問 Subversion,您可以使用 svnserve 命令來運行 svnserver。其語法如下:
$ svnserve -d --foreground -r /path/to/repos For more usage details, please refer to: $ svnserve --help
一旦您運行該命令,將啟動 Subversion 並在預設埠 (3690) 監聽。要訪問計劃庫,您必須在終端提示符后運行下列命令:
svn co svn://hostname/project project --username user_name
根據伺服器的配置,出現密碼提示。一旦您認證通過,將從 Subversion 庫檢出代碼。要讓本地副本同步計劃庫,您可以運行 update 子命令。在終端提示符后的命令語法如下所示:
cd project_dir ; svn update
關於 Subversion 子命令的更多細節,您可以參考手冊。如為了學到關於 co (checkout) 命令的細節,請在終端提示符后運行下列命令:
svn co help
[編輯] = 4.12.1.3.5. 通過帶有 SSL 加密的自身協議 (svn+ssh://) 訪問 =
配置和伺服器處理與用 svn:// 方式是相同的。詳情請參考上面的章節。這一步假定您已經完成了上面的步驟並用 svnserve 命令啟動了 Subversion 伺服器。
它也假定 ssh 伺服器已經在該機上運行並允許連接。為了確認,請嘗試使用 ssh 登錄該機器。如果您可以登錄,一切就緒。如果不能登錄,請在繼續之前解決它。
svn+ssh:// 協議使用 SSL 加密來訪問 Subversion 庫。使用這種方式進行的數據傳輸是加密的。要訪問計劃庫 (如 checkout),您必須使用下面的命令語法:
svn co svn+ssh://hostname/var/svn/repos/project
使用這種訪問方式您必須使用全路徑 (/path/to/repos/project) 來訪問 Subversion 庫。
根據伺服器配置,它將提示輸入密碼。在使用 ssh 登錄時您必須輸入密碼。一旦您被認證通過之後,它將從 Subversion 庫中檢出代碼。
[編輯] 4.12.2. CVS 伺服器
CVS 是一個版本控制系統。您可以使用它來記錄源文件的歷史。
[編輯] 4.12.2.1. 安裝
在終端提示符后輸入下列命令來安裝 cvs:
sudo apt-get install cvs
在您安裝 cvs之後,您將安裝 xinetd 來啟動和停用 cvs 伺服器。在提示符后輸入下列命令以安裝 xinetd:
sudo apt-get install xinetd
[編輯] 4.12.2.2. 配置
一旦您安裝 cvs,將會自動初始化庫。預設狀態下,庫存放在 /var/lib/cvs 目錄下。您可以通過運行以下命令來改變該路徑:
cvs -d /your/new/cvs/repo init
一旦庫開始建立,您可以配置 xinetd 來啟動 CVS 伺服器。您可以拷貝以下行到 /etc/xinetd/cvspserver 文件。
service cvspserver
{
port = 2401
socket_type = stream
protocol = tcp
user = root
wait = no
type = UNLISTED
server = /usr/bin/cvs
server_args = -f --allow-root /var/lib/cvs pserver
disable = no
}
如果你改變預設的庫目錄 (/var/lib/cvs) 那麼您必須要編輯庫。
一旦您配置好 xinetd ,您就可以運行以下命令來啟動 cvs 伺服器了:
sudo /etc/init.d/xinetd start
您可以執行以下命令來確定 CVS 伺服器正在運行:
sudo netstat -tap | grep cvs
當您運行該命令時,您可以看到類似下面的行:
tcp 0 0 *:cvspserver *:* LISTEN
在這裏您可以繼續添加用戶,添加新的計劃以及管理 CVS 伺服器
CVS 允許用戶添加獨立於 OS 安裝的用戶。也許最容易的方式就是讓 CVS 使用 Linux 的用戶,雖然它有潛在的安全隱患。詳細請參考 CVS 手冊。
[編輯] 4.12.2.3. 添加計劃
本部分內容說明如何在 CVS 庫中添加新計劃。創建目錄以及該目錄所需的文件和源文件。現在運行下列命令將該計劃添加到 CVS 庫中:
cd your/project cvs import -d :pserver:username@hostname.com:/var/lib/cvs -m "Importing my project to CVS repository" . new_project start
您可以使用 CVSROOT 環境變數來保存 CVS 根目錄。一旦您導出 CVSROOT 環境變數,您可以在上面的 cvs 命令中避免使用 -d 選項。
字元串 new_project 是一個 vendor 標籤,start 是一個版本標籤。它們在此沒有任何用處,但由於 CVS 要求要有它們,所以它們必須出現。
當您新添計劃時,您所用的 CVS 用戶必須對 CVS 庫 (/var/lib/cvs) 有寫許可權。預設狀態下,src 組有對 CVS 庫的寫許可權,因此,您可以添加用戶到該組,然後就該用戶就可以在 CVS 庫中添加和管理計劃了。
[編輯] 4.12.3. 引用
Subversion 書 (使用Subversion進行版本控制)
[編輯] 資料庫
Ubuntu 提供兩個資料庫伺服器。它們是:
- MySQL™
- PostgreSQL
它們位於主軟體庫中。該部分內容說明如何安裝和配置這些資料庫伺服器。
[編輯] 4.13.1. MySQL
MySQL 是一個快速、多線程、多用戶、強大的 SQL 資料庫伺服器。它旨在成為能用於大型應用、高負載的生產系統以及大規模部署的軟體。
[編輯] 4.13.1.1. 安裝
要安裝 MySQL,可以在終端提示符后運行下列命令:
sudo apt-get install mysql-server mysql-client
一旦安裝完成,MySQL 伺服器應該自動啟動。您可以在終端提示符后運行以下命令來檢查 MySQL 伺服器是否正在運行:
sudo netstat -tap | grep mysql
當您運行該命令時,您可以看到類似下面的行:
tcp 0 0 localhost.localdomain:mysql *:* LISTEN -
如果伺服器不能正常運行,您可以通過下列命令啟動它:
sudo /etc/init.d/mysql restart
[編輯] 4.13.1.2. 配置
預設狀態下,管理員密碼是沒有設置的。一旦您安裝了 MySQL,您必須要做的第一件事就是配置 MySQL 的管理員密碼。要做到這一點,可以運行以下命令:
sudo mysqladmin -u root password newrootsqlpassword sudo mysqladmin -u root -h localhost password newrootsqlpassword
您可以編輯 /etc/mysql/my.cnf 文件來進行基本設置 -- 日誌文件、埠號等。詳情請參考 /etc/mysql/my.cnf 文件。
[編輯] 4.13.2. PostgreSQL
PostgreSQL 是一個面向對象的資料庫系統,它有著傳統商業資料庫系統和下一代 DBMS 系統所增進的功能。
[編輯] 4.13.2.1. 安裝
要安裝 PostgreSQL,可以在命令提示符后運行下列命令:
sudo apt-get install postgresql
一旦安裝完成,您就要按您的需要配置 PostgreSQL 伺服器,儘管預設配置已經可以使它可以正常運行了。
[編輯] 4.13.2.2. 配置
預設狀態下,通過 TCP/IP 的連接是被禁用的。PostgreSQL 支援多客戶認證方式。其中 IDENT 認證方式被默認使用。請參考 PostgreSQL 管理員指南。
接下來的討論假定您希望啟用 TCP/IP 連接並對客戶認證使用 MD5 模式。PostgreSQL 配置文件被保存在 /etc/postgresql/<version>/main /etc/postgresql/7.4/main
要配置 ident 認證,請在 /etc/postgresql/7.4/main/pg_ident.conf 文件中添加。
要啟用 TCP/IP 連接,編輯文件 /etc/postgresql/7.4/main/postgresql.conf。
找到 #tcpip_socket == false 行並將其改為 tcpip_socket == true。如果您知道您正在做什麼,那麼您也可以編輯其他所有參數。詳情請參考配置文件或 PostgreSQL 文件。
預設狀態下,沒有為 MD5 客戶端認證設置用戶證書。因此,首先必須將 PostgreSQL 伺服器配置成使用 trust 客戶端認證,用以連接資料庫。配置密碼並將配置恢復成使用 MD5 客戶端認證。要啟用 trust 客戶端認證,可編輯文件 /etc/postgresql/7.4/main/pg_hba.conf
註釋所有使用 ident 和 MD5 客戶端認證的行並添加下列行:
local all postgres trust sameuser
然後運行下列命令啟動 PostgreSQL 伺服器:
sudo /etc/init.d/postgresql start
一旦 PostgreSQL 伺服器成功啟動,在終端提示符后運行下面的命令以連接預設的 PostgreSQL 模板資料庫。
psql -U postgres -d template1
上面的命令是以用戶 postgres 的身份連接 PostgreSQL 的 template1 資料庫。一旦您連到 PostgreSQL 伺服器,您將會在 SQL 提示符下。您可以在 psql 提示符中運行下列命令來為用戶 postgres 配置密碼。
template1=# ALTER USER postgres with encrypted password 'your_password';
在配置密碼后,編輯文件 /etc/postgresql/7.4/main/pg_hba.conf 以使用 MD5 認證:
註釋掉最近添加的 trust 行並添加下面行:
local all postgres md5 sameuser
無論如何上面配置並不完整。更多的配置參數請參考 PostgreSQL 管理員指南。
[編輯] 郵件服務
在網路或 Internet 上從一個人得到郵件給另一個人的處理過程包含許多系統的協同工作。這些系統中的每一個都必須配置正確以便可以正常工作。發送者使用一個 郵件用戶代理 (MUA),或郵件客戶端通過一個或多個 郵件傳輸代理 (MTA) 來發送信息,最後一個將信息送到 郵件投遞代理 (MDA) 以便將其投遞到接受者的收件箱中。該信息將會被接受者郵件客戶端檢索到,通常是通過 POP3 或 IMAP 伺服器。
[編輯] 4.14.1. Postfix
Postfix 是 Ubuntu 中預設的郵件傳輸代理 (MTA)。它試圖變得快捷、易於管理和安全。它與 MTA sendmail 兼容。這部分內容說明如何安裝和配置 postfix。還說明如何將它設置成使用安全連接的 SMTP 伺服器 (為了安全發送郵件)。
[編輯] 4.14.1.1. 安裝
要安裝帶有 SMTP-AUTH 和 傳輸層安全 (TLS) 的 postfix,運行下列命令:
sudo apt-get install postfix
當安裝進程提問時簡單地按回車,下面將詳細說明相關配置。
[編輯] 4.14.1.2. 基本配置
要配置 postfix,運行下列命令:
sudo dpkg-reconfigure postfix
用戶界面將顯示。在每一屏中,選擇下列值:
**** Ok **** Internet 站点 **** NONE **** mail.example.com **** mail.example.com, localhost.localdomain, localhost **** No **** 127.0.0.0/8 **** Yes **** 0 **** + **** 全部
把 mail.example.com 作為您的郵件伺服器的主機名。
[編輯] 4.14.1.3. SMTP 認證
下一步是為 postfix 的 SMTP AUTH 配置使用 SASL。與其直接編輯配置,不如使用 postconf 命令配置所有 postfix 參數。配置參數被保存在 /etc/postfix/main.cf 文件中。如果您希望更新配置一項參數,您可以運行命令或手工在文件中修改。
- 配置 Postfix 使用 SASL (saslauthd) 的 SMTP AUTH :
postconf -e 'smtpd_sasl_local_domain =' postconf -e 'smtpd_sasl_auth_enable = yes' postconf -e 'smtpd_sasl_security_options = noanonymous' postconf -e 'broken_sasl_auth_clients = yes' postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination' postconf -e 'inet_interfaces = all' echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf
- 接下來為 TLS 配置數字證書。當被詢問問題時,按照提示並適當回答。
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 chmod 600 smtpd.key openssl req -new -key smtpd.key -out smtpd.csr openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt openssl rsa -in smtpd.key -out smtpd.key.unencrypted mv -f smtpd.key.unencrypted smtpd.key openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650 mv smtpd.key /etc/ssl/private/ mv smtpd.crt /etc/ssl/certs/ mv cakey.pem /etc/ssl/private/ mv cacert.pem /etc/ssl/certs/
您可以從證書頒發機構得到數字證書。或者您可以創建您自己的證書。詳情參考 第4.10.3.4節 ― 創建一個自己簽署的證書。
- 配置 Postfix 對接收或發送郵件進行 TLS 加密:
postconf -e 'smtpd_tls_auth_only = no' postconf -e 'smtp_use_tls = yes' postconf -e 'smtpd_use_tls = yes' postconf -e 'smtp_tls_note_starttls_offer = yes' postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key' postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt' postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem' postconf -e 'smtpd_tls_loglevel = 1' postconf -e 'smtpd_tls_received_header = yes' postconf -e 'smtpd_tls_session_cache_timeout = 3600s' postconf -e 'tls_random_source = dev:/dev/urandom' postconf -e 'myhostname = mail.example.com'
在您運行所有命令之後,postfix 的 SMTP AUTH 將被配置。將為 TLS 創建自己簽署的證書並與 postfix 一起配置。
現在文件 /etc/postfix/main.cf 看上去就象 這樣。
postfix 初始配置完成。運行下列命令以開始 postfix 守護程式:
sudo /etc/init.d/postfix start
現在 postfix 已經被安裝、配置及成功運行。Postfix 支援在 RFC2554 中定義的 SMTP AUTH。它基於 SASL。無論如何在您使用 SMTP 之前必須設置 SASL 認證。
[編輯] 4.14.1.4. 配置 SASL
libsasl2、sasl2-bin 和 libsasl2-modules 對於使用 SASL 的 SMTP AUTH 是必需的。如果您沒有安裝它們的話,您可以安裝這些應用程式。
apt-get install libsasl2 sasl2-bin
要讓其正常工作的話做一些改動是必須的。因為 Postfix 是被 chroot 在 /var/spool/postfix 中運行,SASL 需要被配置在假根目錄中運行 (從 /var/run/saslauthd 到 /var/spool/postfix/var/run/saslauthd):
mkdir -p /var/spool/postfix/var/run/saslauthd rm -rf /var/run/saslauthd
要激活 saslauthd,編輯文件 /etc/default/saslauthd,並修改或添加 START 變數。為了將 saslauthd 配置成在假根目錄中運行,添加 PWDIR、PIDFILE 和 PARAMS 變數。最終,隨您所好配置 MECHANISMS 變數。該文件看起來象這樣:
START=yes
PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"
MECHANISMS="pam"
如果您喜歡,您可以使用 shadow 代替 pam。這將使用 MD5 哈希密碼傳輸並更為安全。需要認證的用戶名和密碼將是您正在伺服器上使用系統的那些用戶。
接下來更新 /var/spool/portfix/var/run/saslauthd 的 dpkg "state"。saslauthd 初始化腳本將使用該設置來創建有著適當許可權和所有權的目錄:
dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd
[編輯] 4.14.1.5. 測試
SMTP AUTH 配置完成。現在是啟動並測試設置的時候了。您可以運行下列命令來啟動 SASL 守護程式:
sudo /etc/init.d/saslauthd start
要查看 SMTP-AUTH 和 TLS 是否正常工作,運行下列命令:
telnet mail.example.com 25
在您建立到 postfix 郵件伺服器連接之後,輸入:
ehlo mail.example.com
如果您看到包括下列行時,那麼一切工作正常。輸入 quit 退出。
250-STARTTLS 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250 8BITMIME
[編輯] 4.14.2. Exim4
Exim4 是另一個由劍橋大學開發的用於連接 Internet 的 Unix 系統上的消息傳輸代理 (MTA)。安裝Exim可以代替 sendmail,雖然 exim 的配置與 sendmail 是非常不同。
[編輯] 4.14.2.1. 安裝
要安裝 exim4,運行下列命令:
sudo apt-get install exim4 exim4-base exim4-config
[編輯] 4.14.2.2. 配置
要配置 exim4,運行下列命令:
sudo dpkg-reconfigure exim4-config
用戶界面將顯示。該用戶界面讓您配置許多參數。例如,在 exim4 中配置文件被分成多個文件。如果您希望將它們放在一個文件中,您可以根據該用戶界面進行配置。
您在用戶界面配置的所有參數被保存在 /etc/exim4/update-exim4.conf.conf 文件。如果您希望重新配置,您可以重新運行配置嚮導或用您喜歡的編輯器手工編輯該文件。一旦您配置好了,您可以運行下列命令來生成主配置文件:
sudo update-exim4.conf
生成主配置文件且被保存在 /var/lib/exim4/config.autogenerated.
在任何時候,你都不要手工編輯主配置文件 /var/lib/exim4/config.autogenerated。它在每次您運行 update-exim4.conf 之後會自動更新。
您可以運行下列命令以啟動 exim4 守護程式。
sudo /etc/init.d/exim4 start
TODO: 該內容將覆蓋 exim4 的 SMTP AUTH 配置。
[編輯] 4.14.3. Dovecot 伺服器
Dovecot 是一個主要出於安全考慮編寫的郵件投遞代理。它支援主要收件箱格式:mbox 或 Maidir。這部分說明如何將它設為一個 imap 或 pop3 伺服器。
[編輯] 4.14.3.1. 安裝
要安裝 dovecot,在命令提示符中運行下列命令:
sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d
[編輯] 4.14.3.2. 配置
要配置 dovecot,您可以編輯文件 /etc/dovecot/dovecot.conf。您可以選擇您所使用的協議。它可以是 pop3、pop3 (安全 pop3)、imap 和 imaps (安全 imap)。對這些協議的說明是超出該指南範圍的。更多信息請參考 wikipedia 關於 POP3 和 IMAP 的文章。
IMAPS 和 POP3S 比簡單 IMAP 和 POP3 更安全,因為他們使用 SSL 加密連接。一旦您選擇了協議,修改在文件 /etc/dovecot/dovecot.conf 中的下列行:
protocols = pop3 pop3s imap imaps
當 dovecot 啟動時協議開始生效。接下來在文件 /etc/dovecot/dovecot.conf 的 pop3 部分添加下列行:
pop3_uidl_format = %08Xu%08Xv
然後選擇您所用的收件箱。Dovecot 支援 maildir 和 mbox 格式。大多數通常使用 mailbox 格式。它們都有自己的優點,並且在 dovecot 網站 上討論。
一旦您選擇了您的收件箱格式后,就可以編輯文件 /etc/dovecot/dovecot.conf 並修改下列行:
default_mail_env = maildir:~/Maildir # (for maildir)
或
default_mail_env = mbox:~/mail:INBOX=/var/spool/mail/%u # (for mbox)
如果接收到的郵件類型與您已經配置不同,那麼您要配置您的郵件傳輸代理 (MTA) 用來將該郵件傳輸到這種類型的收件箱中。
一旦您已經配置好了 dovecot,啟動 dovecot 守護程式以測試您的設置:
sudo /etc/init.d/dovecot start
如果您啟用 imap 或 pop3,您也可以試著用命令 telnet localhost pop3 或 telnet localhost imap2 登錄。如果您看到類似下面的東西,那麼安裝就成功了:
bhuvan@rainbow:~$ telnet localhost pop3 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. +OK Dovecot ready.
[編輯] 4.14.3.3. Dovecot SSL 配置
要配置 dovecot 使用 SSL,您可以編輯文件 /etc/dovecot/dovecot.conf 並修改下列行:
ssl_cert_file = /etc/ssl/certs/dovecot.pem ssl_key_file = /etc/ssl/private/dovecot.pem ssl_disable = no disable_plaintext_auth = no
當您安裝 dovecot 時,會通過它自動創建 cert 和 key 文件。請注意這些鑰匙沒被簽名並會在客戶端連接時給出 "bad signature" 的錯誤。要避免這一點,您可以使用商業證書,甚至更好,使用您自己簽署的 SSL 證書。
[編輯] 4.14.3.4. 郵件伺服器的防火牆配置
要從另一台計算機訪問您的郵件伺服器,您必須配置您的防火牆以允許連接伺服器必要的埠。
**** IMAP - 143 **** IMAPS - 993 **** POP3 - 110 **** POP3S - 995
[編輯] 4.14.4. Mailman
Mailman 是一個管理電子郵件討論及電子通訊列表的開源程式。許多開源的郵件列表 (包括所有的 Ubuntu 郵件列表)使用 Mailman 作為他們的郵件列表軟體。它是強大的且易於安裝和維護。
[編輯] 4.14.4.1. 安裝
Mailman 為管理員和用戶提供一個 web 界面。因此,它要求 apache 要有 mod_perl 的支援。Mailman 使用外部郵件伺服器來發送和接收郵件。它可以與下列郵件伺服器很好的工作:
- Postfix
- Exim
- Sendmail
- Qmail
我們將看到如何安裝 mailman、apache web 伺服器和 Exim 郵件伺服器。如果您希望安裝 mailman 和一個不同的郵件伺服器,請參考參考部分。
[編輯] = 4.14.4.1.1. Apache2 =
要安裝 apache2 您可以參考 第4.10.1節 ― 安裝。
[編輯] = 4.14.4.1.2. Exim4 =
要安裝 Exim4 您可以在終端提示符后運行下列命令:
sudo apt-get install exim4 sudo apt-get install exim4-base sudo apt-get install exim4-config
一旦安裝好 exim4,配置文件被保存在 /etc/exim4 目錄中。預設情況下,在 ubuntu 中,exim4 配置文件被分成不同的文件。您可以通過配置 /etc/exim4/update-exim4.conf 中的下列變數來改變這一現狀:
- dc_use_split_config='true'
[編輯] = 4.14.4.1.3. Mailman =
要安裝 Mailman,在終端提示符后運行下列命令:
sudo apt-get install mailman
它複製安裝文件到 /var/lib/mailman 目錄,將 CGI 腳本安裝到 /usr/lib/cgi-bin/mailman目錄,創建 list linux 用戶,創建 list linux 用戶組。mailman 進程將以該用戶運行。
[編輯] 4.14.4.2. 配置
本節假定您已經成功安裝 mailman、apache2 和exim4。現在您只需要配置它們。
[編輯] = 4.14.4.2.1. Apache2 =
一旦 apache2 安裝之後,您可以在 /etc/apache2/apache2.conf 文件添加下列行:
Alias /images/mailman/ "/usr/share/images/mailman/" Alias /pipermail/ "/var/lib/mailman/archives/public/"
Mailman 使用 apache2 來運行它的 CGI 腳本。mailman 的 CGI 腳本被安裝在 /usr/lib/cgi-bin/mailman 目錄中。因此 mailman 的 url 將是 http://hostname/cgi-bin/mailman/。如果您希望改變這一狀況,您可以修改 /etc/apache2/apache2.conf 文件。
[編輯] = 4.14.4.2.2. Exim4 =
一旦 Exim4 安裝之後,您可以在終端提示符后使用下列命令啟動 Exim 伺服器:
sudo apt-get /etc/init.d/exim4 start
為了使 mailman 可以和 exim4 一起工作,您需要配置 exim4。正如先前所說的那樣,在預設狀態下 exim4 使用不同類型的多個配置文件。詳情請參考 Exim 網站。要運行 mailman,我們可以新建一個配置文件到下列配置類型:
- 主
- 傳輸
- 路由器
Exim 按這些小的配置文件順序創建出一個主配置文件。因此這些配置文件的順序是非常重要的。
[編輯] = 4.14.4.2.3. 主 =
所有隸屬於主類別的配置文件都被保存在 /etc/exim4/conf.d/main/ 目錄中。您可以將下面的內容添加到一個名為 04_exim4-config_mailman 的新文件中:
MM_HOME=/var/lib/mailman
MM_UID=list
MM_GID=list
domainlist mm_domains=hostname.com↵
MM_WRAP=MM_HOME/mail/mailman
MM_LISTCHK=MM_HOME/lists/${lc::$local_part}/config.pck
[編輯] = 4.14.4.2.4. 傳輸 =
所有隸屬於傳輸類型的文件被保存在 /etc/exim4/conf.d/transport/ 目錄中。您可以將下面的內容添加到一個名為 40_exim4-config_mailman 的新文件中:
mailman_transport:
driver = pipe
command = MM_WRAP \
'${if def:local_part_suffix \
{${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}} } \
{post}}' \
$local_part
current_directory = MM_HOME
home_directory = MM_HOME
user = MM_UID
group = MM_GID
[編輯] = 4.14.4.2.5. 路由器 =
所有隸屬於路由類的所有配置文件都被保存在 /etc/exim4/conf.d/router/ 目錄中。您可以將下列內容添加到名為 101_exim4-config_mailman 的新文件中:
mailman_router: driver = accept require_files = MM_HOME/lists/$local_part/config.pck local_part_suffix_optional local_part_suffix = -bounces : -bounces+* : \ -confirm+* : -join : -leave : \ -owner : -request : -admin transport = mailman_transport
主類和傳輸類的配置文件的順序可以隨意。但路由類的配置文件的順序必須相同。該文件必須在 200_exim4-config_primary 文件之前出現。如果兩個配置文件包含相同類型的信息。第一個文件優先。詳情請參閱參考部分。
[編輯] = 4.14.4.2.6. Mailman =
安裝 mailman 之後,您可以使用下列命令來運行它:
sudo /etc/init.d/mailman start
一旦 mailman 安裝,您必須創建預設的郵件列表。運行下列命令以創建郵件列表:
sudo /usr/sbin/newlist mailman Enter the email address of the person running the list: bhuvan at ubuntu.com Initial mailman password: To finish creating your mailing list, you must edit your /etc/aliases (or equivalent) file by adding the following lines, and possibly running the `newaliases' program: ## mailman mailing list mailman: "|/var/lib/mailman/mail/mailman post mailman" mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/var/lib/mailman/mail/mailman join mailman" mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman" mailman-request: "|/var/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" Hit enter to notify mailman owner... #
我們已經把 exim 配置成可以識別所有來自 mailman 的郵件。因此並不需要在 /etc/aliases 中添加任何新的條目。如果您對配置文件做了改動,請確保您在進入下一章節之前重啟了這些服務。
[編輯] 4.14.4.3. 管理
我們假定您已經進行了預設安裝。mailman 的 cgi 腳本應該在 /usr/lib/cgi-bin/mailman/ 目錄中。Mailman 提供了一個基於 web 管理工具。可以在您的瀏覽器輸入下列 url 訪問該頁:
http://hostname/cgi-bin/mailman/admin
預設的郵件列表 mailman 將出現在屏幕上。如果您點擊郵件列表名,它將詢問您的認證密碼。如果您輸入了正確的密碼,您將可以改變該郵件列表的管理設置。您可以使用命令行工具 (/usr/sbin/newlist) 創建一個新的郵件列表,您也可以使用 web 界面來創建新的郵件列表。
[編輯] 4.14.4.4. 用戶
Mailman 為用戶提供了一個 web 界面,可以在您的瀏覽器中輸入下列 url 來訪問該頁:
http://hostname/cgi-bin/mailman/listinfo
預設郵件列表 mailman 將出現在屏幕上。如果您點擊郵件列表名,它將顯示訂閱表單。您可以輸入您的郵件地址、姓名 (可選)及密碼來訂閱。一個邀請郵件將發送給您。您可以根據該郵件的指示完成訂閱。
[編輯] 4.14.4.5. 引用
指南 - 一起使用 Exim 4 和 Mailman 2.1
[編輯] Windows 聯網
計算機網路通常包含不同的系統,雖然使用全由 Ubuntu 桌面計算機和伺服器計算機構成的網路是有趣的,但一些網路環境還是需要 Ubuntu 和 Microsoft® Windows® 這兩個系統協同工作。Ubuntu 伺服器指南中的這部分內容介紹配置你 Ubuntu 伺服器的原理及所用工具,以便同 Windows 計算機共享網路資源。
[編輯] 介紹
將你的 Ubuntu 系統與 Windows 客戶機成功連網包括為 Windows 環境提供和整合常用服務。這些服務有助於網路中計算機和用戶的數據和信息共享,可以將它們按功能劃分為以下三大類:
- 文件和列印共享服務。Server Message Block (SMB) 協議使得在網路上共享文件、文件夾、卷和印表機變得容易。
- 目錄服務。通過Lightweight Directory Access Protocol (LDAP) 和 Microsoft Active Directory®技術來共享網路計算機和用戶的重要信息。
- 認證和許可權。建立網路計算機和用戶身份並通過使用文件許可權、組策略和Kerberos認證服務等原理和技術來確定計算機或用戶信息。
幸運的是,你的 Ubuntu 系統可以給 Windows 客戶機提供上述所有的服務並且在它們之間共享網路資源。你的 Ubuntu 系統中用來和 Windows 網路互連的一個基本軟體是包含 SMB 伺服器應用程式及其工具。Ubuntu 伺服器指南的這部分將簡要介紹一下 SAMBA 套件中伺服器應用程式及工具的安裝和簡單配置。此外,SAMBA的詳細文件和信息已超出了本文件的編製範圍,您可以在 SAMBA 網站 上找到。
[編輯] 安裝 SAMBA
欲安裝 SAMBA 伺服器應用程式,請在提示符里輸入如下命令:
sudo apt-get install samba
[編輯] 配置 SAMBA
您可以通過編輯 /etc/samba/smb.conf 文件來配置 SAMBA 服務:用以改變預設設置或新增設置。可用設置項的更多信息可以查看 /etc/samba/smb.conf 文件中的註釋,或在終端提示符后輸入以下命令查看 /etc/samba/smb.conf 手冊來獲得:
man smb.conf
在編輯配置文件之前,您應該保留一份原文件的副本,不對其作修改,以便今後必要時可參考和重用這份原始配置。
備份 /etc/samba/smb.conf 文件:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.original
然後編輯 /etc/samba/smb.conf 文件,進行相應的修改。
[編輯] 5.3.1. 伺服器
除了文件及列印共享伺服器應用程式 SAMBA 之外,Ubuntu 還包括了其他強大的伺服器應用程式,它們設計成象真正的 Windows 伺服器一樣,可以向 Windows 客戶端提供相同的網路附加服務功能。例如,Ubuntu 可以提供統一的網路資源,如使用目錄服務的計算機和用戶,方便的身份識別,以及通過認證服務來獲得授權的計算機和用戶。
下一節將討論 SAMBA 及其支援技術,如 Lightweight Directory Access Protocol (LDAP) 伺服器和 Kerberos 認證伺服器的更多細節。你也可以學到SAMBA配置文件中的一些有用的指令,以方便同 Windows 客戶機和伺服器集成。
[編輯] 5.3.1.1. Active Directory
Active Directory 是 Microsoft 專用的目錄服務實現,用來提供網路資源和用戶的共享信息。除了提供這些信息的統一源之外,Active Directory 也擔任網路統一身份安全認證的角色。Active Directory 融合了通常獨立、專用的目錄系統中簡單集成,管理和網路資源安全等功能。SAMBA 軟體包可以被配置成使用由 Windows 域控制器提供的 Active Directory 服務。
[編輯] = 5.3.1.1.1. LDAP =
LDAP 伺服器應用程式給 Windows 計算機提供了與 Microsoft Active Directory 服務非常相似的目錄服務功能。這些服務包括管理加入網路的計算機、用戶、計算機組和用戶組的身份和關係,為描述、定位和管理這些資源提供一個統一的方法。在你的 Ubuntu 系統中所使用的是 LDAP 的一個自由有效的實現,名為OpenLDAP,這個名為slapd 和 slurpd的服務守護程式負責處理 OpenLDAP 目錄請求和 LDAP 伺服器與另一個 Ubuntu 伺服器之間的目錄數據傳送。只要 SAMBA編譯時加上LDAP 支援,OpenLDAP 與 SAMBA 一起就可以和Windows域伺服器一樣以相同的方式提供文件、列印和目錄服務。
[編輯] = 5.3.1.1.2. Kerberos =
Kerberos 安全認證系統是一個通過一台集中的伺服器給計算機和用戶提供認證的標準服務,它允許從其他任何使用 Kerberos 的計算機那裡接受加密的授權票據。Kerberos 驗證的好處包括相互驗證,委派驗證,互操作性和簡單信任管理。在 Ubuntu 中處理 Kerberos 驗證和 Kerberos 資料庫管理的主要伺服器守護程式是 krb5kdc 和 kadmin。相對於 Windows 域控制器SAMBA 可以使用 Kerberos 作為一個用來給計算機和用戶授權的機制。為了做到這些,Ubuntu 系統必須安裝 Kerberos,同時 /etc/samba/smb.conf 也需要修改以選擇適當的realm 和 security 模式。舉個例子,編輯/etc/samba/smb.conf文件,並將下列語句:
realm = DOMAIN_NAME security = ADS
添加到文件中並保存
請確定上面示例中的 DOMAIN_NAME 已經被你的 Windows 域名所代替。
你需要重啟 SAMBA 進程以使改變產生作用。重啟 SAMBA 進程可以在終端提示符后輸入以下命令:
sudo /etc/init.d/samba restart
[編輯] 5.3.1.2. 計算機帳號
目錄服務中計算機帳號唯一指定網路中的計算機系統,甚至在安全方面就象對待用戶一樣。計算機賬號可以象用戶賬號一樣有密碼,同樣也象用戶賬號一樣訪問網路資源受授權影響。舉個例子,如果一個在特定網路中有著合法賬號網路用戶,企圖給一個沒有合法計算機賬號的計算機上的網路資源授權時,根據網路策略,如果用戶企圖驗證的計算機是未經授權的計算機,則用戶也許會被拒絕訪問資源。
計算機帳號可以會被添加到 SAMBA 的密碼文件中,首先該計算機的名字在本地密碼庫中做為一個合法用戶帳號被添加。添加一個計算機或機器帳號到 SAMBA 的密碼文件可以在終端提示符后使用 smbpasswd 命令,如下所示:
sudo smbpasswd -a -m COMPUTER_NAME
請確定示例中的 COMPUTER_NAME 被那台你希望添加機器賬號的計算機實際名字所代替。
[編輯] 5.3.1.3. 文件許可權
文件許可權清楚地定義計算機和用戶對指定的目錄、文件或一組文件的權力。這些許可權可以通過編輯/etc/samba/smb.conf 來定義並明確被定義文件共享的許可權。舉個例子,如果你定義了一個叫 sourcedocs 的 SAMBA 共享,並希望給 planning 用戶組以 read-only 只讀許可權,但允許叫 authors 的用戶組和名為 richard 的用戶可以寫該共享,那麼你可以編輯/etc/samba/smb.conf 文件,並將下列條目放在 [sourcedocs] 條目下:
read list = @planning write list = @authors, richard
將其保存在 /etc/samba/smb.conf中,以使其生效。
另一個適合的許可權就是對特定的共享資源聲明 administrative 許可權。有著administrative 許可權的用戶可以讀、寫或修改任何包含在用戶已明確給予 administrative 許可權的資源里的任何信息。舉個例子,如果你想給用戶 melissa 在示例 sourcedocs 共享上的 administrative 許可權,你可以編輯/etc/samba/smb.conf 文件,並將下面一行添加到 [sourcedocs] 條目下:
admin users = melissa
將其保存在 /etc/samba/smb.conf中,以使其生效。
[編輯] 5.3.2. 客戶端
Ubuntu 中包括客戶端應用以及通過 SMB 協議遠程訪問網路資源的能力。例如,一個名為 smbclient 的工具就可以以一種類似文件傳輸協議(FTP)客戶端的方式訪問遠程共享的文件系統。以使用 smbclient 來訪問在名為 bill 遠程 Windows 計算機中的共享文件夾資源 documents 來做示範,在提示符后輸入類似下面的命令:
smbclient //bill/documents -U <username>
然後你將被提示輸入相對於 -U 參數之後用戶名的密碼,當成功驗證后,將出現一個提示符,在那裡我們可以使用與非圖形化 FTP 客戶端類似的語法來操作和傳輸文件。smbclient 工具的詳細信息可以輸入以下命令來查閱該工具的手冊頁:
使用 SMB 協議的遠程網路資源在本地掛載也可以使用 mount 命令。例如,要掛載在一個名為 development 的Windows 伺服器上的一個名為 project-code 共享文件夾,並使用 dlightman 用戶名掛載到你的 Ubuntu 系統的 /mnt/pcode 掛載點上,你可以在提示符后運行以下命令:
mount -t smbfs -o username=dlightman //development/project-code /mnt/pcode
然後你將被提示輸入用戶密碼,在成功驗證之後,共享資源的內容就可以通過 mount 命令中的最後一個參數所指定的本地掛載點來訪問了。要卸載該共享資源,就象其他被掛載的文件系統一樣只需簡單的使用 umount 命令即可。例如:
umount /mnt/pcode
[編輯] 5.3.2.1. 用戶帳號
用戶帳號定義了有一些授權來使用指定計算機和網路資源的人。通常,在網路環境中,用戶帳號被提供給每個允許訪問計算機或網路的人,然後這些計算機或網路根據策略和許可權來明確用戶帳號擁有多大的權力。要在你的 Ubuntu 系統中定義 SAMBA 網路用戶,你可能使用smbpasswd 命令。如要為你 Ubuntu 系統上名為jseinfeld 的用戶添加一個 SAMBA 用戶,你可以在提示符后輸入命令:
smbpasswd -a jseinfeld
然後 smbpasswd 應用程式將提示你為該用戶輸入密碼:
New SMB password:
輸入你想為用戶設置的密碼,smbpasswd 會要求你確認密碼:
Retype new SMB password:
確認密碼之後,smbpasswd 將為用戶在 SAMBA 密碼文件中添加一個條目。
[編輯] 5.3.2.2. 組
組定義了對指定網路資源擁有共同訪問級別的一組計算機或用戶,並提供對這些資源的訪問控制粒度級別。舉個例子,如果定義一個 qa 組並包含用戶 freda、danika 和 rob,再定義第二個組 support 並包含 danika、jeremy 和 vincent。那麼某個網路資源被配置為允許 qa 組訪問時,則其可以被 freda、danika 和 rob訪問,而不是 jeremy 或 vincent。因為用戶 danika 屬於 qa 和 support 兩個組,所以她能夠訪問配置為兩個組訪問的資源,而所有其他用戶則只能訪問明確允許其所屬組訪問的資源。
當在 SAMBA 配置文件 /etc/samba/smb.conf 中定義組時,被認可的寫法是在用「@」符作為組名的開始。例如,如果你希望在 /etc/samba/smb.conf 某段中定義一個名為 sysadmin 的組,那麼你需要輸入 @sysadmin 來作為組名。
[編輯] 5.3.2.3. 組策略
組策略為 SAMBA 伺服器定義屬於域或工作組計算機帳號的 SAMBA 配置設置及其他全局設置。舉個例子,如果 SAMBA 伺服器屬於一個名為 LEVELONE 的 Windows 計算機工作組,那麼 /etc/samba/smb.conf 可以相應改成下面的值:
workgroup = LEVELONE
保存文件並重啟 SAMBA 守護程式以使改變生效。
其它重要的全局策略設置包括 server string,定義了 Ubuntu 系統向基於 Windows 網路上其它機器所宣稱的 NETBIOS 伺服器名稱。該名稱也使你的 Ubuntu 系統被 Windows 客戶端及其它使用 SMB 協議瀏覽網路的計算機所識別。而且用戶還可以通過 /etc/samba/smb.conf 文件中的 log file 指令來指定 SAMBA 伺服器日誌文件的名稱和所在位置。
還有一些可以管理全局組策略的附加指令包括對所有共享資源全局性能的說明。例如在 /etc/samba/smb.conf 中 [global] 標題下面的指令將影響所有共享資源,除非在某些共享資源標題下有覆蓋全局設置的指令。你可以通過 browseable 指令來使網路中所有的客戶機都能瀏覽全部共享。該指令使用一個布爾值,位於 /etc/samba/smb.conf 文件的 [global] 標題中。編輯該文件,並添加下面一行:
browseable = true
到 /etc/samba/smb.conf 文件的 [global] 節的下面。這樣所有你 Ubuntu 系統中的共享將通過 SAMBA 被授權客戶機瀏覽,除非該共享包含了覆蓋全局指令的 browseable = false 指令。
相同方式運作的其他例子還有 public 和 writeable 指令。public 指令接受一個布爾值並決定特定的共享資源對所有客戶是否可見,而無論其被授權與否。writeable 指令也採用布爾值以定義特定共享資源是否對部分或所有網路客戶可寫。
