網站綜合實例

火星人 @ 2014-03-09 , reply:0
←手機掃碼閱讀

摘要
  這裡以www.linuxaid.com.cn為實例,指導在以伺服器模式安裝redhat以後,如何以最快的速度建設一個如同www.linuxaid.com.cn的伺服器.在這裡網站伺服器上運行有以下伺服器軟體:Ftp、DNS、WWW、Mysql、Sendmail.(2002-07-02 12:32:53)

--------------------------------------------------------------------------------
By 處處


  這裡以www.linuxaid.com.cn為實例,指導在以伺服器模式安裝redhat以後,如何以最快的速度建設一個如同www.linuxaid.com.cn的伺服器.在這裡網站伺服器上運行有以下伺服器軟體:Ftp、DNS、WWW、Mysql、Sendmail.

1.伺服器安全

  安裝完Linux伺服器以後,首先要對伺服器進行初步的安全設置,一般來講要考慮下面這些安全問題:安裝伺服器結束以後,預設的各種伺服器都是打開的,,首先需要關閉那些不需要的服務,這些服務可能會對系統安全造成威脅.首先需要關閉以下服務:finger、talk、ntalk、shell、login、pop3、tftp、linuxconf、ftp、telnet.這些服務的特點是他們都是由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啟動的服務,則通過命令來關閉,例如需要關閉sendmail服務,則:



/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:domain *:* 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 UNIX 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文件.舉例如下,若不允許ideal登錄系統則需要編輯passwd文件,修改:

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

  為:

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

  這樣當該用戶登錄進入系統以後,只能修改自己的密碼,修改完畢以後,系統會自動斷開連接.

2.設置DNS伺服器

  我們首先為伺服器設置dns伺服器.這裡假定www.linuxaid.com.cn的伺服器ip地址為202.99.11.120,該伺服器除了要解析linuxaid.com.cn的區信息以外,還要解析longshine.com.cn的區信息.也就是說本機要負責解析兩個區的域名信息.這裡假設www.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.arpa" {
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 SOA ns. linuxaid.com.cn. root. 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 www.linuxaid.com.cn.
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 www.longshine.com.cn.
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: www.linuxaid.com.cn
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 exchanger = 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服務安裝成功.

3.設置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組的用戶控制.

4.安裝設置mysql伺服器

  需要從www.mysql.org下載最新版本,目前最新版本是3.23.這裡主要討論以二進位包的方式安裝Mysql.

  首先從mysql主頁下載mysql-3.23.24-beta-pc-linux-gnu-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_db

  就會實現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 Password = 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的手冊,裡面有非常詳盡的使用幫助.

5.設置www伺服器

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

ps ax grep httpd

  來查看系統的apache伺服器是否正在運行,若已經正在運行了,從另外一台windows機器上,在瀏覽器中輸入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為伺服器域名,以www.linuxaid.com.cn為例:

ServerName www.linuxaid.com.cn

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

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

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



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

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

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

NameVirtualHost 210.12.114.130

ServerAdmin lix@dns.plagh.cn
DocumentRoot /home/httpd/www.linuxaid.com.cn
ServerName www.linuxaid.com.cn
ErrorLog /var/log/httpd/www.linuxaid.com.cn/error.log


ServerAdmin lix@dns.plagh.cn
DocumentRoot /home/httpd/forum.linuxaid.com.cn
ServerName forum.linuxaid.com.c
ErrorLog /var/log/httpd/forum.linuxaid.com.cn/error.log


  然後分別在/home/httpd/創建名字為www.linuxaid.com.cn和forum.linuxaid.com.cn的目錄,分別將兩個www伺服器的html頁面拷貝到各自的目錄下.然後在/var/log/httpd/創建名字為www.linuxaid.com.cn和forum.linuxaid.com.cn的目錄,然後分別在這兩個目錄下創建文件error.log:

touch error.log

  然後重新啟動apche伺服器:

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

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

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

MinSpareServers 5
MaxSpareServers 20
StartServers 8
MaxClients 150

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

  系統中最少有MinSpareServers個www伺服器空閑進程等待服務請求.

  系統中最多有MaxSpareServers個www伺服器空閑進程等待服務請求.



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

  最大同時有有MaxClients個www伺服器進程.

  管理員應該根據自己系統的負載情況,設置這些參數.

6.設置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就可以了.



【責任編輯:風過留楓





[火星人 via ] 網站綜合實例已經有342次圍觀

http://www.coctec.com/docs/linux/show-post-56489.html