1.前言
本文將以LinuxAid網站基本配置過程為實例,講解怎么用 Linux 做為OS,構架一個完整的Web服務器的過程。照著步驟,仔細實踐,相信您可以在極短的時間內建筑起一個比較安全、穩健的Web服務器。
整個環境就是在實際Internet上做,LinuxAid的基本參數是,IP地址:202.99.11.120,域名是:linuxaid.com.cn,linuxaid.net.cn等。服務器所使用的OS為:Redhat Linux 6.2
缺省安裝時選擇定制安裝,選擇軟件包時除了 Sendmail 之外,不選擇任何的服務器軟件,同時應該安裝C、C++開發包。我們將要手工編譯安裝的軟件包有:
Apache 1.3.12 #WEB服務器,提供HTTP服務
Resin 1.2.b1 #JSP解釋器,提供JSP/SERVLET解釋服務
PHP 4.0p2 #PHP解釋器,提供PHP解釋服務
Mysql 3.22.32 #數據庫服務器,提供數據庫存儲服務
Proftpd 1.2.0rc2 #匿名FTP服務器,提供文件傳輸服務
Bind 8.2.2p5 #域名服務器(DNS),提供域名解析服務
Openssh-2.1.1.p4 #安全外殼,用于代替系統缺省的TELNET服務
Postfix-19991231-pl09 #郵件傳遞服務器(MTA),提供郵件發送服務
我們將把所有的自行編譯的軟件都放置于 /usr/local/servers ,也就是說配置是所使用的參數 --prefix 將指向 /usr/local/servers/packages(其中packages為軟件包的名稱,如Web服務器將使用 apache)。
本文將以安裝手冊的形式出現,力求簡單明了,可以指導您迅速的將一臺只有基本操作系統(Linux)的計算機安裝成為一臺可以提供郵件(MAIL)、域名(DNS)、文件傳輸(FTP)、Web、JSP編程環境、PHP編程環境及數據庫支持的Web服務器。
在進行實際操作前,我們強烈的建議您在看完全部內容。因為服務器的安裝過程中要注意的問題非常多。如果您只是看了一部分就開始實際操作,有可能會導致問題的出現。同時,Web服務器是一個比較復雜的系統,雖然我們盡力的將可能遇到的問題列出來并提供解決的方法,但仍然有可能出現一些無法遇見的問題。您可以自行嘗試查出錯誤的原因,如果可能的話,將您得到的結果通過我們的網站()與其他讀者共同分享。如果您遇到無法解決的問題,您可以直接到我們的技術支持網站 技術支持論壇討論,我們的在線支持工程師會給您詳細的解釋。
2.基礎網絡配置
2.1.網卡的安裝與設置
使用 netconf 按照以下的步驟:
1.使用方向鍵↓選擇Basic host information并按回車
2.填寫 Host name,一般情況下是www,如果您是用來做Web服務器的話
3.使用方向鍵↓將光標移動至 Adaptor 1 的范圍內
4.選擇 Enabled 選項,使網卡有效
5.使用方向鍵將光標移動至Config Mode內,選擇IP地址方式,對于Web服務器應該選擇 Manual
6.我們的Web服務器的主域名是linuxaid.com.cn 所以在 Primary name+domain 這一項里面應該輸入 linuxaid.com.cn,而別名(Aliases)可以不輸入
7.IP地址(IP address)應該輸入Web服務器的IP地址,這里我們輸入202.99.11.120
8.因為我們假設Web服務器是安裝在一個C類的子網內,所以子網掩碼(Netmask)應該選擇255.255.255.0(將光標放置于Netmask輸入內,按ctrl+x鍵將會彈出一個列表框在其中選擇即可。提示:在所有有v字樣的列表框內都可以按ctrl+x鍵選擇)
9.Linux里面每一個以太網設備都必須有一定設備名,將光標放置于Net device輸入框內按鍵盤ctrl+x鍵選擇設備名,在Linux里面第一個以太網設備的名稱應該選擇eth0。
10.在設備名選擇完之后,應該為此設備選擇一個驅動程序,使Linux的內核可以驅動它正常的工作。這里假設我們的網卡的ne2000兼容的10M網卡。使用ctrl+x選擇ne即可。
11.在驅動選擇完成之后,要看網卡的具體情況確定是否需要輸入中斷號和端口號。這里我們的網卡的NE2000 ISA的網卡,沒有PNP功能我們只有自己手工的將中斷號和端口號輸進去。
12.至了這里,網卡的參數我們已經設置完成,用TAB鍵將鍵盤移動到Accept處按鍵盤的回車鍵保存設置。并退出netconf,重新啟動Linux之后用以下的命令查看網卡工作是否正常
# ifconfig eth0
正常情況下應該會顯示關于網卡的相關信息,如果沒有的話,檢查您的設置步驟是否正確。
2.2.IP地址的修改
使用netconf按照以下的步驟:
1.Basic host information
2.填寫 Host name,一般情況下是www,如果您是用來做Web服務器的話
3.使用方向鍵↓將光標移動至 Adaptor 1范圍內的IP address輸入框內,輸入您想要更改的IP地址,輸入完成之后用TAB鍵移動至Accept按鈕處按回車即可。
4.使用手工的方式修改可以用以下的命令:
# ifconfig eth0 202.99.11.120
其中eth0是設備的名稱,202.99.11.120是IP地址。
2.3.缺省DNS服務器地址的設置
直接使用vi修改/etc/resolv.conf,查看其中是否存在nameserver的參數,如果沒有手工添加進去,如果有的話直接修改其后的IP地址即可。其格式為
nameserver 127.0.0.1
其中127.0.0.1為DNS服務器的地址,由于本站配置了DNS服務器,所以可以用本地地址,也可寫為202.99.11.120。
3.服務器安全
做為Web服務器,我們首先要考慮的一條就是安全。Linux在安裝完成之后,缺省的情況下會打開一些端口以提供一些基礎如Telnet、Finger等服務。
對于我們來說是沒有任何用處的,說不定還會導致一些安全問題。為此,在服務器的建設初始,我們將就考慮將這些對我們日常工作沒有起到作用的服務關閉掉。在這一部分,我們將會介紹如何使用 openssh 和 proftpd 代替 inetd 最常用的兩個服務 telnetd 和 ftpd,從而實現最終將 inetd 從系統同刪除掉。
在進行具體的操作前,強烈的建議您先為自己添加一個獨立的用戶,一般來說我是這樣處理的。添加一個組名為 ftpusers,再添加一個用戶 myuser 其組為 ftpusers。相應的命令為:
#groupadd ftpusers
#useradd myuser –g ftpusers
此用戶將用于進行常規的維護,與測試,象Telnet、FTP這些工作的測試。
3.1.安裝 openssh
1、下載軟件包:
從 下載 openssl 0.9.5a
從 下載 openssh-2.1.1.p4
下載的軟件包放置于 /usr/local/src。
2、將軟件包解壓縮
# cd /usr/local/src
# tar zxvf openssl-0.9.5.tar.gz
# tar zxvf openssh-2.1.1.p4.tar.gz
3、編譯并安裝 openssl和openssh
# cd /usr/local/src
# cd openssl-0.9.5
# ./configure --prefix=/usr/local/servers/openssl #設置安裝路徑
# make
# make install
編譯(make)過程所需的時間比較長,在我的PIII600+128MB SCSI硬盤的機器上編譯的過程需要差不多五分鐘。所以請耐心等候其編譯完成。
在完成 openssl 的編譯與安裝之后,我們就可以開始編譯與安裝 openssh。步驟如下:
# cd /usr/local/src
# cd openssh-2.1.1.p4
# ./configure --prefix=/usr/local/servers/openssh --with-ssl-dir=/usr/local/servers/openssl
# make
# make install
# cd /usr/local/src/openssh-2.1.1.p4/contrib/redhat
# install -m 644 sshd.pam /etc/pam.d/sshd
# sed ‘s//sbin///local/servers/openssh/sbin//g’ sshd.init > /etc/rc.d/init.d/sshd
# chmod 755 /etc/rc.d/init.d/sshd
# chkconfig --level 345 sshd on
# chkconfig --level 0126 sshd off
4、測試sshd
啟動 sshd:
# /etc/rc.d/init.d/sshd start
如果出現:
Starting sshd: [ OK ]
則證明 sshd 已經正確的安裝并已經在后臺運行,如果出現其它的提示,請檢查您的安裝步驟是否正確。
sshd 正確啟動之后,我們試試用其客戶端看是否可以正確的聯接至服務器:
# cd /usr/local/servers/openssh/bin
# ./ssh 127.0.0.1 #連接本地的SSH服務器
使用此命令之后正常情況下會要求您輸入root的密碼,您輸入之后如果可以成功的進入則證明 sshd 已經成功的安裝完成了。
ssh的win32客戶端可以從 下載。方便您在Windows里面遠程控制網站服務器。
3.2.安裝ProFTPD
1、下載軟件包
從 下載proftpd-1.2.0rc2.tar.gz
下載的軟件包放置于 /usr/local/src。
2、將下載的軟件包解壓縮
# cd /usr/local/src
# tar zxvf proftpd-1.2.0rc2.tar.gz
3、編譯并安裝proftpd
# ./configure --prefix=/usr/local/servers/proftpd
# make
# make install
4、修改 /etc/inetd.conf 將其中的 ftp 服務關閉掉
使用 vi /etc/inetd.conf 打開 inetd 配置文件,搜索 ftp,在
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l –a
這一行的最前面插入一個 # 號,修改之后的結果如下:
# ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l –a
在vi環境下使用 :wq 存盤退出以后,使用 killall -HUP inetd 重新啟動 inetd,使所做的修改生效。
5、生成ProFTPD啟動文件
# cd /etc/rc.d/init.d
# sed ‘s/sbin/atd/local/servers/proftpd/sbin/proftpd/g’ atd > proftpd
# sed ‘s/atd/proftpd/g’ proftpd > /tmp/txt
# sed ‘s/at daemon/proftpd daemon/g’ /tmp/txt > proftpd
# rm /tmp/txt
# chmod 755 proftpd
# chkconfig --level 345 proftpd on
# chkconfig --level 0126 proftpd off
說明:chkconfig,是一個在Linux里面用于修改服務器(daemon)運行環境的小程序,其命令格式為 chkconfig [–level <levels>] <name> <on|off|reset>用于指定某個服務在指定的運行級別內是處于何種狀態。
6、為ProFTPD創建PAM文件
使用 vi 在 /etc/pam.d 創建一個名為 ftp 的文件,其內容為:
auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required /lib/security/pam_pwdb.so shadow nullok
account required /lib/security/pam_pwdb.so
session required /lib/security/pam_pwdb.so
7、修改ftp用戶的shell,并創建其主目錄
# usermod –s /bin/bash ftp
檢查/home/ftp 是否存在,如果不存在使用以下的命令創建
# mkdir /home/ftp
# chown /home/ftp
# chmod 700 /home/ftp
如果您不希望匿名登錄有效,本節可以不做
8、修改ProFTPD的啟動參數
# vi /usr/local/servers/proftpd/etc/proftpd.conf
搜索 nogroup,并將其改為 nobody
:%! sed ‘s/nogroup/nobody/g’
修改完成后存盤退出
9、啟動ProFTPD
# /etc/rc.d/init.d/proftpd start
如果出現
Starting proftpd daemon: [ OK ]
則證明ProFTPD已經正確的安裝并已經在后臺運行,如果出現其它的提示,請檢查您的安裝步驟是否正確。
10、測試ftp的聯接是否正常
ftp localhost
使用我們先前創建的用戶登錄。
如果無法聯接,則檢查您的ProFTPD是否已經在運行(可以用 ps –ax | grep “proftpd” 查看是否有ProFTPD進程)。
如果無法登錄,檢查您的用戶名及口令是否正確;如果確認所輸入的用戶及口令正確而又無法登錄,請檢查第9步是否有正確的進行。
3.3.關閉因特網超級服務器(inetd)
經過以上的步驟,我們已經實現了使用openssh代替telnetd實現遠程登錄,用proftpd代替in.ftpd提供匿名文件傳輸服務。Inetd提供的基礎功能,我們都已經實現,現在可以將inetd徹底的關閉掉。使用以下的命令:
# /etc/rc.d/init.d/inet stop
# chkconfig 0123456 inet off
經過以上的命令之后就可以將inet關閉掉,并且在下次啟動時系統也不會自動啟動inetd服務。
4.數據庫服務器的安裝
經過第一部分的工作,我們已經成功的建立了一個比較安全的環境??梢蚤_始做一些實質性的工作。首先做為Web服務器,必須提供數據庫支持,我們就從數據庫的安裝與基本的維護開始。這里我們選擇MySQL做為我們的數據庫服務器。您可以從下載到最新版本的MySQL。我們選擇穩定版本的3.22.32做為我們說明的版本。
4.1.下載軟件包
從下載MySQL 3.22.32 并放置于/usr/local/src
4.2.將下載的軟件包解壓縮
# cd /usr/local/src
# tar zxvf mysql-3.22.32.tar.gz
4.3.編譯并安裝MySQL
# cd /usr/local/src/mysql-3.22.32
# ./configure --prefix=/usr/local/servers/mysql
# make
# make install
# cd /usr/local/servers/mysql/bin
# ./mysql_install_db
4.4.啟動MySQL并設置管理員口令
# cd /usr/local/servers/mysql/bin
# ./safe_mysqld& #啟動MySQL服務器
# ./mysqladmin -u root password ‘password’ #使用mysqladmin修改root的口令
#為’password’