一招一式攻克linux

http://sery.blog.ccidnet.com/blog/ccid/uid_3587/dirid_1.html---佩服田逸

一招一式攻克linux之一

第一招 安裝linux

關於windowslinux誰優誰劣的問題一直爭論不休,也許,你在windows的世界中得心應手,但是,你也應該關注一下linux。這不僅僅是可以體驗linux的強大功能,而且對於薪金的提升更有益處。我個人的觀點是:服務器、還有那些爲了節省成本而使用計算機做網關設備(路由器,防火牆,ids)儘可能的使用linux作爲操作平臺,桌面系統或者遠程控制端(監控遠程服務器)使用windows作爲操作平臺,這樣折中一下,就很好了。對於很多人來說,他們對於linux依然很茫然,儘管他們曾經做過一些嘗試。這可能是他們想努力的把linux當成桌面環境來使用或者在安裝 linux是遇到麻煩而最終放棄努力。是的,我們使用windows作爲日常工具也成習慣(我們用word編寫項目方案,用 internet explorer瀏覽網頁等等),如果一旦把系統換成linux,不知所措也是理所當然的。

 

首先應該解決一些認識上的誤區:linux應該被用於服務器方面,linux的安裝配置確實比windows要困難和複雜,但也沒有想像的那麼糟糕。克服困難的途徑就是Do it yourself at once ---立馬行動。筆者從事系統管理工作已經多年,對linux也有所涉獵,不敢說多有心得,權做拋磚引玉之用,把一些體會在此與大家交流。

 

要使用linux來爲我們工作,第一步要做的事情就是安裝linux到機器上,可是還是有很多嘗試安裝是失敗的,以至於動搖了再次嘗試的信心。希望初學者跟我一招一式的操作,定可順利進行。

 

安裝準備

1、  一套正版的redhat linux 9發行套件(大概68元)。

2、  一個專門用來安裝linux系統的硬盤。很多失敗和顧忌都源於這兒,欲在裝有windows系統並且有用戶數據的硬盤上安裝linux ,對於生手來說,能放開手腳?

3、  一臺基於intel 奔騰處理器或AMD處理器的pc或服務器。不要用intel 塞揚的處理器,這玩意性能差。

4、  一快流行的網卡或乾脆花200多元買一塊3COM網卡。

5、  一個讀盤能力強的光盤驅動器。

6、  如果用服務器來安裝linux,並且硬盤是SCSI接口的話,準備好隨機附帶的安裝工具盤,可能 linux安裝過程中需要SCSI控制器的驅動程序。

7、  足夠的耐性。

 

一、從光盤安裝Linux

開始安裝 

激動人心的時刻從這裏開始,這裏先進行最直接、最便捷的安裝方法:從光盤安裝,後面再介紹一種高級的安裝方法。

1、     機器加電啓動,進入BIOS設置引導設備爲CD-ROM(與從光盤安裝windows類似),第一張光盤放入光驅,系統開始從linux光盤引導,引導成功後出現redhat linux 9 的安裝啓動界面,屏幕顯示提示信息和boot:提示符,按回車進入圖形安裝方式。

2、    選擇安裝語言,建議選 English,如果選擇中文,那麼在以後安裝某些應用軟件(如Sybase, Oracle)時出現亂碼,從而影響軟件的正常安裝比如你不能分辨“next”按鈕是那一個。

3、   選擇鍵盤,鼠標類型,就按“Next”就是。

4、   出現歡迎消息,按“Next”繼續吧。

5、   詢問是安裝新系統還是更新系統?選全新安裝,點擊“next”。

6、   詢問安裝類型:工作站(workstation),服務器(server)還是定製安裝(custom?選中服務器(server),按“Next”繼續。安裝程序將所有的硬盤數據清除(如果存在的話),而後自動分區,把所有的硬盤空間分配給linux使用。Linux分區是一個讓人迷惑的技術問題,用服務器(server)安裝方式可讓初學者順利繞過這個麻煩。當然作爲一名系統管理員,分區的知識仍然是需要牢固掌握的。

7、   安裝引導工具LILOGRUB,選默認值GRUB,按“Next”繼續。

8、   配置網絡。需要根據本網的實際情況填寫主機名(hostname),IP地址,子網掩碼,默認網關,DNSIP地址。默認網關是一個很重要的參數,它的作用是要網關設備(通常是路由器)發送通告,表明自己在本網的存在。這類似與部隊收發室的情形:我們要往外寄信,首先把信送到收發室(默認網關),收發室自己決定怎樣處理信件;從外面寄來的信件,首先也被送到收發室(默認網關),然後收發室就會把信件轉發到收信人那裏。如果指定的默認網關不正確,就沒法與外面的網絡通信收發室的人不認識你,那麼你既不能發信,又不能收信。當然,即便在這兒填寫錯了,安裝完後我們仍然有機會更改這些錯誤的,所以也不用過於擔心。這一步本來的默認選擇是自動獲取IP地址,建議捨棄默認值。值得注意的是,如果這一步沒有出現“network device(網絡設備)接口 eth0”這樣的狀況,那麼不幸的事情發生了:系統不識別硬件(系統不包含該網卡的驅動或者沒有加載設備模塊),這也是我推薦使用3COM網卡而不用雜牌網卡的原因。

9、   設置時區。用鼠標點一下世界地圖上的中國某個區域就行,然後按“Next”繼續。

10、  設置root口令。設置複雜的口令。

11、  添加用戶,給該用戶設置口令。按“Next”繼續。

12、  選擇欲安裝的包。除了默認選中的包外,把x window system和圖形化的瀏覽器工具選上。這對以後的操作非常有幫助。按“Next”繼續。

13、  開始安裝。點擊“Next”。從這裏開始很長一段時間,我們唯一可做的事情是等待和更換光盤。這個過程中,安裝程序將從光盤上把相關文件複製到硬盤,創建文件系統並把我們選中的軟件包安裝在系統中。

14、  等待中......

15、  創建引導盤。既然有光盤就免了吧。可能有的軟驅早退役了呢!

16、  選擇顯卡。系統回自動檢測到顯卡,按“Next”繼續。

17、  選擇顯示器。鼠標點擊“Next”就是了。

18、  選擇定製X配製。實際上就是設置顏色和分辨率,選800*600後,按“Next”繼續。

19、  選擇用戶登錄方式。默認值是圖形方式,選擇文本登錄方式。按“Next”繼續。

20、  安裝完畢。出現祝賀窗口。能順利完成安裝,當然是值得慶賀的事情。只有成功地完成linux安裝,纔可能進一步激發我們對linux的興趣。鼠標點擊“Next,光盤從光驅中彈出,系統重啓,安裝完成。

21、  安裝成功確認。系統重啓,直到出現 login:,大功告成,接下來就是登錄和使用linux了。

 

意外事故

有一些條件會阻止我們順利安裝,這些障礙是需要繞過或克服的。儘管我在前面安裝準備部分爲克服這些麻煩做過提示,可是同樣的事情還是在發生。一種情形是,安裝系統硬件檢測過程找不到硬盤;這種情況主要發生在一些雜牌服務器/白牌服務器上,它的SCSI控制器不被識別所致,解決是使用隨機安裝光盤。另一種情況是安裝過程出現文件錯誤,這是由於不能正確地從光盤複製數據/文件所致;所以選擇一個好的光驅和正版的Redht linux 9套件/複製品 也是十分重要的。使用舊的版本安裝在較新配置的機器也是一個讓你發生意外的因素,比如/boot分區大小不能超過1024扇區,或者不能識別顯卡等,別保守,用新的版本吧!

 

 

二、高級安裝:PXE安裝 Linux

前面介紹了從CD-ROM安裝Linux這種最便捷、最直接的操作方法,但是,如果一旦遭遇需要同時安裝linux系統到多臺計算機上,那麼我們應該選擇一種更高效的安裝方式。PXE是其中的一種選擇。

PEX—Pre-boot Execution Environment協議可以使計算機通過網絡引導啓動。把安裝盤的內容複製到某臺服務器,欲安裝linux的計算機通過網絡實現多機同時安裝。下面是基本原理圖:

 

 

  這個過程與以前稱作“無盤工作站”的模式十分類似。說理論不太有趣,那我們就拿剛纔用光盤安裝好的那臺Linux做安裝服務器,同時充當TFTPDHCP服務器的角色,另撥一臺符合安裝條件的機器(“安裝準備”所列條款)通過PEX方式來完成linux的安裝。不過這還需要一個先決條件,就是網卡一定要支持從網絡啓動這個功能—3COM 3C509 系列網卡可以看到一個與主板BIOS形狀相似的ROM芯片。下面我們分幾步來完成整個安裝。

 

(一)  配置安裝服務器

1、  root登錄安裝服務器,用命令 rpm –qa | grep tftp 查看是否安裝了tftp軟件包,如果沒有,安裝一下(安裝軟件的方法將在後面的文章中詳細介紹)。

2、  修改tftp的配置文件,使tftp服務可以隨linux開機啓動(開機啓動這個服務不是必須的)。用命令vi /etc/xinetd.d/tftp 將文件/etc/xinetd.d/tftp其中的一句 disable=yes 改成 disable=no

3、  準備內核、PEX配置文件以及linux根文件系統。分成兩個步驟:①準備PEX配置文件創建目錄/tftpboot/pxelinux.cfg,然後複製第1張安裝光盤/isolinux目錄裏的文件isolinux.cfg*.msg到目錄/tftpboot/pexlinux.cfg,把文件/tftpboot/pxelinux.cfg/isolinux.cfg改名爲/tftpboot/isolinux.cfg/default;複製文件/usr/lib/syslinux/pxelinux.0到目錄/tftpboot。②準備內核和根文件系統複製第1張安裝光盤/images/pxeboot目錄裏的兩個文件vmlinuz(內核)和initrd.img(根文件系統)到目錄/ tftpboot中。

/tftpboot

 

 

 


                          pxelinux.0    pxelinux.cfg              vmlinuz            initrd.img

 

 

                                                    defaultisolinux.cfg

/tftpboot目錄示意圖

4、  配置dhcp服務器。使用命令 vi /etc/dhcpd.conf 修改文件/etc/dhcpd.conf,把下面兩行插入到文件中,而後保存:

filename  “pxelinix.0”

next-sever 192.168.100.100    //本安裝服務器的ip地址,即tftp服務器的ip地址

5、分別啓動dhcptftp服務。用命令 service dhcpd start 啓動dhcp服務,用service xinetd restart 啓動tftp服務。

 

(二)  準備ftp服務器

還是用這臺安裝服務器做ftp服務器。在RedHat linux 9上配置ftp服務器是非常簡單的事情:添加一個系統賬號和啓用ftp服務就完事了。

localhost# useradd sery     //添加用戶sery

localhost# passwd sery     //給用戶sery設置登錄密碼

 

localhost# start vsftpd start  //啓動ftp服務

但這只是一個空的ftp服務器,爲了符合我們的安裝任務,需要把3張安裝光盤的所有目錄/文件複製到sery用戶的ftp 的指定目錄。以root權限建立目錄 mkdir /home/sery/linuxsetup然後把RedHat 9的三張光盤按光盤的根目錄拷貝文件和目錄到目錄home/sery/linuxsetup,在拷貝第二和第三張光盤是會提示目錄裏有相同的文件夾或文件,問是否覆蓋,回答yes即可,複製完成後重啓一下ftp, # service vsftpd restart

 

(三)  安裝linux

啓動要安裝linux的計算機,通過更改CMOS的值設置機器從PXE引導,如果網絡與前面的dhcp、和tftp都正常工作的話,幾秒鐘時間就會出現我們一直期待的boot:提示符,輸入命令 linux askmethod回車……設置ip地址的獲取方式爲DHCP,……選擇安裝源爲FTP,屏幕提示輸入ftp服務器的ip地址(手動輸入 192.168.100.100,選中複選框 “非匿名用戶”,輸入用戶名“sery”密碼“******”和安裝文件目錄“/linuxsetup,按“Next”繼續。接下來的過程與從光盤安裝基本一致,只是沒有圖形安裝界面而已。經歷比從光盤安裝少很多的時間完成整個安裝。

 

 

 

一招一式攻克linux之二

第二招 基本配置,基本操作,必須掌握的命令

 

通過第一招的實踐,我們已經可以順利的安裝好linux操作系統,這僅僅是工作的一小部分,現在最迫不及待的事情就是使用這個系統。打開安裝好linux操作系統計算機的電源,讓機器正常引導,待系統引導完畢,我們的第一個操作---登錄開始了;在這一步,能執行的任務就是輸入用戶名root和初始安裝時設定的密碼,一旦輸入無誤,便可取得操作整個計算機的所有權限,開始了挑戰Linux的艱難之旅。

 

超級用戶賬號密碼

爲安全起見,需要定期更改超級用戶root的密碼。這個操作十分簡單,在shell提示符#後輸入 passwd回車,然後兩次輸入新密碼即可。退出root登錄,然後再次登錄,檢驗密碼修改是否正確。然而不幸的事情還是偶爾會發生,剛纔更改的密碼記不清楚了,root用戶登錄不了,急人啦,難道還要重裝linux操作系統?如果你還想嘗試一遍安裝操作,本是無可厚非的,但這並不是一個好主意,特別是在硬盤上存儲很多重要數據的情形下。請參照下面的操作來解決這個問題:

1、  手動重啓系統:按計算機復位鍵或先關閉計算機在開啓。

2、  當引系統到達“引導加載程序(選擇欲啓動的操作系統)”GRUB時(redhat 9在安裝的時候,我們默認安裝的引導程序是 GRUB),按鍵盤字母“e”鍵,如果硬盤上安裝多個操作系統的話,還需要用箭頭選中linux 啓動條目。將看到如下幾行文本(爲節省篇幅,多餘的文本省略了)

root (hd0,4)

kernel  /boot/vmlinuz-2.4.20-8  ro  root=LABLE/  hdc=ide-scsi    

initrd  /boot/initrd-2.4.20-8.img

3、  “kernel  /boot/vmlinuz-2.4.20-8  ro  root=LABLE/  hdc=ide-scsi” 改成 “kernel  /boot/vmlinuz-2.4.28  single  root=LABLE/  hdc=ide-scsi”後按回車鍵,返回編輯屏幕。

4、  按“b”鍵使用上面更改後的選項引導計算機,這樣計算機就進入單用戶模式(運行級別1)而不用輸入用戶名和密碼登錄。

5、  輸入命令passwd回車,兩次輸入新口令,然後小心保存。關於口令設置的建議有很多,可以根據自己的情況設置複雜口令。

6、  再次重啓計算機,這時便可順利使用新密碼進入系統了。

這個操作對於管理員來講,是十分有用的,但是如果這個服務器運行的是關鍵應用,那麼應當把它鎖在機櫃裏,因爲不是公司聘用的非管理員也能夠替你執行這個操作,很危險的。

 

用戶賬號

有句名言叫“linux就是網絡”,這就意味着linux系統不是系統管理員一個人把玩的,有太多的理由讓更多的人來使用這個資源。剛安裝完的linux系統,只有一個用戶root;沒有任何責任讓其他僅需使用一部分功能的人來共享root賬號和密碼。既然如此,給要用計算機資源的人開設賬號吧。

1、  開設賬號:在命令提示符輸入 #useradd sery 就可以成功的添加賬號sery,用命令#passwd sery 來給賬號sery 設置密碼。通過這種方式添加的賬號的主目錄將是/home/sery, sery用戶的環境變量.bash_profile在目錄 /home/sery中。也可以指定用戶的主目錄,例如我們要安裝數據庫軟件sybase ASE,需要指定它的主目錄爲/opt/sybase,通過輸入命令#useradd –d /opt/sybase sybse 就可以了,這樣sybase用戶的環境變量路徑也變成 /opt/sybase/.bash_profile。可以把一些用戶添加到一個組了,以滿足特定的功能。上面開設的兩個賬號,默認產生兩個組serysybase

2、  更改賬號:某天,公司的sery離職了,由新來的tieny接替他的工作,可以用命令#usermod –l tieny –m –d /home/tieny sery來實現。當然還應當把口令也改一下。

3、  刪除賬號:sery由於工作不力,被老闆開除了,那麼作爲系統管理員應當把他的賬號刪除,先刪除賬號#userdel sery,然後還要刪除sery用戶的主目錄/home/sery

需要注意的是,上述的賬號操作,只有具備管理員權限的用戶(比如root)纔可以進行的,普通用戶僅僅能更改自己的密碼而已。

 

文本編輯器vi

要使用Unix/linux來完成工作,你沒有辦法來回避使用文本編輯器這個工具。在unix/linux的世界裏,vi是赫赫有名的,ibmAIXSUNSolarisSCO UNIXRedHat Linux等等,沒有一個不用vi 這個編輯工具的。因此,作爲unix/linux系統管理員,必須熟練掌握這個基本技能。

vi文本編輯器打開以後,有兩種模式:命令模式和輸入(或者編輯)模式。在使用過程中,這兩種模式是需要來回相互切換的,初學者對此往往感到迷惑,下面舉一個例子來說明一下:

我們在此要把計算機的主機名改成sery,那麼就用vi編輯器修改配置文件/etc/hosts文件。輸入命令 #vi /etc/hosts 回車,立刻進入vi的命令模式。在這種模式下,可以進行查找、保存文件等操作,按字母“i”鍵切換到編輯模式---屏幕底部顯示“Insert”,然後光標定位,輸入相關的字符;輸入完畢並檢查無誤後,按“Esc”鍵切換到命令模式,接着輸入“:”加wq回車就把剛纔的輸入保存在文件/etc/hosts裏。整個過程總結一下流程就是:vi filename 打開文件---切換到編輯模式(“i”)----輸入文本----切換到命令模式(“Esc ,“:”)----保存文件(wq)。

[root@sybase root]# vi /etc/hosts

 

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1               localhost.localdomain localhost  //i切換編輯模式

 

202.108.93.200          sery  //這行是加上去的

//Esc鍵回到命令模式,再輸入“:”

wq                        //保存文件退出

 

有時,文件修改後不想保存它,則在命令模式下輸入“:q!,如果只是打開文件而沒有做任何修改,在命令模式下輸入“:q”就可以了。有一個技巧還是需要掌握的,那就是在文件中查找字符。編輯一個小的文件(字符數不多)用光標定位就可以完成修改,但是如果要編輯的一個文件較大,例如修改Apache的配置文件,根據實際應用,我們僅需對/etc/httpd/conf/httpd.conf做少許修改就可以了,假如用光標定位的方法來做這個事情,恐怕是一件很費時的事,這時,查找定位這個功能就派上用場了。查找是在命令模式下進行的,這一點要記牢。在apache的配置文件裏,我們要修改根文檔的位置,首先使用#vi /etc/httpd/conf/httpd.conf打開文件進入命令模式,然後輸入“?DocumentRoot”很快就可定位輸入點,接着按“i”切換到編輯模式,按要求修改文本,而後切換到命令模式保存退出。查找方式也是很靈活的,根據當前光標所在的位置,既可以向後查找,有可以向前查找,不過向前查找開始字符是“/”而不是“?”。vi的功能特別多,在此無法一一列舉,不過筆者介紹的方法已經足以對付日常的工作,隨着時間的推移,你同樣會逐步掌握更多的 vi 使用技能。隨着linux版本不斷的升級,vi也越來越便於使用,例如在linux桌面環境下,可以用鼠標選定文本,然後使用複製功能來簡化操作。

 

配置網絡參數

如果linux服務器不連入網絡,除了供管理員測試而外,再沒有別的實際意義,因此把linux服務器連入網絡就是必須的了。在第一招安裝linux時,我們已經把網絡的一些參數手動輸入了,但是有時還得在實際應用中更改某些參數。網絡參數主要包括:IP地址、子網掩碼、默認網關和指定dns服務器。IP地址、子網掩碼、默認網關由文件/etc/sysconfig/network-scripts/ifcfg-eth0來指定。用編輯器 vi 打開/etc/sysconfig/network-scripts/ifcfg-eth0,修改對應的值,我本人習慣把默認網關加在這個文件裏,即在這個文件裏插入一行“GATEWAY=X.X.X.X”。默認網關是個非常重要的設置,如果設置錯誤,linux服務器就只能訪問同一網段的主機而不能與其他網段的計算機互訪儘管其他的網絡參數設置完全無誤。我曾有意無意的犯過這個錯誤,結果每次都是一樣讓人沮喪。在講授網絡的課程裏,默認網關被定義成一個三層設備,講得通俗一點就是路由器,它的作用是連接不同網段/子網的通信,它記錄與它某一端口直連的同一網段的機器macip地址對應值(稱爲ARP)。路由器/網關不會自動獲得同一網段主機的mac-ip值,只有通過手動指定默認網關把主機的mac-ip值通告給網關。指定dns服務器地址可以讓linux服務器以域名的方式訪問互聯網上的其他機器。指定域名服務器地址過程很簡單,只需用vi編輯文件/etc/resolve.conf,輸入 nameserver 202.106.0.20 保存退出。需要特別注意的是,不要把指定dns服務器與設定本linux服務器爲dns服務器搞混了,這是兩個完全不同的東西:前者爲客戶端,後者爲服務器端。

還有一種特殊情況,在只有一個網絡設備的條件下,我們需要設置幾個IP地址,比如基於IP地址的虛擬主機。這種操作稱爲設備別名。eth0的第一個別名是/etc/sysconfig/network-scripts/ifcfg-eth0:1,用編輯器vi參照/etc/sysconfig/network-scripts/ifcfg-eth0的格式輸入網絡參數即可。

在系統提示符下,用命令#ifconfig eth0 200.200.200.200 255.255.255.248 up也可指定或修改網絡設備的網絡參數。但是這種修改方式是動態進行的,系統重啓以後就無效了。以命令#route add default gw X.X.X.X 添加的默認網關也是同樣的效果。

修改網絡參數後,要使修改立即生效,不需要重啓計算機,重新啓動網絡服務就可以了。在RedHat linux 9以後的版本,只要輸入命令#service network restart即可,然後用命令#ifconfig –a來檢驗修改的結果。

修改網絡參數需要管理員權限才能進行。

 

文件系統和原始設備

在這裏介紹文件系統和原始設備( raw device)的目的主要是爲將來安裝大型數據庫oraclesybase奠定一些基礎,因爲這些數據庫可以使用文件系統或原始設備作爲邏輯存儲區域。

文件系統是一種存儲數據的方法,採用分層目錄結構來存儲文件,由一個根目錄和許多子目錄、文件組成(IBM AIX 5L系統管理技術定義)。Redhat linux 9主要包括以下一些目錄:

1/bin:linux通用命令。

2/dev:系統設備文件。

3/etc:管理配置文件。

4/home:各用戶的目錄。

5/mnt:掛接設備的位置。

6/root:根用戶的主目錄。

7/sbin:系統管理命令和守護進程。

8/tmp:臨時文件目錄。

9/var:應用程序使用的數據目錄,如系統日誌文件目錄、匿名ftp目錄等。

10/usr:手動安裝程序的目錄。

對於文件系統的目錄及其目錄下的文件,我們可以直接進行訪問,例如在/tmp下創建目錄/tmp/test

原始設備指不是由基礎操作系統可以管理的磁盤,這句話不太好理解。給linux服務器添加一個硬盤,創建分區,但是不能直接用基本命令對這個分區進行操作,比如直接在上面創建目錄,只有通過掛接纔可以進行磁盤I/O操作。例子的命令:#mount /dev/sdb1  /mnt/dsk2, cd /mnt/dsk2,在這個目錄下就可以創建文件等基本操作了。Sybase等數據庫可以直接指定原始設備爲存儲空間,其目的是使數據的修改立即寫入磁盤。

 

運行級別

RedHat linux 0-6等幾種運行級別。與solarisAIX的運行級別的定義差異較大。按照前面安裝linux的設定,系統啓動後進入的運行級別是3。要切換到別的運行環境只需輸入#init  <runlevel> 。下面列出各個運行級別的功能:

1、  運行級別0:關機操作。

2、  運行級別1:單用戶維護模式。這種模式只能是用戶root,上文我們更改遺忘的 root 密碼就是在這種模式下進行的。另外,有時文件系統損壞時進行修復,也要在這種模式下進行。運行級別1相當與MS windows 2000的安全模式。

3、  運行級別2:多用戶模式。所有配置文件系統被掛裝,但NFS資源不可用。運行級別2MS windows 2000的帶網絡的安全模式有些類似。

4、  運行級別3:這是linux服務器的正常模式,系統資源完全可用。

5、  運行級別4:用戶自定義。

6、  運行級別5:多用戶帶網絡服務加圖形界面(init 3加圖形)。這相當於MS windows的正常模式。如果沒有安裝xwindow就不能啓用這個級別,用命令#startx也可從運行級別3切換到運行級別5

7、  運行級別6:重新啓動計算機。

在一般情況下,我們需要linux服務器工作在運行級別3下,偶爾爲了操作方便會使用5這個級別。Linux還有另外一些運行級別,但不多用。熟練掌握上述幾個運行級別對於系統維護是很有幫助的。

 

遠程操作linux服務器

linux服務器基本配置完成後,需要把它撤離測試臺,也許要把它放在隔自己辦公室很遠的idc機房,或者由於同事無法忍受機器巨大的噪音而必須把它放在某個隔離的小房間的機櫃裏。我們更願意坐在自己的辦公桌前,用桌面系統或筆記本來遠程控制和操作放在在某個地方的linux服務器,然後愜意的喝一杯咖啡。

telnet曾作爲最主要的遠程管理工具,由於其存在安全隱患而逐漸失寵,從RedHat linux 7.1開始,默認情況下 telnet 服務是不啓用的。安全shell包(ssh)由於它提供對數據的加密傳輸,具備較高的安全特性,因此越來越多的系統管理員正在在使用ssh來管理遠程的 linux服務器。

要使用ssh服務,應當保證openssh-server軟件包被安裝,一般情況下,ssh服務器被配置成自動啓動,在 linux服務器端,不必對ssh做任何設置,只需保證它被安裝和啓動就可以了。RedHat linux 允許root用戶遠程登錄,而RedFlag linux則在默認情況下不允許root 用戶遠程登錄。可通過修改文件 /etc/sshd/sshd_config,“PermitRootLogin no”表示不允許root用戶遠程登錄,“PermitRootLogin yes”表示允許root用戶遠程登陸。我本人習慣使用root遠程登錄。

1、           linux連接:輸入命令#ssh  <遠程linux服務器的ip地址或域名>,回車後輸入 root密碼就可以得到rootshell環境,與直接操作linux服務器一樣。

2、           windows連接:有多款用來連接linux服務器的遠程管理工具,比較有名的有SecureCRTNetTermXManagerPutty等。SecureCRT是個不錯的工具,它不僅支持ssh,還支持文件上傳功能。Windows下配置SecureCRT是比較容易的,在此不做介紹。

 

 

 

 

一招一式攻克linux之三

第三招 linux下軟件的安裝

 

linux系統上安裝軟件是不可避免的事情,儘管我們在安裝操作系統時已經默認安裝了一些應用軟件如apachevsftpd等。爲了讓linux服務器按我們的意圖工作,我們可能需要購買、下載或自行開發相關的應用程序,然後把它正確的安裝到linux服務器系統裏。相對於windows的應用程序而言,linux應用軟件的安裝方法要繁雜一些,因爲windows軟件安裝工作的大部分操作就是用鼠標點擊“下一步”或“確定”,然而linux應用軟件的安裝確是五花八門,毫無定勢。即便如此,linux應用軟件的安裝還是有章可循的,在本節裏,我將向大家總結幾種常用的linux應用軟件的安裝之法。

 

安裝前的準備:要安裝linux應用程序,需要把安裝程序或安裝包複製到linux服務器的硬盤上,然後再執行安裝。如果欲安裝的應用程序需要從網站下載,那麼最好先用windows的機器下載,然後用遠程管理工具SecureCRT把軟件壓縮包傳輸到linux服務器的硬盤。

 

一、             RMP包的安裝

Rpm包是一種爲產生軟件套件有RedHat 開發的軟件包格式。它可用於許多GUN/linux發行版本上,例如RedFlag linux。安裝RPM形式的軟件包很簡單,下面以一個安裝實例來說明:

1、             命令行下安裝。這裏我們安裝一個基於web的遠程管理工具webmin.先檢查包文件webmin-1.110-noarch.rpm,確保根用戶具有執行權限,然後執行命令 # rpm –ivh webmin-1.110-noarch.rpm ,按照提示就可以順利完成安裝。

2、             圖形方式下安裝。這與安裝windows的應用程序相當,用鼠標雙擊欲安裝的RPMwebmin-1.110.noarch.rpm圖標,然後根據提示也可順利完成安裝。另外一個安裝方法是啓用RPM包管理器,然後選取欲安裝的RPM包,這種方式也是很方便的。

有時候,我們並不能順利的進行RPM包的安裝,其中一個最大的障礙就是包的依賴關係,換言之,這個包的安裝還需要另外的包被安裝到系統。一個經驗是在安裝linux操作系統的時候,儘可能多的安裝一些包,比如gccgcc+等。如果不怕麻煩,可以選擇安裝所有的包。還有一個避免措施是安裝較新的linux發行版本,因爲新版本默認安裝包含更多的庫和編譯器(情況也不完全如此,有的軟件包可能需要舊版本的庫或編譯器)。另外一個引起安裝失敗的原因是RPM數據庫損壞,這是一種不太常見的故障,可以通過修復RPM數據庫來解決這個問題-輸入命令# rm –f /var/lib/rpm/_db.* 刪除RPM數據庫,再執行命令 # rpm –vv - -rebuilddb來重建rpm數據庫。

RPM包格式的軟件另外一個方便之處是軟件升級,當有新的版本時,可以直接升級舊的版本。在命令行下,執行 # rpm –Uvh <RPM包名> 就可以升級已安裝的包成爲新的版本。

命令 # rpm –e <軟件包> -nodeps 用來刪除一個已安裝的軟件包,查看某個軟件是否被安裝到系統,用命令# rpm –qa | grep <軟件包> 察看某個軟件包是否被安裝在linux 服務器上。

 

二、             SRMP包的安裝

SRMP這種安裝方式應用場合不是太多。欲安裝的軟件包沒有二進制版本或者想按照自己的意願來安裝軟件包的時候,就需要使用源代碼包來進行。按下面的步驟就可以容易的完成SRPM包的安裝:

1、             下載或拷貝SRPM到硬盤。這兒筆者以cpio-2.5-6.src.rpm爲例,把這個文件拷貝目錄/tmp/upload下。

2、             安裝文件cpio-2.5-6.src.rpm,以根用戶(root)執行命令 # rpm –ivh cpio-2.5-6.src.rpm, 完成後在目錄/usr/src/redhat/SPEC生成文件cpio.spec.

3、             進入目錄/usr/src/redhat/SPEC,運行命令 #  rpm –bb cpio.spec,執行完畢後在目錄/usr/src/redhat/RPMS/i386下生成文件cpio-2.5-6.rpm.

 

三、             Gzip/tar軟件包的安裝

   這是linux下最普遍的安裝方式。以個人的理解是gzip/tar包似乎比rpm包容易獲取,以爲很大一部分軟件都是以gzip/tar的形式提供下載的。以下面的基本步驟來完成 gzip/tar 軟件的安裝:

1、             從網絡下載或從光盤複製gzip/tar文件到硬盤某個目錄。在這裏以php-5.0.4.tar.gz爲例,筆者把文件php-5.0.4.tar.gz複製到目錄/root/upload,修改文件屬性 # chmod 700 php-5.0.4.tar.gz

2、             運行命令 # tar –zxvf  php-5.0.4.tar.gz 解壓完成後生成目錄php-5.0.4,相關的目錄和文件都在php-5.0.4下。

3、             進入目錄php-5.0.4,察看文件INSTALL獲得在linux平臺下的安裝方法。

4、             運行命令 # ./configure --prefix=/usr/local/php 配置安裝環境,參數--prefix=/usr/php的作用是爲php的安裝指定目錄,編譯過程是一個異常複雜的行爲,也是很靈活的一個功能,比如可以使用 --with-apxs=/usr/local/apache/bin/apxsphpapache整合起來。配置過程中可以使用很多的參數值,這相對與ms-windows來講就自由多了。

5、             編譯和安裝。配置成功完成後,就可以進行編譯安裝,通常是用命令 # make # make install

6、             清理安裝的臨時文件和卸載文件。清除臨時文件 # make clear , 卸載軟件 # make uninstall 或者刪除安裝目錄 /usr/local/php.

 

其他類型的安裝方法

第一類:二進制文件。只需直接執行文件就行了,如j2sdk-1.4.2-01-linux-i586-rpm.bin,運行命令# ./j2sdk-1.4.2-01-linux-i586-rpm.bin(需要執行權限),然後接着往下完成安裝。這個例子運行後生成文件j2sdk-1.4.2-01-linux-i586-rpm,參照標準的rpm包的方式完成安裝。

第二類:帶安裝腳本的壓縮包。把包解壓後,運行目錄裏的安裝腳本進行安裝。這裏舉兩個例子——webminSybase ASE 12.5_3,從網上下載webmin-1.240.tar.gz ase1253esd1xe_linux.tar.gz , 然後分別解壓 # tar  --zxvf  webmin-1.240.tar.gz , 進入目錄webmin-1.240 , 通過閱讀README文件得知安裝方法是運行安裝腳本 # ./setup.sh,按照給出的提示便可完成安裝;運行命令 # tar –zxvf w ase1253esdlxe_linux.tar.gz 後,生成安裝腳本setup.sh和一大堆目錄和文件,不過Sybase沒有給出INSTALLREADME文件,這裏就是運行# ./setup.sh進行安裝。

 

沒有辦法把所有的軟件安裝方法都列舉出來,但是一般而言,軟件的開發者都會給出安裝方法——通過閱讀READMEINSTALL文件獲得。對於初學者而言,使用rpm包可能要容易一些,但是,如果要真正地掌握linux,體驗開放系統的自由和隨心所欲,源碼安裝是不可迴避的。

安裝軟件是系統管理員的日常工作,絕大多數軟件的安裝還是很容易的,只要你耐心的閱讀READMEINSTALL文件就可完成安裝工作,至於象OracleSybase那樣的大型軟件,對於初學者就是一場艱難之旅,這就需要我們花更多的時間來熟悉linux和軟件本身,等到可以順利的安裝這些大型軟件的時候,你就是一名合格的linux系統管理員了。

 

 

 

一招一式攻克linux之四

第四招 linux下的文件服務器

 

    對於一個真實的運行環境而言,配置和啓用文件服務器都是很有必要的。把重要的數據集中存儲和管理,其安全性顯然比分佈存儲要可靠得多。爲此,建議系統管理員配製和啓用文件服務器作爲基本的管理策略。

根據使用的方式來看,可以分爲3種類別的文件服務器:ftp服務器(ftp/tftp)、 Samba服務器、NFS服務器。ftp的客戶可以是任意平臺,samba是專門針對windows客戶,而NFS則是面向linux/unix用戶的。下面是三種服務器的對比情況:

服務器名稱

用戶客戶端平臺

使用範圍

服務端口

FTP

Windows/linux/unix/macOS

發佈網站,文件共享

Tcp/21

Samba

Windows

文件共享(網上鄰居)

Tcp/445,tcp/139

NFS

Linux/unix

網站發佈,文件共享(mount

Tcp/2049

接下來我們就逐個來配置和運行這些服務器。

 

NFS服務器

       NFSSUN Microsystem公司開發的網絡文件系統,它是一種基於遠程過程調用(RPC)的分佈式文件系統架構。與Samba相比較,NFS的數據吞吐能力更強。

1、  用命令 # rpm –qa | grep nfs檢查軟件包NFS是否安裝 ,如果輸出沒有輸出,表明沒有被安裝,請自行安裝之。

2、  配置NFS服務器。用任何文本編輯器配置文件/etc/exports,來確定需要給客戶共享的目錄。它的基本格式爲 Directory     Host(options)  # comments ,3個字段/列要在一行,directoryhost(options)之間要有間隙,# comments 可有可無。主機選項主要是給與掛接用戶什麼樣的權限。目錄directory表示要共享出去的目錄,值得注意的是,在啓用NFS服務以前,系統管理員應該仔細一些,比如不小心共享了根目錄/,並且給與用戶讀寫權限,這是十分糟糕的問題。因此,儘可能少的共享目錄和賦予較小的訪問權限。主機名host是一個很靈活的項目,可以是單個的主機名稱(由/etc/hosts得到),主機ip地址,由域名服務器解析的主機名稱,IP網絡---網絡號和子網掩碼中間用“/”連接,NIC等。下面列舉一個例子。

/home/sery      sery(r,w)  #把目錄/home/sery共享給主機sery,並且主機對目錄#/home/sery有讀寫權限

/tmp         192.168.100.18(ro)  #主機192.168.100.18對目錄/tmp具備只讀共#享權限

/media/cdrom   192.168.100.0/255.255.255.0(r,o) #整個網絡有讀取掛接在NFS   

#服務器上的光驅光盤的讀取權限

   

   

 

 

 

 

 

3、  啓用NFS服務。分兩步:首先啓用portmap,然後啓用NFS服務。# service portmap start;

# service nfs start。其中portmap的功能是啓用遠程過程調用,有時啓用NFS不能成功,不妨檢查一下portmap服務是否啓動(# ps aux | grep portmap)。

4、  在客戶端掛接NFS共享出來的目錄。先在客戶端創建一個掛接點,如 # mkdir /mnt/nfs ,而後使用命令把nfs服務器共享出來的目錄掛接上,以第2步那個共享爲例,我們掛接目錄 /tmp , # mount –t nfs 192.168.100.100:/tmp  /mnt/nfs //假定nfs服務器的ip地址是192.168.100.100

5、  訪問NFS共享資源。接上步,改變文件目錄 # cd /mnt/nfs就方便地實現了對nfs服務器目錄/tmp的遠程訪問。

6、  卸載NFS文件系統。在客戶端執行命令 # umount /mnt/nfs 就卸下了第4步掛接的NFS文件系統。

7、  其他事項。前面我們描述了在客戶段用手工掛接NFS文件系統的操作,有的場合可能需要自動實現對NFS的掛接操作;修改文件/etc/fstab,把掛接項插入進去就可以了。對一個有較多連接的NFS服務器而言,有這樣一個問題---用戶在使用完掛接的文件系統後,並不會總記得卸載掉NFS掛接,這必然會增大NFS服務器的維護工作量以及白白佔用有限的系統和網絡資源;解決這個問題的辦法是使用自動掛接器(automounter)。關於自動掛接器屬於性能調優的範疇,在此不做描述。

 

Samba服務器

        這個世界既非只有linux/unix,也不是由microsoft windows 獨霸天下的格局。也許出於linux/unixwindows既競爭又共存的事實,人們開發了 linuxwindows用戶提供文件共享的工具Samba,這應該算得上linux的開放精神吧!

1、  檢查是否安裝samba軟件包。# rpm –qa | grep smb ,如果沒有則自行安裝samba

2、  修改配置文件/etc/samba/smb.conf。早期的linux版本的配置文件smb.conf的安全選項“security=share,這個默認值是個安全隱患,不過現在流行的linux版本的安全選項的默認值是“security=user”。如果只想用戶對他的目錄擁有隻讀權限,就把選項“writeable=yes”改成“read only=yes”。其他的選項根據自己的要求更改即可。對於一般的應用而言,基本上不用修改這個文件。

3、  添加系統賬戶。由於smb的訪問是使用系統賬號進行的,因此添加賬號是必不可少的。這個比較簡單,用命令 # useradd sery , # passwd sery,就可以依次添加若干系統賬號。

4、  建立Samba用戶密碼文件。雖然samba的用戶是系統用戶,但出於安全考慮,samba用戶的密碼並非創建系統用戶時設定的用戶密碼。爲了生成smb所需的密碼,應該進行下面的操作:

# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

# smbpasswd sery   //爲系統用戶設置smb口令

# chown root.root  /etc/samba/smbpasswd

# chmod 600 /etc/samba/smbpasswd   //不準別的用戶訪問 

     

    

 

 

     

5、  啓用Samba服務器。我比較喜歡用 # service smb start 這種方式。

6、  檢查服務是否正常啓動。# service smb status 或者 # ps aux | grep smb

7、  windows客戶端訪問 Samba服務器共享目錄。在windows環境下,右鍵點擊“網上鄰居”圖標,然後左擊“搜索計算機”,把Samba服務器的IP地址填寫在“計算機名”搜索欄,點擊立即搜索。找到後雙擊圖標,然後輸入在Samba服務器上預先設定的用戶名和密碼,就能合法訪問Samba服務器設定的共享資源。爲了方便使用,可以把Samba服務器提供的共享目錄映射成本地驅動器。

8、  其他。上述配置的samba服務器,用戶的訪問共享目錄是系統賬號的主目錄。要想把共享目錄設置到其他位置,修改Samba 的配置文件/etc/samba/smb.conf文件即可。

 

FTP服務器

       linux 環境下,有三個主要的FTP服務器:vsftpdproftpdwu-ftpd。因爲安全方面的原因,vsftpd目前已經牢牢的佔據了主導地位。從字面上我們就可以理解vsftpd所具備的主要特徵---very secure(非常安全之ftp)。資料表明:1、使用ASCII方式下載文件,在1G以太網上的下載速度可以達到86M/s2vsftpd可以支持15000個併發用戶的訪問。

1、  檢查是否安裝vsftp包。# rpm –qa | grep vsftpd。如果沒有則安裝它。

2、  修改配置文件。Vsftpd的配置文件爲/etc/vsftpd/vsftpd.conf,如果不打算提供匿名訪問的話,需要修改配置文件/etc/vsftpd/vsftpd.conf的項“anonymous_enable=Yes”爲“anonymous_enable=No”。

3、  啓用vsftpd服務。#service vsftpd start

4、  客戶端連接訪問。可以是專用的ftp客戶端工具,也可以使用瀏覽器。用工具訪問vsftpd服務器的速度要比用瀏覽器快很多。

5、  vsftpd服務器的用戶。Vsftpd服務器支持三種類型的擁護:本地用戶(擁有系統賬號)、虛擬用戶(guest)、匿名賬號;系統管理員應該根據安全需求來確定vsftpd服務器的用戶訪問策略。

 

TFTP服務器

      Tftp服務器主要用於遠程系統引導或遠程備份象CISCO這樣的網絡設備的配置文件,例如tftp服務器與DHCPFTP服務器相配合,就可以成爲一組linux安裝服務器,以利於進行大規模的網絡安裝linux操作系統。

   與上文提及的幾種服務器不同,tftp服務器是由超級守護進程xinetd運行的。這使的tftp服務器的配置操作比獨立運行守護進程的服務器(如vsftpd)簡單很多。一般情況下,只要修改文件/etc/xinetd.d/tftp,把“disable =yes 改成 disable =no,而後保存重新啓動超級守護進程xinetd , # service xinetd restart

 

      通過上面的實踐,儘管我們已經能夠順利的完成各種文件服務器的搭建和運行,也基本上可以滿足基本的用戶服務需求,也許在實際的工作中,可能有更多的性能或安全要求。一個明顯的例子就是,如果一個用戶的服務器使用的磁盤空間沒有做任何限制,那麼他完全有可能把他從internet下載的連續劇上傳到他自己的文件服務器目錄,從而把有限空間的硬盤塞滿。另外一個就是目錄和文件的權限問題,特別是以本地賬號(系統賬號)訪問文件服務器的情況,如果授權不當,將給系統管理帶來極大的麻煩。

   Linux所倡導的自由精神也同樣在這些服務器的配置操作中得以體現。可以通過修改這些服務器的配置文件來滿足特定的需求,而且這些修改是非常靈活的。比如vsftpd服務器的配置文件/etc/vsftpd/vsftpd.conf就有很多項目可以修改。

 

   附表:幾種文件服務器的維護

服務器名稱

 

啓動腳本

 

守護進程

 

配置文件

 

NFS

/etc/init.d/nfs

/etc/init.d/nfslock

/usr/sbin/rpc.nfsd

/usr/sbin/rpc.mountd

/etc/exports

Samba

/etc/init.d/smb

/etc/init.d/winbind

/usr/sbin/smbd

/usr/sbin/nmbd

/etc/samba/smb.conf

vsftpd

/etc/xinetd.d/vsftpd

/usr/sbin/vsftpd

/etc/vsftpd/vsftpd.conf

 

 

 

一招一式攻克linux之五

Web服務器Apache

 

相信使用過計算機的人,都應該有過訪問web服務器的經歷。在網站瀏覽新聞、登錄郵件服務器收發郵件、通過網絡購物、以瀏覽器方式配置防火牆等等,無一例外都有一個web服務器在爲訪問者提供服務。儘管有別的方式來實現對設備或服務的訪問(如配置衛星調制解調器),但以web方式提供訪問的策略依然是最受歡迎的,因爲它更直觀,也更方便。也是因爲這樣,是的web服務器得以更廣泛的流行。

Apachelinux主流的服務器,爲linux的迅速繁榮立下汗馬功勞。根據資料顯示,截至200512月,在internet上,Apache服務器以70.98%的絕對優勢雄居web服務器之首。在這節內容中,我們就話花些時間來討論linux下大名鼎鼎的web服務器Apache。請初學者注意,不要花費心思去搜尋名字爲apache這樣的軟件包,它現在的名字是httpd

 

Apache 服務器的安裝

有兩種安裝apache服務器的機會:安裝linux操作系統的時候選擇安裝web服務器和安裝完系統後安裝apache服務器。如果是在安裝linux操作系統期間沒有安裝apache,這就需要使用包文件來安裝。一個運行着的系統,你怎麼知道它裝沒裝apache服務器?用下面這個命令來檢查 # rpm –qa | grep httpd ,如果沒有輸出,則表明沒有安裝。下圖是某個安裝了Apache服務器輸出的一個輸出範例。

 

提示:如果是以源碼安裝的apache服務器,則此種方法無效,需要用find工具查找httpd文件是否存在。

1RPM包的安裝。Linux的安裝光盤和互聯網上,都可以得到apacheRPM安裝包,然後把安裝包複製到硬盤,並切換到安裝包文件所在的目錄。本案以httpd-2.0.52-9.ent.rpm爲例,執行命令 # rpm –ivh httpd-2.0.52-9.ent.rpm ,然後再執行 # rpm –ivh httpd-manual-2.0.52-9.ent.rpm 把手冊也安裝上去。

2、源碼安裝。到網站www.apache.org下載欲安裝的版本,筆者喜歡嘗試最新的版本,當前的最新有效版本爲httpd-2.2.0.tar.gz 。在httpd-2.2.0.tar.gz 文件所在的當前目錄解壓文件 # tar zxvf httpd-2.2.0.tar.gz ,然後切換目錄到 httpd-2.2.0 ,進行配置 # cd httpd-2.2.0.tar.gz ; ./configure --prefix=/usr/local/apache ,順利完成這步後,接着進行編譯安裝 # make;make install 。其中,配置這一過程,使用了選項“--prefix=/usr/local/apache”來指定apache的安裝目錄,使apache服務器所需的大部分文件都被複制在這個目錄裏。實際上,配置是一個很靈活的選擇,根據需要可以添加更多的選項,來支持更多的功能。由於這裏打算先講述基本功能,其它選項將在後面的應用中逐步增加。

 

配置文件

Apache的配置文件是httpd.conf,一般在/etc/http/conf/usr/local/apache/conf目錄,以rpm包形式安裝的apache的配置文件的位置是/etc/httpd/conf/httpd.conf。對 apache服務器進行得最多的操作恐怕就是在不時更改這個文件的內容。當然,如果只是運行簡單的靜態網頁,也可以不用對它做任何更改。

打開配置文件httpd.conf,可以獲悉根文檔的目錄位置。前面安裝的apache的根文檔位置是/usr/local/apache/htdocs(rpm包安裝的apache的根文檔位置是/var/www/html),欲運行自己的網站,需要把做好的網頁文件和目錄複製到apache的根文檔纔可以。當初,我在配置apache服務器的時候,在這一步費了不少周折。

 

上傳網頁文件及目錄

上傳網頁文件及目錄的最佳方式是啓用ftp服務。關於怎樣安裝、配置、啓用ftp服務在這裏不再介紹。創建一系統用戶,使該用戶對目錄/usr/local/apache/htdocs具有讀寫權限或者該用戶的主目錄爲/user/local/apache/htdocs。在這裏我們創建一用戶,使其主目錄爲apache的根文檔目錄。# useradd –d  /usr/local/apache/htdocs  webuser  //添加的用戶爲webuser,

# passwd webuser  //再給該用戶設置一個訪問密碼。這樣就可以很方便的修改或上傳網頁文件和目錄了。有的人認爲,用ssh客戶端工具也可以實現文件的上傳,但這是不方便的,因爲ssh客戶端工具只可以傳送文件而不能上傳目錄。

 

   啓用/關閉apache服務

       上面的步驟都準備好以後,就可以啓用這個網站服務器了。啓用方法如下:

# /usr/local/apache/bin/apachctl start   //源碼安裝的啓動方式

#/usr/local/apache/bin/apachectl stop 

# service httpd start                //rpm包安裝的啓動方式

# service httpd stop

    如果不出意外,apache服務器將如我們所期待的那樣運行起來,我們只要在某臺能訪問apache服務器的計算機瀏覽器裏輸入apache服務器的IP地址或者預先解析好的域名,網站的主頁就會出現在瀏覽器裏。在apache服務器端,通過輸入命令 # ps -aux | grep httpd 檢查apache服務器是否正在運行。到此,一個具備基本功能的apache服務器誕生了。

 

  虛擬主機

      有時候,我們可能需要用一個apache服務器來做多個web服務器,比如運行幾個不同的網站,這樣就可以大大地節省開支。

      使用虛擬主機大致有以下幾個步驟:

1、  確定使用虛擬主機的方式。虛擬主機有基於域名、IP、端口等幾種形式,應該根據自己的實際情況來決定。

2、  修改配置文件/etc/httpd/conf/httpd.conf / usr/local/apache/conf/httpd.conf.在這個文件裏,已經給出瞭如何更改的範例,它是以註釋方式出現的。只要按照範例的格式添加需要的內容即可。然後保存退出配置文件。

3、  域名解析(基於域名的虛擬主機)。這一步需要在域名服務器上進行。

4、  啓用/關閉虛擬主機。啓用/關閉apache守護進程即可,但這將關閉所有的web服務。能否單獨關閉某個虛擬主機,我本人沒這方面的經驗。

    接下來,我就給出以個虛擬主機的實例。先描述一下需求:一臺服務器,要求運行一個以PHP爲腳本的網站,另外還要用它來做網絡流量監控(需要web服務)。在這裏,我們採用二進制源碼包的方式來安裝配置apache虛擬服務器,以便於對apache服務器有更深刻的理解。

(一)安裝apache服務器。從www.apache.org下載包httpd-2.2.0.tar.gz到目錄/root,然後執行操作

# tar zxvf  httpd-2.2.0.tar.gz      //包解壓

# cd # tar zxvf  httpd-2.2.0.      

#./configure --prefix=/usr/local/apache --enable-module=most --enable-shared=max

# make

# make install

    到這兒,apache就算安裝好了,先測試一下,運行命令 # /usr/local/apache/bin/apachectl start ,然後在與之聯網的計算機的瀏覽器裏輸入運行apache服務的計算機的IP地址,出現測試頁面表明配置一切正常。

 

()安裝PHP。下載包php-4.3.11.tar.gz到目錄/root,然後執行下面的操作

# tar –zxvf php-4.3.11.tar.gz    //解壓文件

#./configure -–prefix=/usr/local/php -–with-apxs2=/usr/local/apache/bin/apxs  //正常//完成後會在/usr/local/apache/modules 裏生成文件 libphp4.so,並且會在//apache的配置文件httpd.conf里加上一行 LoadModule php4_module //modules/libphp4.so

# make

# make install

#cp php.ini-dist  /usr/local/lib/php.ini   //拷貝文件

 

完成後看是否真在目錄/usr/local/apache/modules生成文件libphp4.so,再打開配置文件httpd.conf中看 LoadModule php4_module modules/libphp4.so是否被自動追加。

 

(三)修改apache配置文件/usr/local/apache/conf/httpd.conf。加入行

TypeAdd application /x-httpd-php .php4 307行的位置,當然其他位置也是可以的。請特別注意:.php4前面有一個空格。我第一次配置php整合apache的時候就犯了這個錯誤,用了好幾天的時間才弄明白的。Php前面那個“.(小黑點)一定不要寫漏了,會有什麼後果,請讀者自己去嘗試一下。

 

(四)啓動一下apache服務器。找幾個php腳本的網頁文件,把它複製到apache指定的根文檔目錄/usr/local/apache/htdocs,然後在與之聯網的計算機的瀏覽器中輸入apache所在機器的URL(形如 http://192.168.100.10/test.php),來檢驗一下配置是否成功。

 

(五)創建虛擬服務器。Apache/2.2.0與以前的版本有些差異,它是以包含文件的方式來加載用戶定義的虛擬主機配置,前面的版本定義虛擬主機就在httpd.conf文件中。我們還是先在主配置文件中把虛擬主機的配置文件 /usr/local/apache/conf/extra/httpd-vhosts.conf 包含進來;具體的操作就是把行 #Include conf/extra/httpd-vhosts.conf 的註釋去掉,使之成爲Include conf/extra/httpd-vhosts.conf,這一行在httpd.conf的行號是394。然後保存後退出。接着我們打開文件/usr/local/apache/conf/extra/httpd-vhosts.conf,其默認狀態如下:

#

<VirtualHost *:80>

    ServerAdmin [email protected]

    DocumentRoot /www/docs/dummy-host.example.com

    ServerName dummy-host.example.com

    ServerAlias www.dummy-host.example.com

    ErrorLog logs/dummy-host.example.com-error_log

    CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

等我們先安裝配置mrtg,然後再回過頭來修改文件/usr/local/apache/conf/extra/httpd-vhosts.conf

 

(六)啓用交換機的snmp功能。要監控連接在交換機每個端口的服務器的網絡流量,必須啓用交換機的snmp,這樣就不必更改被監控的服務器的任何設置。關於怎樣啓用交換機的snmp,請參照相關文檔。

 

(七)安裝和配置mrtg。把軟件包下載到硬盤,解壓後直接安裝就是。配置mrtg有點複雜,在這裏僅僅給出方法,具體意思就不做說明,請大家自己去查手冊。

#./cfgmaker --global "WorkDir: /usr/local/mrtg/html" 

--global "icondir: /mrtg"  --global "language: chinese" 

--global "Options[_]: growright,bits"  --show-op-down

--ifref=nr --ifdesc=descr  --output=/etc/mrtg/mrtg.cfg    

  [email protected]>/dev/null  //是一個整行,交換機的snmp

//community的值是public

 #./ indexmaker -t "title" -o /usr/local/mrtg/html/index.html  

/etc/mrtg/mrtg.cfg

 

(八)修改虛擬主機配置文件。需要指定根文檔目錄、服務器名稱這幾項。

 

NameVirtualHost *

 

<VirtualHost *>

    ServerAdmin [email protected]      //假定域名爲sery.com

DocumentRoot  /usr/local/mrtg/html

ServerName mrtg.sery.com

ErrorLog /usr/local/apache/logs/error_log

    CustomLog /usr/local/apache/logs/access_log combined

    DirectoryIndex index.html index.php

</VirtualHost>

    保存後退出。如果要對虛擬主機的訪問進行用戶驗證,還需要在apache的主配置文件對虛擬機的根文檔目錄進行相關的處理。把下面的行插入到apache的主配置文件httpd.conf中。

<Directory "/usr/local/mrtg/html">

AuthName "mrtg

AuthType Basic

AuthUserFile /usr/local/apache/.mrtg   //帶點是爲了使文件的屬性爲隱藏

require valid-user

</Directory>

保存後退出。然後運行命令 # /usr/local/apache/bin/htpasswd –c /usr/local/apache/.mrtg  sery

按照提示設定用戶sery的訪問密碼。

 

(九)做域名解析。在域名服務器上解析主機mrtg.sery.com.

 

(十)啓用apache服務。用指令 # ps –aux | grep httpd 檢查apache是否正常運行,然後在另外的計算機的瀏覽器裏輸入apache服務器的URL,如輸入www.sery.com則應該訪問到主配置文件設定的網頁,如果輸入mrtg.sery.com則訪問上面設定的虛擬機頁面,並且需要輸入正確的用戶名和密碼才能訪問。

 

總結

通過上面的實踐,我們可以得出這樣一個結論:apache服務器功能設定的主要操作就是修改配置文件主配置文件httpd.con及包含配置文件。當然,apache的配置不僅僅是上文所描述的那些,可以說是非常豐富,也是非常靈活的,限於篇幅,不再詳敘。至於要讓apache隨系統啓動,可以把守護進程/usr/local/apache/bin/httpd&加在文件/etc/rc.local裏。

偏方:爲了在同一環境下使用更多的apache服務,可以安裝多個apache到不同的目錄,安裝目錄在安裝過程中的配置操作 ./configure – prefix=<安裝目錄> 制定,所有apache的配置原則都是一致的。所有配置完成後,把他們全部啓動起來。關於配置多個虛擬主機與安裝多個apache服務,究竟有多大的差別,望各位讀者自己去做評判。

 

 

 

一招一式攻克linux之六

Linux域名服務

 

域名服務是互連網上一個十分重要的服務,也是internet能夠迅速普及的一個重要原因。域名解析服務解決了用戶記憶IP地址的麻煩,因爲記住有意義的主機名比記住IP地址要容易得多,例如主機名www.ibm.comIP地址 129.42.17.99,我相信www.ibm.com更加容易被記住。

域名服務的功能是一種將主機名轉換成IP地址的一種機制,因爲計算機之間的通訊是不能直接識別主機名,只能識別IP地址。有多種把主機名轉換成IP地址的方法,但是在Internet上,是用域名服務器(domain name server)來處理成千上萬個主機和IP地址的轉換。

 

申請域名空間

中國的域名管理機構是中國國家互連網中心(www.cnnic.net.cn,20021216日起,國家互連網中心不再直接面對最終用戶提供CN域名註冊相關服務,域名註冊服務將轉由CNNIC認證的域名註冊服務機構提供。在註冊域名時,最好選擇本地的域名註冊服務機構。

註冊域名成功後,需要註冊商爲自己的域名空間解析一個或多個主機,大部分的域名註冊服務商會分配給用戶帳號,允許用戶在自己的域名空間做解析操作。爲了自己建立域名服務器,最好申請一段全球唯一單播IP地址。

 

安裝域名服務器BIND

大部分linux發行版都附帶Bind安裝包,先運行命令 # rpm –qa | grep bind ,看是否安裝域名服務軟件bind.如果沒有安裝的話,可以用linux的安裝光盤,找到rpm安裝包後手動安裝。正確安裝成功後,會生成一些相應的配置文件、守護進程及啓動腳本;如:在目錄/etc下有named.conf, rndc.key, rndc.conf, /etc/rc.d目錄下的啓動腳本named,以及 /var 下的區域文件named.canamed.local文件。也可以下載bind的源碼包來安裝。

 

配置域名服務器

配置域名服務器似乎比配置其他的服務要麻煩一些,因爲除了修改配置文件外,還需要自己動手編寫在配置文件裏定義的區域文件,而其他一些服務程序僅僅是更改一下配置文件。在配置文件中定義的區域越多,需要手動創建的區域文件也越多。

在未做配置之前,讓我們先熟悉一下配置文件named.conf的默認狀態值。

options {

 directory “/var/named”;    //定義區域文件所在的目錄

};

 

zone “.” IN {              //頂級域名服務器區域文件名稱

type hint;

file “named.ca”;

};

 

zone “localhost” IN {       //本機地址正向解析

   type master;              //DNS服務器的類型分主與輔助兩種

   file “localhost.zone”;

   allow-update {none};

};

 

zone  “0.0.127.in-addr.arpa IN {    //本機地址反向解析

   type master;

   allow-update{none};

   file  “named.local”;

};

在實際的配置過程中,只需在named.conf文件裏,照“zone{};”代碼塊的格式添加相關的行,是不是很容易呢?當然,根據具體的需要,還可以在named.conf文件中加入其他代碼快,比如轉發器 “forwarder {};”.現在,假設申請了一個域名空間sery.com,一段可用的全球唯一單播IP地址,並且在域名註冊服務商的服務器上解析出一臺主機ns.sery.com,IP地址爲202.108.99.222(假設的,勿對號入座),接下來就可以着手來配置了。

先把安裝了域名解析服務的機器IP設置成202.108.99.222,然後修改配置文件/etc/named.conf,內容如下:

//默認的代碼塊如上,此處省略以減少篇幅

zone “sery.com” IN {            //正向解析

   type master;

   file “named.sery.com”;

};

 

zone “99.108.202-addr.arpa” IN {  //反向解析

   type master;

file “ip.sery.com”;

};

 

 

 

include “/etc/rndc.key”;

保存文件然後退出。然後參照默認的區域文件/var/named/localhost.zone的樣式手動創建在/etc/named.conf中定義的區域文件named.sery.comip.sery.com文件。localhost.zone文件的內容如下:

$TTL 86400     //解析的地址在數據庫中緩存時間

$ORIGIN localhost

@    ld  IN SOA    @ root (

             20060101        //序列號

             28800           //刷新時間

             7200            //重試時間

             3600000         //過期時間

             3h              //保存時間

             )

     ld  IN  NS   @ 

     ld  IN  A   127.0.0.1

vi編輯器把文件/var/named/named.sery.com改成下列式樣:

 

$TTL 86400     

@         IN SOA  sery.com.  root.sery.com. (

             20060101       

             28800          

             144000          

             3600000        

             86400             

             )

;Name servers

          IN  NS   ns.sery.com.           //DNS

          IN  NS   ns1.sery.com.          //DNS

;mail server

          IN  MX   mail.sery.com.

 

ns        IN  A    202.108.99.222

ns1       IN  A    202.108.99.200

www       IN  A    202.108.99.201

mail      IN  A    202.108.99.202

ftp       IN  A    202.108.99.203

再創建反向解析文件 # vi /var/named/ip.sery.com:

$TTL 86400     

@         IN SOA  99.108.22-addr.arpa.  root.sery.com. (

             20060101       

             28800          

             144000          

             3600000        

             86400             

             )

          IN  NS   ns.sery.com.

          IN  NS   ns1.sery.com.

          IN  MX   mail.sery.com.

200                         IN  PTR  ns1.sery.com.

201                         IN  PTR  www.sery.com.

202                         IN  PTR  mail.sery.com.

203                         IN  PTR  ftp.sery.com.

222       IN  PTR  ns.sery.com

到這個步驟,一個具備基本功能的域名解析服務器就創建成功了。一個不可忽視的問題是在域名空間和主機名的後面都有一個代表頂級域的點“.”,很多配置任務不能成功的原因就是把這個“.”給丟掉了。出於安全考慮,最好給配置文件和區域文件加上訪問權限,只允許超級用戶有訪問權限。即 # chmod 700 /etc/named.conf , # chmod –R 777 /var/named/.也可以把區域文件用  # tar cvf  named.tar  /etc/named 打包後把它備份到安全的地方,這個方案對於充當多域解析或要解析大量主機的服務器很有好處,因爲在發生故障或遷移服務器時恢復DNS服務將大大節省時間。

在比較重要的網絡環境中,可能需要服務不間斷的運行,一個單獨的DNS無法保障網絡服務不間斷的提供,這需要配備一個或多個輔助域名服務器.輔助域名服務器需要單獨的服務器來擔當.與主域名服務器的配置文件相比,只需少許的變化.接前面的例子,我們把另外一臺linux 服務器的IP地址設置成202.108.99.200,修改配置文件/etc/named.conf:

options {

 directory “/var/named”;   

};

 

zone “.” IN {             

type hint;

file “named.ca”;

};

 

zone “localhost” IN {      

   type master;             

   file “localhost.zone”;

   allow-update {none};

};

 

zone  “0.0.127.in-addr.arpa IN {   

   type master;

   allow-update{none};

   file  “named.local”;

};

zone “sery.com” IN {            

   type slave;

   file “named.sery.com”;

   master { 202.108.99.222;};

};

 

zone “99.108.202-addr.arpa” IN { 

   type  slave;

file “ip.sery.com”;

master {202.108.99.222;};

};

 

 

 

include “/etc/rndc.key”;

修改完配置文件後,把主服務器上創建的區域文件拷貝到輔助服務器的/var/name目錄下.

 

     DNS服務的啓動和關閉

     由於DNS服務需要持續運行,在大部分情況下,都是把它作爲系統服務自動運行的.要確保相應的運行級別目錄有啓動運行腳本.運行命令 # service named start 啓動DNS服務,命令 # service named stop  停止DNS 服務.

 

DNS服務的驗證

有很多種方法檢驗DNS服務器配置的正確性,最簡單的方法是nslookup,我通常使用從外地的機器訪問用DNS服務解析的主機.比如我讓上海的兄弟ping 我解析的主機.

 

額外的話題

1、  關於多域的DNS解析配置.一個域名服務器可以提供多域解析服務,需要的操作是在配置文件定義區域,然後單獨創建定義的每個區域文件。

2、  主機域名與IP地址並非一一對應的關係

3、  DNS對於負載均衡的作用。通過別名的定義可以實現簡單的網絡訪問的負載均衡。

 

 

一招一式攻克linux之七

Linux數據庫服務器

       數據庫是一項十分重要的網絡服務,它被廣泛地應用在internet網站、搜索引擎、電子商務等諸多領域。在開源社區,MySQL以其開放源代碼、性能高效而穩定、多用戶多線程等特性獲得“世界最受歡迎的開放源代碼數據庫”,本文將以MySQL爲例,介紹linux數據庫的安裝、配置和使用。

MySQL的安裝
    RedHat 大部分發行版的安裝光盤都附帶MySQL安裝程序,RedHat AS 4 內置的MySQL版本是MySQL 4.1.10.可以在安裝linux操作系統時選擇安裝MySQL數據庫,也可以在操作系統運行中安裝MySQL數據庫。經驗表明,在安裝操作系統的時候選擇安裝MySQL數據庫要比操作系統運行中(以rpm包形式的話)要容易的多,因爲以rpm包安裝很可能出現包依賴或軟件衝突的問題,而解決這些附加的依賴包,真的不是一件令人愉快的事情。用命令# rpm –qa | grep mysql 查看系統是否安裝MySQL,如果輸出沒有內容,表明MySQL沒有被安裝。接下來,我們以兩種方式來安裝MySQL數據庫服務器。
1、      rpm包方式安裝。至少需要以下幾個RPM包文件:
a.      mysql-server-4.1.7-4.RHEL4.1.rpm (mysql 數據庫主程序).
b.      mysql-devel-4.1.7-4.RHEL4.1.rpm (mysql 使用的庫和頭文件).
c.      mysql-4.1.7-4.RHEL.rpm (mysql客戶端程序)。
把上面這幾個文件複製到硬盤的目錄(比如/root),以root帳號執行命令 # rpm –ivh mysql-devel-4.1.7-4.RHEL4.1.rpm ; rpm –ivh mysql-server-4.1.7-4.RHEL4.1.rpm ; rpm –ivh mysql-4.1.7-4.RHEL4.1.rpm ,即可完成安裝,如果不幸出現安裝失敗的事件,多半是由於包依賴引起的,請按錯誤提示信息安裝所需的依賴包,然後再執行MySQL數據庫的安裝。
     2、源碼包的安裝方式。依照版本的不同,二進制源碼包的安裝方式也是差異極大的。先從MySQL的官方網站下載所需的穩定二進制源碼包,運行命令 # tar zxvf mysql-standard-5.0.18-linux-i686-glibc23.tar.gz ,通過閱讀文件README及INSTALL獲得安裝MySQL的方法。在這裏,筆者使用的是mysql-standard-5.0.18-linux-i686-glibc23.tar.gz,其他版本的安裝方法請參照其解壓後的README和INSTALL文件的說明。按照INSTALL文檔,執行以下步驟來完成安裝:
(1)把解壓後的目錄及文件移動到目錄/usr/local .#mv mysql-standard-5.0.18-linux-i686-glibc23 /usr/local .
(2)創建連接文件# ln –s /usr/local/ mysql-standard-5.0.18-linux-i686-glibc23 /usr/local/mysql
(3)切換目錄 # cd /usr/local/mysql 。
(4)創建用戶 # useradd mysql.
(5)執行腳本 # scripts/mysql_install_db --user=mysql 初始化數據庫。
(6)更改目錄屬組和權限 # chown -R root . ; chown -R mysql data ; chgrp -R mysql .

MySQL數據庫服務器的啓動及關閉
    1、以RPM包安裝的MySQL數據庫服務器的啓動:執行命令 # service mysqld start 。如果需要MySQL數據庫服務隨系統開機運行,執行命令 # chkconfig –add mysqld 就把mysqld添加到相應的運行級別裏。執行命令 # service mysqld stop 關閉數據庫服務。爲確認mysqld是否運行,執行命令 # ps –aux | grep mysqld 查看一下。
    2、以二進制源碼包安裝的MySQL數據庫的啓動:執行命令 # /usr/local/mysql/bin/mysql_safe –user=mysql & .爲了讓MySQL服務開機運行,通過編輯文件 /etc/rc.local ,把行/usr/local/mysql/bin/mysql_safe –user=mysql&追加進來。關閉mysqld則以殺進程的方式來完成。

MySQL的配置
    安裝完MySQL數據庫服務後,仍然需要對某些配置做適當的修改才能滿足實際的需求。首當其衝的是修改mysql管理員帳號root(注意:與系統帳號root是兩碼事),執行命令 # mysqladmin –u root password d%te6*h 設定密碼爲” d%te6*h”。另外一個可以操作的地方是MySQL的配置文件my.cnf,其內容如下:
[root@sery etc]# cat -n my.cnf
  1 [mysqld]
  2 datadir=/var/lib/mysql
  3 socket=/var/lib/mysql/mysql.sock
  4 # Default to using old password format for compatibility with mysql 3.x
  5 # clients (those using the mysqlclient10 compatibility package).
  6 old_passwords=1
  7    
  8 [mysql.server]
  9 user=mysql
  10 basedir=/var/lib
  11
  12 [mysqld_safe]
  13 err-log=/var/log/mysqld.log
  14 pid-file=/var/run/mysqld/mysqld.pid

    配置文件給出3種啓動MySQL服務的方法,根據自己的實際需求修改配置文件my.cnf,比如修改數據目錄 datadir 的值。以二進制源碼安裝的MySQL數據庫,其運行需要的配置由運行腳本 mysqld_safe指定,如須更改則需要修改這個腳本文件。

管理MySQL
    大致有三種遠程管理MySQL數據庫的方法:登錄系統進行管理、使用客戶端工具管理、基於瀏覽器方式(phpMyAdmin)。登錄系統管理是指以securecrt這樣的工具,用系統帳號通過SSH協議連接MySQL數據庫所在的服務器,然後以系統用戶執行命令 # mysql –u root –p 來連接數據庫,進行相關的操作。第三方開發了許多基於windows的mysql客戶端工具,這些工具大多提供圖形方式的管理形式,操作起來非常直觀和方便。基於瀏覽器管理是最方便的了,因爲它不需要安裝客戶端,操作也很直觀,用的人也是很多的。當然,作爲linux系統管理員,是應該掌握用mysql命令行來管理MySQL數據庫。接下來,筆者爲大家介紹mysql和phpMyAdmin。
    1、mysql:以用戶mysql登錄系統,執行命令 # /usr/local/mysql/bin/mysql –u root –p 回車,輸入正確的密碼,回車後出現下面的輸出,表明mysql客戶端已經與MySQL數據庫正常連接,在提示符 mysql > 輸入相關的sql語句進行各種操作。
Welcome to the MySQL monitor. Commands end with ; or /g.
Your MySQL connection id is 3 to server version: 5.0.18-standard

Type 'help;' or '/h' for help. Type '/c' to clear the buffer.

mysql>

    2、phpMyAdmin:從網站http://prdownloads.sourceforge.net下載軟件phpadmin-2.6.4的二進制源碼包 phpmyadmin-2.6.4-pl4.tar.gz,執行命令# tar zxvf phpmyadmin-2.6.4-pl4.tar.gz解壓後,把目錄及文件移動到apache服務器的根文檔所在的目錄#mv phpmyadmin-2.6.4-pl4 /var/www/html ,接着修改phpmyadmin的配置文件config.inc.php, 把行“$cfg[‘Servers’][$i][‘password’]=’’’’ 改成“$cfg[‘Servers’][$i][‘password’]=’’ d%te6*h’’.保存文件,再另一計算機的瀏覽器的地址欄輸入 http://<MySQL數據庫服務器的ip地址>/phpMyAdmin/index.php,即可對mysql數據庫進行管理操作。注意:apache服務器應設置成支持php腳本,否則無法工作。

MySQL數據庫的基本操作
    1、 數據庫的操作。(1)創建數據庫:MySQL創建數據庫的SQL 語法爲:create database < 數據庫名稱>,例如要創建數據庫dangan,輸入命令 mysql > create database dangan;(注意是以分號結束的),執行完畢後會在 /usr/local/mysql/data或/var/lib/mysql 生成目錄 dangan。用命令 mysql > show databases; 查看已經創建好的數據庫。(2)使用數據庫。用命令 mysql > use <數據庫名稱> ; 來使用已經創建的庫。(3)刪除已創建的庫:mysql > drop database <數據庫名稱>; 操作完成後,在/usr/local/mysql/data或/var/lib/mysql裏與刪除數據庫同名的目錄被刪除。
Mysql > create database dangan;   //數據庫名區分大小寫,命令不區分,//“create database” 與 “CREATE //DATABASE” 等同
Mysql > use dangan;         //使用數據庫dangan
Database changed           //回顯

Mysql > drop database dangan;   //刪除數據庫dangan

    2、表的操作。從文件系統看,表是某個數據庫目錄所屬的文件,在一個數據庫裏創建一個表,那麼就會在數據庫目錄生成幾個與表名相同而後綴不同的文件。(1)創建表:創建表的語法爲 create table <表名>(字段1,字段2…..),表創建完成後,輸入 describe <表名> 查看剛創建的表的結構。(2)修改表:主要的一些操作有添加、刪除或者修改表的字段,創建或撤消索引等,其語法格式爲 alter table <表名> 更改動作1 [更改動作2….],更改動作包括add,drop,change,alter及modify等關鍵字。
    3、記錄的操作。記錄是表中存儲的數據,通過SQL的數據操縱語言(DDL)進行插入、刪除和修改表中的記錄。(1)插入記錄:基本格式爲insert into <表名> (字段1,字段2…) values(字段1的值,字段2的值….)。(2)刪除記錄:基本語法爲delete from <表名> where <條件表達式>。(3)修改記錄:基本語句爲update <表名> set 字段名1=字段值1 [,字段名2=字段值2…] where 條件表達式。
    4、創建和刪除用戶。Mysql數據庫的用戶記錄存儲在表mysql.user中,創建一個用戶就是向mysql.user表添加一條記錄,刪除用戶即是從該表刪除一條記錄。
    5、設置用戶權限。爲安全起見,對數據庫對象的訪問必須授權進行。在MySQL中,常使用GRANT語句授予用戶訪問權限。Grant的語句格式爲 grant 權限表 [(字段表)] ON 數據庫名.表名。

數據庫的備份和恢復
    筆者認爲,給數據庫備份應該是系統管理員的一項基本職責。有兩種備份MySQL數據庫的方法(第三方備份軟件除外):直接複製和使用mysql備份工具mysqldump。
    1、直接複製。對於版本號高於3.23的mysql數據庫,備份時直接複製數據庫目錄及其下面的文件。恢復時只須把備份的數據複製到原來的目錄,隨後啓動mysql數據庫,備份數據就自動恢復了。值得注意的是,在複製數據的過程中,可能會產生目錄或文件權限變更的情況,因此在恢復操作前應先覈實一下複製過來的目錄和文件的權限及屬主(屬主應該是mysql而不是root等)。
    2、Mysqldamp.是專門用來備份mysql數據庫的工具,執行命令 # ./mysqldump –opt dangan –u root –p > /backup/dangan.sql 把前文創建的數據庫備份到目錄/backup。執行命令# ./mysql –u root –p < /data/dangan.sql 就很容易的把備份的數據庫恢復了。也可以單獨對數據庫的表做單獨的備份及恢復操作。

一招一式攻克linux之八

Linux 網關服務

        在網絡互聯的應用環境,網關起了非常重要的作用。在internet上,由路由器這樣的專用設備來擔當網關的職責。對於一些應用要求不是太高或者資金緊張而不願購買昂貴的路由器的機構,由linux來充當網關無疑是個聰明的選擇,實踐證明,基於linux部署的網關同樣有着很好的性能。
用 linux可以輕鬆地實現網絡地址轉換(NAT)、動態主機配置協議服務(DHCP)、虛擬專用網絡服務(VPN)和防火牆(Firewall)等基本網絡網關服務.而完成這些任務僅需一臺pc外加一套linux發行套件,是不是很省錢呢?
從功能上看,網關是幾個網絡互聯的中間設備,因此作爲網關的計算機,起碼應該具備兩個以上的網絡接口;一個接口連接外部網絡(ISP接入),另外一個接口連接自己的內部網絡。一個需要注意的問題是,在這個計算機上使用的網卡應該能被linux所支持,所以建議使用比較流行的、質量比較好的網卡。物理部件都準備好後,開始安裝操作系統。網關操作系統的安裝與一般的linux應用服務器有些差別,在安裝過程中,選擇server (服務器) 方式,安裝非常少的一些軟件,也不需要xwindow,安裝界面也使用文本形式進行,按照自己硬盤的大小和實際情況劃分一下分區,要不了幾分鐘就可以安裝完成。以root帳號登錄系統,檢查網絡參數是否設置正確。爲了方便起見,在這裏指定外網網卡的名稱爲eth0,內網網卡爲eth1.如果網絡參數沒有被正確的設置,請修改文件 /etc/sysconfig/network-scripts/ifcfg-eth0和/etc/sysconfig/network-scripts/ifcfg-eth1,假定eth0的ip地址爲 202.107.100.22 netmask 255.255.255.0 gateway 202.107.100.29 ,eth1的 IP地址爲 192.168.1.1 ,netmask 255.255.255.0。然後運行命令 # ntsysv ,關閉一些不必要的服務,比如sendmail等。

網絡地址轉換(NAT)服務
    衆所周知,因爲IPv4地址的資源短缺,internet接入服務商(ISP)分給用戶的全球唯一單播地址非常有限,爲了讓大量沒有全球唯一單播地址的內部網絡的主機訪問互聯網,通常的做法就是在自己的內部網絡使用網絡保留地址(私有網段如192.168.1.0/24這樣的網絡地址段),然後通過連接網關,在網關上啓用網絡地址轉換功能就實現了整個網絡訪問internet的功能。NAT分兩種類型-源地址轉換(SNAT)和目的地址轉換(DNAT)。源地址轉換用於內部網絡主機訪問internet,目的地址轉換(DNAT)用於internet上的主機訪問網關內的內部主機(使用的是保留地址)。可以在網關上同時實現SNAT和DNAT。

    1、源地址轉換SNAT。分兩步進行:
    (1)啓用內核的ip轉發功能。通過修改文件 /etc/sysctl.conf文件,把 “net.ipv4.ip_forward = 0改成 net.ipv4.ip_forward = 1”,運行命令 # sysctl –p 使修改立即生效。
    (2)編寫一個源地址轉換腳本/root/sant.sh,使其包含 “/iptables –t nat –A POSTROUTING –o eth0 –j SNAT –to 202.107.100.22 “行,保存腳本然後給與執行權限,然後執行這個腳本 # /root/snat.sh.
到這裏一個具備基本功能的地址轉換網關就做成了,我們在內網主機把默認網關設置成網關的內網網卡IP地址192.168.1.1,如果一切正常的話,內網的用戶就能訪問internet上的資源了。當然,不能每次都手動執行一遍腳本 /root/snat.sh,最好把 /root/snat.sh寫在腳本/etc/rc.d/rc.local裏,這樣只要一開機就可以啓動腳本/root/snat.sh的源地址轉換功能。
2、目的地址轉換DNAt.分兩步進行:
    (1)啓用內核ip轉發功能。方法與SNAT相同,不再敘述。
    (2)編寫一個目的地址轉換腳本/root/dnat.sh。其內容如下:
# !/bin/bash
iptables –t nat –A PREROUTING –p tcp –d 202.107.100.22 –dport 80 –j DNAT --to 192.168.1.101:80
iptables –t nat –A PREROUTING –p tcp –d 202.107.100.22 –dport 25 –j DNAT --to 192.168.1.102:25
iptables –t nat –A PREROUTING –p tcp –d 202.107.100.22 –dport 110 –j DNAT --to 192.168.1.101:110
保存該腳本並給與執行權限,就可以從internet訪問在內往只有保留地址的各種網絡服務。以把這個腳本寫入 /etc/rc.d/rc.local,使它隨系統一起自動運行。

動態主機配置協議-DHCP
    系統管理員使用DHCP服務,可以大大簡化客戶計算機設定ip地址的工作,因爲啓用動態主機配置協議(DHCP),服務器會自動地爲聯網的客戶端計算機分配IP地址、子網掩碼、默認網關、域名解析服務(DNS)等入網所必需的參數值。這同時也減輕了網絡管理員管理和維護的負擔。當然,並不是所有場合都使用DHCP服務,比如服務器就應該手動設定靜態網絡參數。一個比較恰當的方案是在一個網絡中同時使用DHCP和靜態網絡參數設定。
DHCP的設定主要發生在服務器端,客戶端基本上不用做設置。下面分3步來部署DHCP服務:
1、安裝DHCP。默認的情況下,linux自動安裝DHCP服務。用 # rpm –qa | grep dhcp 檢查 DHCP是否被正確安裝到系統中,如果沒有安裝,則下載rpm包或二進制源碼包安裝。這裏假定下載的是rpm包 dhcp-3.0.1-12_EL.rpm,運行命令 # rpm –ivh dhcp-3.0.1-12_EL.rpm安裝dhcp。DHCP服務需要讀取配置文件dhcpd.conf才能正常提供服務的,但是安裝完成dhcp後並沒有現成的dhcpd.conf這個配置文件,這需要我們手動來創建文件 /etc/dhcpd.conf.
2、配置DHCP。在安裝dhcp 的同時會安裝一個範本文件/usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample,把這個範本文件複製到目錄/etc下,並改名成dhcpd.conf。其操作方法是 # cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf.照着這個範本的模式修改就不易出錯。Dhcpd.conf的基本格式如下:
選項/參數
聲明{
  選項/參數
  }
接下來是我的一個dhcp配置文件的實例:
ddns-update-style interim;   //動態dns更新類型,這項必選
ignore client-updates;     //忽略客戶端更新DNS紀錄

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.80 192.168.1.200; //可分配給客戶端的 ip地址範圍
option routers 192.168.1.1;     //指定默認路由,可以有多個,中間用逗號隔開
option subnet-mask 255.255.255.0;
option domain-name-servers 202.106.0.20;
default-lease-time 86400;     //缺省租期爲24小時
max-lease-time 172800;     //最大租期爲48小時,可以更改這個值
}

上面的配置只是一個網段實施DHCP的情形,在稍大一點的網絡應用環境,可能有多個網段需要DHCP服務,可以在每個網段內架設一個DHCP服務器,但這決不是一個好的決策;實際的操作就是用一臺DHCP服務器來爲多個子網分配ip地址。下面是一個爲3個子網提供DHCP地址分配的樣例:
ddns-update-style interim;
ignore client-updates;

shared-network public {
option subnet-mask 255.255.255.0;
option domain-name-servers 202.108.0.20;
default-lease-time 86400;
max-release-time 172800;

subnet 192.168.1.0 netmask 255.255.255.0{
 range 192.168.1.80 192.168.1.200;
option routers 192.168.1.1;
}

subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.20 192.168.2.220;
option routers 192.168.2.1;
}

subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.10 192.168.3.250;
option routers 192.168.3.1;
}
}
  3、啓用DHCP服務。執行命令 # service dhcpd start 就啓動了dhcp服務器。如果是以2進制源碼包形式安裝的話,請執行相應安裝目錄下的守護進程。
  對於給多個網段提供DHCP服務的情形,需要在內部的路由上設置ip地址求助功能,具體的設置請參照各路由器廠商的資料,在此不做說明。使用dhcp方式獲取ip地址的客戶端設置很簡單,windows的用戶選TCP/IP協議屬性“自動獲取IP地址”即可。

虛擬專用網絡(VPN)
    虛擬專用網是藉助公共網絡internet來連接在不同地理位置的本地網絡,網絡間的訪問就像本地訪問一般。由於VPN在傳輸數據的過程中對數據進行了加密,儘管這些數據在公共網絡上傳輸,其安全性還是很高的。這幾年帶VPN功能的硬件設備還是賣得很歡的,有些防火牆廠商還拿它的VPN功能作賣點呢。在這裏我們不關注硬件VPN,只講linux下的VPN.
    1、安裝VPN 包。需要dkms-2.0.10-2.fc5.noarch.rpm, kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm , ppp-2.4.3-9.2.i586.rpm 和 pptpd-1.3.1-0.i386.rpm這幾個rpm包。然後分別執行命令 # rpm –ivh dkms-2.0.10-2.fc5.noarch.rpm ; rpm –ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm ; rpm –ivh ppp-2.4.3-9.2.i586.rpm ; rpm –ivh pptpd-1.3.1-0.i386.rpm 完成安裝。
    2、配置VPN服務。有兩個文件需要修改:主配置文件/etc/pptpd.conf 和VPN用戶帳號文件/etc/ppp/chap-sescrets。主配置文件需要設置VPN服務器的本地地址和分配給客戶端的地址段,因此只需在主配置文件中手動追加localip和remoteip兩行就算完成配置任務。帳號文件保存VPN客戶端撥入需要的驗證信息,其格式是:
用戶名 服務   密碼   分配給用戶的口令
其中用戶名,密碼,分配給用戶的IP地址要用雙引號括起來,“服務”一般是pptpd。作爲參照,下面給出一個pptpd.conf及chap-secrets的實例:
# more /etc/pptpd.conf
localip 192.168.1.20
remoteip 192.168.1.201-220

# more /etc/ppp/chap-screts
“sery” pptpd “gshdh7%” “*”
“public” pptpd “gy76423@e” “192.168.1.202”
    3、客戶端的配置。使用windows的網絡連接嚮導,只要選擇“通過ineternet連接到專用網絡(V)”,一步步下去即可配置完成。注意:VPN服務器的IP要填寫全球唯一單播地址,即網關服務器的eth0的地址。
    4、啓用VPN服務。再啓用VPN之前確認內核的IP轉發功能已經打開,然後執行命令 # service pptpd start 啓用VPN等待遠程用戶接入。

防火牆(firewall)
    Linux自帶包過濾防火牆netfilter/iptables,它可以檢查數據包的源和目的ip、源和目的端口、通訊協議、數據包的順序、 TCP先後順序、頭標記(SYN、ACK等)狀態等,功能十分強大。在安裝linux過程中,嚮導一般會提示用戶開啓防火牆,但這可能不能滿足實際的應用需求,建議關閉默認的防火牆功能,然後自己訂製符合需求的規則,寫成一個腳本,然後運行這個腳本,以取得更好的安全性能。
Iptables的語法確實讓人生畏的,讓我們先來簡化一下,可以把它歸納成如下的格式:
Iptables [–t 表] -命令   匹配   操作
    iptables內置3個表:filter、 nat 、mangle.實際上常用的是表filter和nat,其中nat已在前面部分實現過了。命令選項常用的有 F-刷新規則、A-添加規則、P-默認策略等幾項。匹配選項包括源/目的地址、源/目的端口、協議類型以及端口號等。動作選項主要包括ACCEPT-接受收據包、DROP-丟棄數據包、REJECT-拒絕數據包、SNAT-源地址轉換、DNAT-目的地址轉換、MASQUERADE-ip僞裝等。當表的類型是filter時,通常可以省略掉這一項。
    一個好的防火牆規則應該是注重策略的,在自己訂製的防火牆規則腳本中,應該遵循刷新/清除規則-添加默認策略-訂製用戶訪問策略這樣的順序,業內的術語稱作“先關門後開窗”,先禁止所有的訪問許可,然後根據實際需求逐個開放訪問權限。所以,一般防火牆腳本的前部分可以套用下面的格式:
# !/bin/bash
# refresh rules
Iptables –F INPUT
Iptables –F OUTPUT
Iptables –F FORDWARD   //啓用前先清除所有規則

# default rules
Iptables –P INPUT DROP   //先禁止
Iptables –P FORWARD DROP
Iptables –P OUTPUT DROP

# proof DoS etc
Iptables –A FORWARD –p tcp –syn –m limit –j ACCEPT
Iptables –A FORWARD –p tcp –tcp-flag SYN,ACK,FIN,RST –m limit
Iptables –A FORWARD –f –m --limit 50/s –limit-burst 50 –j ACCEPT

# enable loopback
Iptables –A INPUT –i lo –p all

# enable lan user access firewall
Iptables –A INPUT –i eth1 –j ACCEPT
Iptables –A OUTPUT –o eth1 –j ACCEPT
Iptables –A FORWARD –i eth1 –j ACCEPT
Iptables –A FORWARD –i eth1 –j ACCEPT

# add user access rules
………….
接着就是逐個開放用戶的訪問權限:
# enable lan user access website in internet
Iptables –A OUTPUT –o eth0 -p tcp -d any/0 --dport 80 -j ACCEPT
Iptables –A INTPUT -i eth0 -p tcp -s any/0 --sport 80   -j ACCEPT
。。。。。。。
    腳本寫完保存後,給與執行權限然後執行。用局域網內的機器訪問internet,檢查設置的防火牆是否生效,是否符合我們本來的意圖。要讓這個防火牆腳本隨系統開機啓動,可以把這個腳本以行的方式寫入/etc/rc.d/rc.local文件。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章