網站綜合例項 (轉)

gugu99發表於2008-03-07
網站綜合例項 (轉)[@more@]

網站綜合例項

這裡以為例項,指導在以以後,如何以最快的速度建設一個如同的伺服器。在這裡網站伺服器上執行有以下伺服器:、、WWW、My、Send。

伺服器

安裝完Linux伺服器以後,首先要對伺服器進行初步的安全設定,一般來講要考慮下面這些安全問題:安裝伺服器結束以後,預設的各種伺服器都是開啟的,所以,首先需要關閉那些不需要的服務,因為這些服務可能會對安全造成威脅。首先需要關閉以下服務:finger、talk、ntalk、、login、pop3、tftp、linuxconf、ftp、。這些服務的特點是他們都是由inetd程式啟動的,也就是說這些服務並不直接啟動,而是有inetd代其自己的服務埠,當有服務請求到來以後,inetd才會啟動真正的服務程式,處理請求。而inetd的/etc/inetd.conf則指定了哪些服務需要從inetd來啟動。因此如果需要關閉不需要的服務則應該編輯該檔案,在相應的服務前加上註釋符號 “#”例如,需要關閉finger服務,將:

finger stream tcp nowait nobody /usr/sbin/tcpd in.finger

修改為:

# finger stream tcp nowait nobody /usr/sbin/tcpd in.finger

對其他的服務可以採取同樣的措施。

 而對於那些不是從inetd啟動的服務,則透過命令來關閉,例如需要關閉服務,則:

 /etc/rc.d/init.d/sendmail stop

然後再設定其不在系統啟動時啟動:

 chkconfig –level 12345 sendmail off

也可以使用ntsysv命令來設定是否自啟動某個服務。

 一般來講,伺服器上應當只啟動必須的服務,對於那些不需要的服務,必須關閉。可以使用命令netstat –l –n來檢視本機開放了那些服務:

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 ins:ain *:* LISTEN

tcp 0 0 ns:domain *:* LISTEN

tcp 0 0 www:domain *:* LISTEN

tcp 0 0 *:www *:* LISTEN

tcp 0 0 *:ftp *:* LISTEN

udp 0 0 *:1036 *:*

udp 0 0 ins:domain *:*

udp 0 0 ns:domain *:*

udp 0 0 www:domain *:*

raw 0 0 *:icmp *:* 7

raw 0 0 *:tcp *:* 7

Active  domain sockets (only servers)

Proto RefCnt Flags Type State I-Node Path 

從上面的輸出可以看到,這臺機器開放了dns、www、ftp、1036、icmp、tcp埠,可以檢視/etc/service來確定數字表示的埠具體都是什麼服務。

 這裡關閉了telnet服務,那麼如何登入伺服器進行配置呢?這裡推薦使用SSH,因為telnet是採用明文方式傳輸密碼和名,因此這些資訊可能在傳輸過程中被竊聽,而SSH是telnet的一種替代品,它的伺服器和客戶端之間的所有資料傳輸都進行了,因此提高了安全性。

 若某個系統帳號使用者不允許登入系統,而只允許其修改自己的密碼,則需要修改起shell,也就是編輯/etc/passwd檔案。舉例如下,若不允許al登入系統則需要編輯passwd檔案,修改:

ideal:x:500:500:ideal:/home/ideal:/bin/bash

為:

ideal:x:500:500:ideal:/home/ideal:/usr/bin/passwd

這樣當該使用者登入進入系統以後,只能修改自己的密碼,修改完畢以後,系統會自動斷開連線。

23.2 設定DNS伺服器

 我們首先為伺服器設定dns伺服器。這裡假定的伺服器為202.99.11.120,該伺服器除了要解析linuxaid.com.cn的區資訊以外,還要解析longshine.com.cn的區資訊。也就是說本機要負責解析兩個區的域名資訊。這裡假設的IP地址是202.99.12.120。

第一步:
 編輯系統已經存在的/etc/resolv.conf檔案,設定內容如下:

domain linuxaid.com.cn.

nameserver 202.99.11.120

該檔案定義了本地域名和預設域名伺服器,可以根據自己的實際情況修改該檔案。

第二步:
 編輯系統已經存在的/etc/named.conf檔案,初始內容為:

options {

 directory "/var/named";

};

zone "." {

 type hint;

 file "named.ca";

};

zone "0.0.127.in-addr.a" {

 type master;

 file "named.local";

};

修改內容如下:

options {

 directory "/var/named";

};

zone "." {

 type hint;

 file "named.ca";

};

zone "linuxaid.com.cn"{

 type master;

 file "linuxaid.com.cn";

};

zone "longshine.com.cn"{

 type master;

 file "longshine.com.cn ";

};

zone "0.0.127.in-addr.arpa"{

 type master;

 file "named.local";

};

zone “12.99.202.in-addr.arpa"{

 type master;

 file "12.99.202";

};

zone “11.99.202.in-addr.arpa"{

 type master;

 file "11.99.202";

};

其中,type指定了該域的性質,hint指根域,master表示本機對該域是權威的主域名伺服器。

第三步:
 建立/var/named下的名為linuxaid.com.cn檔案內容如下:

@ IN  ns. linuxaid.com.cn. . linuxaid.com.cn. (

 2000080701 ; serial

 28800 ; refresh

 7200 ; retry

 604800 ; expire

 86400 ; default_ttl

 )

@ IN A 202.99.11.120

@ IN NS ns. linuxaid.com.cn.

@ IN MX 10 mail. linuxaid.com.cn.

localhost IN A 127.0.0.1

www IN A 202.99.11.120

mail IN A 202.99.11.120

ns IN A 202.99.11.120

ftp IN A 202.99.11.120

該檔案是linuxaid.com.cn的域資料資訊檔案,其中定義了各種伺服器的IP vs 域名的對應資訊。其中:

@ IN A 202.99.11.120

一行定義域名linuxaid.com.cn對應的IP地址為201.99.11.120,當對linuxaid.com.cn進行通常的域名解析(這裡指不是進行MX—閘道器域名解析)時將會返回IP地址202.99.11.120的應答。

第四步:
 建立/var/named目錄下的名為longshine.com.cn檔案內容如下:

@ IN SOA ns. longshine.com.cn. root. longshine.com.cn. (

 2000080701 ; serial

 28800 ; refresh

 7200 ; retry

 604800 ; expire

 86400 ; default_ttl

 )

@ IN A 202.99.12.120

@ IN NS ns. longshine.com.cn.

@ IN MX 10 longshine.com.cn.

localhost IN A 127.0.0.1

www IN A 202.99.12.120

mail IN A 202.99.12.120

ns IN A 202.99.12.120

ftp IN A 202.99.12.120

該檔案是longshine.com.cn的域資料資訊檔案,其中定義了各種伺服器的IP vs 域名的對應資訊。

第五步:
 建立/var/named目錄下的名為named.local的檔案內容如下:

@ IN SOA localhost. root.localhost. (

 1997022700 ; serial

 28800 ; refresh

 14400 ; retry

 3600000 ; expire

 86400 ; default_ttl

 )

@ IN NS localhost.

1 IN PTR localhost.

該檔案定義了本地迴路的域名反向解析資訊。

第五步:
 建立/var/named目錄下的名為11.99.202的檔案,內容如下:

@ IN SOA ns.linuxaid.com.cn. root.linuxaid.com.cn. (

 2000080501 ; serial

 28800 ; refresh

 7200 ; retry

 604800 ; expire

 86400 ; default_ttl

 )

@ IN NS ns.linuxaid.com.cn.

;

; SERVER SECTION

;

120 IN PTR .

120 IN PTR mail.linuxaid.com.cn.

120 IN PTR ns.linuxaid.com.cn.

120 IN PTR ftp.linuxaid.com.cn.

該檔案定義了202.99.11的域名反向解析資訊。

第六步:
 建立/var/named目錄下的名為12.99.202的檔案內容如下:

@ IN SOA ns.longshine.com.cn. root.longshine.com.cn. (

 2000080501 ; serial

 28800 ; refresh

 7200 ; retry

 604800 ; expire

 86400 ; default_ttl

 )

@ IN NS ns.longshine.com.cn.

;

; SERVER SECTION

;

120 IN PTR .

120 IN PTR mail.longshine.com.cn.

120 IN PTR ns.longshine.com.cn.

120 IN PTR ftp.longshine.com.cn.

該檔案定義了202.99.12網路的域名反向解析資訊。

啟動
啟動dns伺服器可以使用命令:ndc start,若輸出結果為”new pid is 2317”,若輸出錯誤,則需要檢視上面的配置檔案是否正確設定。這時,使用命令”ps ax|grep named” 應該輸出:

2317 ? S 0:00 /usr/sbin/named

2319 pts/0 S 0:00 grep named

停止dns伺服器程式的命令為:ndc stop。

也可以使用命令/etc/rc.d/init.d/named start|stop來啟動或關閉某個服務。

若需要在啟動時自動啟動DNS伺服器,則使用命令:

 /sbin/chkconfig –level 35 named on

若需要關閉自動啟動DNS伺服器,則使用命令:

 /sbin/chkconfig –level 35 named off

測試:
 啟動DNS伺服器以後,使用命令nslookup命令進行測試:

 [root@www /]nslookup

Default Server: ns.linuxaid.com.cn

Address: 202.99.11.120

 >www

Server: ns.linuxaid.com.cn

Address: 202.99.11.120

 

Name: 

Address: 202.99.11.120

 >set q=mx

 >linuxaid.com.cn

> set q=mx

> plagh.com.cn

Server: ns.linuxaid.com.cn

Address: 202.99.11.120

 

linuxaid.com.cn preference = 10, mail r = mail. linuxaid.com.cn

linuxaid.com.cn nameserver = ns linuxaid.com.cn

mail. linuxaid.com.cn internet address =202.99.11.120

ns. linuxaid.com.cn internet address =202.99.11.120

>exit

若測試結果和上面的一樣,則說明DNS服務安裝成功。

19.2 設定FTP伺服器

只要成功地以伺服器模式安裝了redhat,ftp伺服器就應該已經正常的在執行了,在本機,使用命令測試:

 ftp localhost

若顯示連線成功,則說明ftp伺服器已經成功安裝並且執行正常。若連線時顯示:

ftp: connect: Connection refused

ftp>

則說明ftp服務沒有開放,則需要編輯/etc/inetd.conf檔案,確保有如下的內容:

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l –a

相反的,若希望關閉ftp伺服器,則需要在上面一行的內容前面新增#,將其註釋掉,然後查詢inetd程式的程式號,

ps ax|grep inetd

353 ? S 0:00 inetd

作說明inetd的程式號為353,然後kill –HUP 353,就可以關閉ftp伺服器了。

 下面討論這樣一種情況,現在有一個目錄為/www/htdocs/developer,希望使用者user1能讀寫該目錄,但是其不能telnet進入系統,而user1的主目錄為/home/user1。這種需求主要是滿足多個管理員對網站的不同部分進行管理,但是又不允許其透過telnet服務登入網站,只允許其將內容ftp到網站上。這就需要新增一個組,這裡隨便定義為developer組:

 /usr/sbin/groupadd developer

然後將user1新增到該組內:

 /usr/sbin/usermod –G developer user1

然後修改/www/htdocs/developer屬於developer組:

 chgrp –R developer /www/htdocs/developer

最後,設定該目錄為developer完全控制:

 chmod -R 775 /www/htdocs/developer

這樣/www/htdocs/developer就屬於developer組所有,並且完全可以由屬於developer組的使用者控制。

19.3 安裝設定伺服器

 需要從最新版本,目前最新版本是3.23。這裡主要討論以二進位制包的方式安裝Mysql。

首先從mysql主頁下載mysql-3.23.24-beta-pc-linux--i686.tar.gz到/usr/src目錄下,然後執行命令:

 [root@www /]# tar xvfz mysql-3.23.24-beta-pc-linux-gnu-i686.tar.gz

解壓釋出,然後使用命令”cd mysql-3.23.24-beta”進入mysql的目錄,執行:

 [root@www /]# ./scripts/mysql_install_

就會實現mysql的預設安裝,預設是安裝在/usr/local/mysql目錄下,該目錄下包含了mysql的所有的lib庫,可檔案等等。

 下面使用mysql的客戶端來測試mysql是否正常:

 [root@www /]# mysql –u root

Welcome to the MySQL monitor. Commands end with ; or g.

Your MySQL connection id is 61 to server version: 3.23.22-beta

 

Type 'help' for help.

 

mysql>

預設安裝情況下mysql有一個root使用者(注和系統的root使用者沒有直接關係),該使用者具有對整個庫的讀寫,而且root使用者是沒有任何密碼的,所以首先需要為該使用者新增密碼,。在mysql提示符下輸入如下SQL語句:

'UPDATE user SET Pass = PASSWORD ('yourpassword')'

 'WHERE user = 'root';'

 'FLUSH PRIVILEGES;'

這樣,就實現了對root使用者增加密碼的任務,現在使用quit命令退出mysql,然後重新連線mysql伺服器就需要指定密碼資訊:

[root@www /]# mysql –u root –pyourpasswd

然後才能連線mysql伺服器。

但是一般都推薦新增一個非root的而具有root的所有許可權的資料庫使用者,因此使用下面的SQL語句實現新增一個具有root許可權的名為ideal的使用者:

'INSERT INTO users'

'VALUES ('localhost','ideal','idealsppasswd','y','y','y','y','y','y','y','y','y','y','y','y','y','y');'

這樣,你就完成了在本系統上安裝Mysql伺服器的任務,具體的許可權設定及如何建庫、如何建表、如何訪問庫資料,請參考mysql的手冊,裡面有非常詳盡的使用幫助。

19.4設定www伺服器

以伺服器模式安裝redhat以後,系統預設地就已經安裝了apach伺服器,使用命令:

 ps ax+grep httpd

來檢視系統的伺服器是否正在執行,若已經正在執行了,從另外一臺機器上,在中輸入www伺服器的IP地址就會訪問到apache的預設主頁。若apache沒有啟動,則需要使用命令:

 /etc/rc.d/init.d/httpd start

來啟動apache伺服器,若伺服器成功啟動,然後再從windows機器上使用瀏覽器進行測試,一般來講只要成功按伺服器模式安裝了Redhat,一般apache就能啟動執行的,若不能啟動執行,最常見的毛病是apache伺服器的httpd.conf中本機的名字沒有正確設定,這時候需要編輯/etc/httpd/conf/httpd.conf中ServerName一行的內容,對於本機具有正式域名的伺服器,這裡設定ServerName為伺服器域名,以為例:

ServerName 

若伺服器沒有正式域名,則在這裡指定ServerName為本機IP地址。然後再啟動apache伺服器。

 若希望在機器啟動時自動啟動www伺服器,則需要使用以下命令:

 [root@www /]# /usr/sbin/chkconfig –level 35 httpd on

 若希望在啟動時不啟動www伺服器,則使用命令:

 [root@www /]# /usr/sbin/chkconfig –level 35 httpd off

 若希望在本機上建立多個虛擬主機,這裡假設linuxaid需要設定兩個虛擬主機:和forum.linuxaid.com.cn。由於只能分配一個IP地址,所以這裡採用基於域名的多虛擬域名伺服器。編輯/etc/httpd/httpd.conf,新增下面的內容:

NameVirtualHost 210.12.114.130



ServerAdmin lix@dns.plagh.cn

DocumentRoot /home/httpd/

ServerName 

ErrorLog /var/log/httpd//error.log



 



ServerAdmin lix@dns.plagh.cn

DocumentRoot /home/httpd/forum.linuxaid.com.cn

ServerName forum.linuxaid.com.cn

ErrorLog /var/log/httpd/forum.linuxaid.com.cn/error.log



 然後分別在/home/httpd/建立名字為和forum.linuxaid.com.cn的目錄,分別將兩個www伺服器的html頁面複製到各自的目錄下。然後在/var/log/httpd/建立名字為和forum.linuxaid.com.cn的目錄,然後分別在這兩個目錄下建立檔案error.log:

 touch error.log

然後重新啟動apche伺服器:

 /etc/rc.d/init.d/httpd restart

然後從網路上就可以測試虛擬伺服器的可達性。

 對於大規模應用的伺服器,則需要調整其執行引數以使其能處理更多的服務請求。這就需要調整配置檔案/etc/httpd/conf/httpd.conf中下面兩個引數:

MinSpareServers 5

MaxSpareServers 20

StartServers 8

MaxClients 150

這幾個引數的含義分別為:

 系統中最少有MinSpareServers個www伺服器空閒程式等待服務請求。

 系統中最少有MaxSpareServers個www伺服器空閒程式等待服務請求。

 系統啟動以後,初始有StartServers個www伺服器程式等待服務請求。

 最大同時有有MaxClients個www伺服器程式。

管理員應該根據自己系統的負載情況,設定這些引數。

19.4設定sendmail伺服器

當前linux的各個釋出都將sendmail作為預設地軟體,所以這裡主要討論在redhat6.2環境下如何將sendmail郵件伺服器軟體執行起來,實現正常的郵件收發。

編輯/etc/sendmail.cw檔案,新增本機的域名到該檔案中,這裡以linuxaid.com.cn為例:

 linuxaid.com.cn

 mail.linuxaid.com.cn

然後重新啟動sendmail郵件伺服器:

 /etc/rc.d/init.d/sendmail restart

然後測試郵件伺服器,使用mail:

 [lix@mail /etc]# mail ideal@btamail.net.cn

這裡你應該將ideal@btamail.net.cn設定為你自己的外部。然後看能否收到,只要預設安裝了sendmail,正確地修改了/etc/sendmail.cw檔案,就肯定可以接收到信件,收到信件以後可以回覆給傳送者,然後再使用mail程式接收信件,若接收成功就表示 sendmail初步接收成功,更復雜的設定可以參考具體章節。

若需要在啟動時自動啟動SENDMAIL伺服器,則使用命令:

 /sbin/chkconfig –level 35 sendmail on

若需要關閉自動啟動SENDMAIL伺服器,則使用命令:

 /sbin/chkconfig –level 35 sendmail off

下面討論兩個比較典型的需求:

一種是若本機器有兩個域名:test1.com和test2.com,這裡設定test1.com為主域名,於是當為系統新增一個系統帳號man1,則帳號man則會具有man@test1.com,但是也許管理員會希望man在test1.com和test2.com兩個域上都有郵箱,而且是同一個信箱,也就是說,當我向man@test1.com和man@test2.com傳送郵件,man都可以從man@test1.com信箱收到。要實現這種設定,需要編輯檔案/etc/mail/virtuusertable檔案,新增如下內容:

man@test2.com man

然後執行make,重新啟動sendmail:

/etc/rc.d/sendmail restart

就可以實現這個效果。

 第二種情況是,希望設定一個別名信箱,也就是希望發往webmaster@test1.com的所有的信件都實際上發給了使用者man@test1.com,而且實際上並沒有新增webmaster這個郵件帳號,它只是man@test1.com的一個別名。編輯/etc/alliases檔案,新增如下內容:

 webmaster: man

然後執行命令/usr/bin/ newaliases,重新啟動sendmail伺服器:/etc/rc.d/init.d/sendmail restart就可以了。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1000541/,如需轉載,請註明出處,否則將追究法律責任。

相關文章