Ubuntu下LAMP詳細配置手冊

轉自:http://www.sudu.cn/info/html/edu/20080102/284036.html

如今Linux+Apache+Mysql+PHP的組合已經非常非常流行。可以說Linux最初的流行和Apache服務器的巨大市場佔有率息息相關。LAMP又都是開源產品,在使用這一套產品的時候,除了具有不可比擬的價格優勢,還可以不用過分擔心版權問題。於是幾乎所有開源主題的網站都使用LAMP架構,其中不乏一些著名的網站,比如維基百科全書。從這個角度我們看到,LAMP雖然廉價,但是絕對不是便宜無好貨!用很少的資金投入,同樣可以經受起重量級應用的高負荷考驗。作爲一個Linuxer,如果想在網站建設上能有所研究,不親自配置一次LAMP是不可能的。可惜網上教程雖多,但相似度也高,大多你抄我,我抄你,而且LAMP的發展迅速,基本找不到一個完美的最新版的LAMP配置教程。而LAMP配置比較繁瑣,如果沒有一份很好的教程指導,恐怕新手可有苦頭吃咯!正好最近Rainking在自己的工作中需要用LAMP架設一個維基網站,故對LAMP的配置進行了一些研究,不算深入,但是一般網站配置應該是可以參考的。這裏總結出來,一方面是爲了給有同樣需要的讀者以參考和幫助,另一方面也加入很多的

介紹說明,給那些從來沒有接觸過LAMP的的讀者介紹一下,增長點知識。
Linux
這個我就不用詳細介紹了吧?大家如果連Linux是什麼都不知道,那可以看一下我們這期的讀者投稿“Linux宣傳手冊”,雖然短小,但是寫的很精彩呢!這裏我不詳細介紹Linux,但是我要從Linux的發展歷史的角度給大家講講Linux如何在服務器領域打下一片江山的。
Linux的發展,在必然中也可以說有着很大的偶然性。1ArrayArray1年10月5日,LinusTorvalds在新聞組comp.os.minix發佈了大約有一萬行代碼的Linux v0.01版本。那時候的Linux可謂又簡又陋。說它是Linus閒暇時做出的小玩意也毫不過分。連Linus本人當時也決不會想到Linux能夠迅速的發展壯大到今天的規模。Linus自己認爲,操作系統的內核本身並沒有多大的用途,即使不斷地通過來自Hacker的補丁程序加以完善,也提高不到哪裏去。這是因爲一個完整的操作系統,需要太多太多的軟件及
硬件的支持。光靠一個孤單的內核,即便其再精緻,也是孤立無援的。
恰恰正在此時,由Stallman帶領的GNU大軍已經爲他們夢想中的自由的操作系統奮戰多年了。當時Stallman真的可謂萬事俱備,只欠東風。他們幾乎完成了所有Unix軟件的重構(這是相當宏大且艱鉅的工程,其偉大程度絕不亞於寫一個Linux),單單缺一個可以支持這些軟件的操作系統內核。在之後記者對Stallman的採訪中,Stallman透露,其實當時GNU的內核已經開發了很久很久,但是由於GNU內核的設計非常的複雜,比Linux複雜的多,當然功能也更強大。但這帶來的後果是GNU內核調試起來非常麻煩,所以在開發進度上落在了Linux後面。倒是Linux因爲其粗燥,簡單,雖然設計不是那麼前衛,但是得到了整個黑客屆的支持,所以發展迅速。很自然的Linux與GNU結合起來,構成了一個完整的操作系統。Linus一直謙遜的稱Linux其實沒什麼大不了,也經常矯正大家不要把Linux當作一個操作系統,而應該稱這個操作系統爲GNU/Linux。Stallman近些年來有些默默無聞了,自由軟件的概念也逐漸被開源軟件所取代。其實我個人非常的同情Stallman。要是Linux不出現該多好。最終GNU的操作系統內核一定會實現。那樣GNU就會是一個完美的完整的自由操作系統。而開源軟件的概念雖然現在非常流行,但究其本質,不過是自由軟件的一種表現形式。我個人總是覺得開源軟件竊取了自由軟件的革命果實。就這兩點看,我非常地爲Stallman惋惜。不過從科技發展的角度看,Linux和開源軟件的出現絕對是一件大好事。Linux這個幸運兒從誕生起,就非常幸運的擁有了GNU溫室的培育,這不能不說是一個巧合。
而Linux誕生之時所面臨的挑戰並不是來自Windows。當時叱詫風雲的WindowsArray5估計連策劃都還沒開始呢。雖然85年,Windows1.0版本就已經誕生,但是當時Windows的影響力和實力真的都不算強。桌面領域,Mac,GEM及Desqview/X都是當時主流的GUI系統,人們對Windows的評價非常低。甚至到了87年微軟發佈Windows2.0的時候,人們還是不能認可它,都認爲Windows其實借鑑了很多蘋果的東西。Array0年發佈的Windows3.0是微軟的重要轉折。相信國內的很多早期電腦用戶一開始接觸電腦的時候,用的都是Windows3.X版本。也正是從Array0年開始,Windows纔在桌面領域開始打出一片天下。Array2年發佈的Windows3.1在最初發布的兩個月內,銷量就超過了100萬。微軟也正是從Array2年起,其資本積累和研究開發才
走上良性循環的。而在服務器領域,Windows更是連小角色都算不上。Array3年Windows NT才發佈,而性能上自然無法媲美Unix霸主。說了那麼多Windows的發展就是想告訴大家,在Linux誕生的開始,Windows並不是Linux的直接對手,甚至可以說當時Linux的開發者眼裏根本就沒有Windows。Linux的出現可以說是衝着昂貴的Unix和Sun的操作系統開戰的。之前提到了,Linux剛出現的時候,Windows的NT版本還沒出現,服務器市場基本被Unix壟斷。所以一開始Linux的繁榮衝擊最大的是一些Unix及服務器操作系統廠商,比如SUN和IBM。Solaris就因爲Linux的流行,一次又一次的降價,直到現在完全開源免費。到今天,在服務器領域,Linux的佔有率已經超過了Unix,可惜不幸的是強大的Windows也同樣超過了Unix。至於目前Linux和Windows誰在服務器領域佔有率更高,我好像沒能找到明確的答案。說Linux高的也有,說Windows高的也有。這不是我們今天要關注的。我們需要關注的是,爲什麼Linux能夠在服務器領域反超Unix呢?答案就是Apache。如果大家關注一下Linux的佔有率增長曲線將會發現,自從Apache飛速發展成爲了服務器界當之無愧的老大之後,Linux的佔有率有了穩步的增長。原因很簡單,只有兩個字??便宜。Windows很少有人會把它用在高端服務器上,因爲不夠穩定。而Unix的價格又高的驚人。所以Linux就自然而然的成爲了Unix
的替代品。可以說,Apache的出現,成爲Linux繁榮的另一個巨大契機。
當然Linux繁榮還得益於Unix的發展混亂,BSD的版權官司等等。這些就不在這裏贅述了。總之Linux能有今天,出了其發展模式本身有一定的必然性外,運氣也是一個重要因素。在這篇文章裏,Rainking所用的Linux版本是Ubuntu6.10。好了,廢話不多說,下面開始給大家介紹最流行的服務器Apache。
Apache
1ArrayArray5年2月,世界上最流行的互聯網HTTP服務器軟件是由Illinois大學Urbana-Champaign 的NCSA(National Center for Supercomputing Applications)的Rob McCool開發的。但是Array4年中期Rob離開NCSA以後,開發就一直處於停止狀態了。當時很多優秀的網管開發了他們自己的擴展和補丁,這意味着需要有一個共同的發佈版本來統一這種狀況。於是一個由這些網管組成的小組成立了,他們通過私人電子郵件聯絡,爲的是完善並整理各種補丁。Brian Behlendorf和Cliff Skolnick共同維護了一個郵件列表,一個信息共享空間和一個供核心開發人員登陸的由HotWired資助帶寬的位於California灣地區的機器。到2月底,一共有8個人成爲了這個小組的38]
核心貢獻者。他們成立了現在Apache小組的雛形。他們分別是:
Brian BehlendorfRoy T. Fielding Rob Hartill
David Robinson Cliff Skolnick Randy Terbush
Robert S. ThauAndrew Wilson
以及額外的支持者:
Eric HagbergFrank Peters Nicolas Pioch
建立在NCSA httpd1.3的基礎智商,他們增加了所有發佈的補丁和能找到的所有改進功能,在自己的服務器上進行了測試,並且在1ArrayArray5年4月發佈了第一個官方的Apache Server 0.6.2版本。碰巧的是,NCSA也同時恢復了他們的軟件開發,而且他們的開發人員Brandon Long和Beth Frank也在3月份作爲榮譽成員加入到Apache的郵件列表中來。於是兩個項目得以共享設計理念及一些技術。
雖然一開始的Apache服務器是一個巨大的成功,但是Apache小組達成了一個共識就是所有的代碼都需要重新設計。1ArrayArray5年5月到7月,一方面Rob Hartill帶領着其他組員着重實現0.7.x版本的新特性以支持飛速發展的Apache用戶社區,另一方面Robert Thau設計了一個新的軟件架構,包括更加模塊化的結構,更容易擴展的API,基於池的內存管理和一個預存的進程模型。於是
在7月份,Apache小組將開發轉換到新的架構上,並將爲0.7.x開發的新特性也統統加入進去。這就催生了8月份發佈的Apache0.8.8。
在廣泛的Beta測試,對於各種平臺的移植和一套新的文檔完成以後,1ArrayArray5年11月,Apache 1.0終於發佈了。
在Apache小組成立不到一年的時間裏,Apache服務器超過了NCSA httpd服務器成爲當時互聯網界佔有率最高的服務器軟件。並且這個排名一直保持到今天。這是相當偉大的一件事。
1ArrayArrayArray年,Apache小組的成員成立了Apache軟件基金會來爲Apache Http Server提供有組織的,合法的經濟支持。基金會爲Apache服務器軟件今後的發展提供了重要的保障,並且擴展並收購了一批開源軟件。
作者宣稱因爲這個名字好記纔在最初選擇它,但是流傳最廣的解釋是(也是最顯而易見的)這個名字來自這麼一個事實:當Apache在1ArrayArray5年初開發的時候,它是由當時最流行的HTTP服務器NCSA HTTPd1.3 的代碼修改而成的,因此是“一個修補的(a patchy)”服務器。然而在服務器官方網站的FAQ中是這麼解釋的“Apache這個
名字是爲了紀念名爲Apache(印地語)的美洲印第安人土著的一支,衆所周知他們擁有高超的作戰策略和無窮的耐性”。無論如何,Apache 2.x 分支不包含任何NCSA的代碼。
Apache支持許多特性,大部分通過編譯的模塊實現。這些特性包括從服務器端的編程語言支持到身份認證方案。一些通用的語言接口支持Perl,Python,Tcl和PHP。流行的認證模塊包括mod_access,mod_auth和mod_digest。其他的例子有SSL和TLS支持(mod_ssl),proxy模塊,很有用的URL重寫(由mod_rewrite實現),定製日誌文件(mod_log_config),以及過濾支持(mod_include和mod_ext_filter)。Apache日誌可以通過網頁瀏覽器使用免費的腳本AWStats或Visitors來進行分析。
圖1爲Apache2 市場佔有量的曲線圖:可以看到Apache的霸主地位從來就不曾動搖過。
關於Apache的歷史和特性,我們就瞭解到這裏。下面我們來看看究竟如何安裝Apache服務器。
截至Rainking寫本文爲止,Apache HttpdServer的最高版本爲2.2.4,下載地址爲:
http://httpd.apache.org/download.cgi
,我選擇下載的是httpd-2.2.4.tar.bz2。對於Apache,我建議大家還是就用最高版本吧。穩定性兼容性基本沒有問題。因爲是服務器軟件,一般高版本號的更加不容易被攻擊。所以大家如果沒有什麼苛刻的兼容性要求,還是選擇2.2.4版本的比較好。Rainking的Ubuntu6.10是剛裝的系統。大家修改下源,具體怎麼改請參閱以前雜誌的“Mplayer菜鳥手冊”,這裏不詳細講了。然後在終端輸入:
sudo apt-get install build-essential
安裝編譯所需要的軟件。然後解壓縮軟件包並進入解壓後的目錄:
tar xvf httpd-2.2.4.tar.bz2
cd httpd-2.2.4
以上都不難,關鍵是下面一步編譯選項。這是非常複雜的。大家先輸入以下命令,讓機器配置去吧,這需要好久,然後乘着等待的時間,看我下面的解釋:
./configure --prefix=/usr/local/apache/ --enable-rewrite --enable-so
以上的編譯參數是我根據自己的實際需要設定的。如果有些讀者需要更多的參數的話請參見
http://httpd.apache.org/docs/2.2/programs/configure.html#installationdirectories
的詳細說明。圖1

十一年間,Apache服務器的市場佔有率曲線圖可以看到Apache一直是當之無愧的冠軍--prefix=PREFIX 軟件的安裝目錄,默認的安裝目錄是/usr/local/apache2,這裏我們把它重新設置成/usr/local/apache/,這樣以後使用中可以兼容一些老版本Apache安裝目錄的問題。--enable-rewrite rewrite模塊是用意實現地址重寫的模塊,由於rewrite模塊需要DBM支持,如果在初次安裝時沒有編譯進apache,以後需要用到時需要重新編譯整個apache纔可以實現。爲此除非你可以確定以後不會用到rewrite模塊,否則還是建議你在第一次編譯的時候把rewrite模塊編譯好。--enable-so 通過mod_so模塊提供Apache DSO功能。那麼什麼是DSO呢?DSO是Dynamic Shared Objects(動態共享目標)的縮寫,它是現代Unix派生出來的操作系統都存在着的一種動態連接機制,可以對比參考Windows中的DLL功能。它提供了一種在運行時將特殊格式的代碼,在程序運行需要時,將需要的部分從外存調入內存執行的方法。Apache在1.3以後的版本後開始支持它。因爲Apache早就使用一個模塊概念來擴展它的功能並且在內部使用一個基於調度的列表來鏈接擴展模塊到Apache核心模塊.所以,Apache早就註定要使用DSO來在運行時加載它的模塊。基於DSO的功能有如下優點:1 由於服務器包的裝配工作可以在運行時刻使用httpd.conf的配置命令LoadModule來進行,而不是在編譯中使用configure來進行,因此顯得更靈活。比如:只需要安裝一個Apache,就可以運行多個不同的服務器實例(如標準&SSL版本,濃縮的&功能加強版本[mod_perl, PHP3],等等)。2 服務器包可以在安裝後使用第三方模塊被輕易地擴展。這至少對廠商發行包的維護者有巨大的好處,他可以建立一個Apache核心包,而爲諸如PHP3, mod_perl, mod_fastcgi等擴展另建附加的包。3 更簡單的Apache模塊原型。使用DSO配合apxs,可以脫離Apache源代碼樹,僅需要一個apxs-i和一個apachectlrestart命令,把開發的模塊新版本納入運行中的Apache服務器。但DSO也有如下缺點:1 由於並不是所有的操作系統都支持動態加載代碼到一個程序的地址空間,因此DSO機制並不能用於所有的平臺。2 由於Unix加載器有必須進行的符號解析的開銷,服務器的啓動會慢20%左右。3 在某些平臺上,獨立位置代碼(positonindependent code[PIC])有時需要複雜的彙編語言技巧來實現相對尋址,而絕對尋址則不需要,因此服務器在運行時會慢5%左右。4 由於DSO模塊不能在所有平臺上爲其他基於DSO的庫所連接(ld -lfoo),比如,基於a.out的平臺通常不提供此功能,而基於ELF的平臺則提供,因此DSO機制並不能被用於所有類型的模塊。或者可以這樣說,編譯爲DSO文件的模塊只能使用由Apache核心、C庫(libc)和Apache核心所用的所有其他動態或靜態的庫、含有獨立位置代碼的靜態庫(libfoo.a)所提供的符號。而要使用其他代碼,就只能確保Apache核心本身包含對此代碼的引用,或者自己用dlopen()來加載此代碼配置完以後我們就可以編譯安裝了!在終端輸入:
make
sudo make install
編譯時間不是很長。稍等片刻就好了。安裝完畢以後我們來測試一下服務器是否安裝成功了。在終端輸入:
sudo /usr/local/apache/bin/apachectl start
如果順利的話,會有響應如下:

不要擔心,因爲我們還沒有設置服務器域名或IP纔會發生這種情況的。出現這個響應意味着如果你人品沒什麼大問題,服務器就已經安裝成功了。我們打開瀏覽器,在地址欄裏面輸入127.0.0.1,應該會出現一下畫面:

這時候大家可以在/usr/local/apache/htdocs目錄下放上你的網頁文件,這樣你就可以在瀏覽器裏瀏覽自己的網站了。如果我不想把網站發在/usr/local/apache/htdocs目錄下怎麼辦呢?一般情況下做服務器的Linux是不會把網頁文件放在和/usr一個分區的目錄下的,這時候我們就需要修改Apache的配置文件了。在終端輸入:
sudo gedit /usr/local/apache/conf/httpd.conf
在ServerAdmin那行填上你的Email地址,在ServerName那一行填上你的域名或者機器的IP,當然也可以不填,這樣就會每次啓動出現上述的廢話,在DocumentRoot那行填上你所希望的網站文件的目錄。這裏我喜歡把網站放在/var下的一個叫做website的目錄裏,所以我填上”/var/website”。特別注意,webstie後面不要加“/”。然後在終端輸入: 
sudo mkdir /var/website
創建網站目錄。並且在這個目錄裏面放上一個名爲index.html的測試文件,內容隨便你怎麼寫啦,我寫的是“HAHAHA!LALALA!”,僅此而已。這時候需要重啓一下Apache服務器。在終端輸入:
sudo /usr/local/apache/bin/apachectl stop
sudo /usr/local/apache/bin/apachectl start
重新刷新瀏覽器,這時候你會看見下面的畫面(有可能畫面沒變,那是因爲緩存的原因,請清空瀏覽器緩存後再刷新):

這是爲什麼呢?哈哈,Rainking一開始碰到這個問題也鬱悶的半天,研究以後發現其實很簡單,只要在httpd.conf配置文件裏面緊跟着DomentRoot“/var/website”下面加入如下內容:

   Option FollowSymLinks
   AllowOverrideNone
   Order allow,deny
   Allow from all

然後刷新瀏覽器,結果卻出現如下內容:

根據錯誤提示判斷應該是index.html的權限設置的問題,在終端輸入:
sudo chmod 755 /var/website/index.html 
然後再刷新瀏覽器,哈哈,終於成功顯示了!於是,Apache的介紹與安裝到此結束,讓我們進入Mysql的舞臺!

MySQL
MySQL的安裝恐怕是LAMP中最複雜的了。主要是Mysql的文檔和網站組織都比較的混亂,Rainking第一次上Mysql網站下載Mysql的時候,簡直有種想死的衝動。Mysql是Rainking到目前爲止見過的下載版本最多的軟件!不僅各個時期的高低版本號的版本共存,而且各個平臺的版本共存,而且各個平臺劃分出的各種版本也共存。而且,還沒有一個很完整的指導說明……說也沒用,大家自己去
http://www.mysql.org/downloads/mysql/5.0.html
看好了,保證你也頭昏…
另外,Mysql的Bug非常多,各種版本有各種各樣千奇百怪的Bug。目前5.1是Beta版,5.2是Alpha版。Alpha版是什麼概念?Alpha意味着如果你精力旺盛想沒事找事幹,就去下載了用。Beta版理應可以用,但是,Rainking可以負責任的告訴你,mysql5.1.16的二進制版本在安裝的時候至少會出現3處明顯的Bug,比如目錄設錯,文件位置不對等。並且我沒能成功的讓它運行起來。也許是我能力有限,但是我還是奉勸自認爲能力比我還有限的讀者就不要浪費時間在這種無意義的嘗試上了。
這裏,Rainking使用的是文件名爲mysql-max-5.0.27-linux-i686-glibc23.tar.gz的二進制安裝版本。之所以選用二進制安裝版,是因爲Mysql文檔裏說不推薦用戶自己編譯。而且我對Mysql的健壯性實在沒有信心,鬼知道它編譯的時候會出現什麼奇怪的問題啊。所以,我還是用二進制安裝版了。其實用戶並不能從編譯中得到任何多餘的好處,所以何必自找苦吃呢?
下面我們還是照例先來了解一下Mysql的簡介和發跡史吧,嘿嘿。
MySQL是目前最流行的開放源碼SQL數據庫管理系統,它是由MySQLAB公司開發、發佈並支持的。MySQLAB是由多名MySQL開發人員創辦的一家商業公司。它是一家第二代開放源碼公司,結合了開放源碼價值取向、方法和成功的商業模型。在最一開始,這些開發人員最初的出發點是使用mSQL來連接表,這類表採用了快速低層面(ISAM)子程序。然而,經過一些測試後,他們得出結論,mSQL的速度或靈活性不足以滿足他們的要求。其結果是,他們又開發了一套系統MySQL爲數據庫提供了新的SQL接口,但API接口與mSQL的幾乎一樣。設計該API的目的在於,允許將爲mSQL編寫的第三方代碼方便地移植到MySQL。MySQL名稱的起源不明。10多年來,MySQL開發人員的基本目錄以及大量庫和工具均採用了前綴“my”。不過,共同創辦人Monty Widenius的女兒名字也叫“My”。時至今日,MySQL名稱的起源仍是一個迷,即使對MySQL開發人員也一樣。MySQLDolphin的名稱爲“Sakila”,它是由MySQLAB公司的創辦人從用戶在“Dolphin命名”比賽中提供的衆多建議中選定的。該名稱是由來自非洲斯威士蘭的開放源碼軟件開發者Ambrose Twebaze提出的。根據Ambrose的說法,按斯威士蘭的本地語言,女性化名稱Sakila源自SiSwati。Sakila也是坦桑尼亞、Arusha地區的一個鎮的鎮名,靠近Ambrose的母國烏干達。
其實在Mysql的歷史和Linux的歷史是緊密而不可分的。1ArrayArray8年是Linux迅猛發展的一年。1月,小紅帽高級研發實驗室成立,同年RedHat5.0獲得InfoWorld的操作系統獎項。4月Mozilla代碼發佈,成爲linux圖形界面上的王牌瀏覽器。Redhat宣佈商業支持計劃,網羅了多名優秀技術人員開始商業運作。王牌搜索引擎“Google”現身,採用的也是Linux服務器。最重要的是Oracle和Informix兩家數據庫廠商明確表示不支持Linux,這個決定給予了MySQL數據庫充分的發展機會。同年10月,微軟在法國發布了反Linux公開信,這表明微軟公司開始將Linux視作了一個對手來對待。十二月,IBM發佈了適用於Linux的文件系統AFS 3.5以及JikesJava 編輯器和Secure Mailer及DB2測試版,IBM的此番行爲,可以看作是與Linux羞答答地第一次親密接觸。迫於Windows和Linux的壓力,Sun逐漸開放了Java協議,並且在UltraSparc上支持Linux操作系統。1ArrayArray8年可說是Mysql獲得發展的最好時機。2001年新年伊始就爆出新聞,Oracle宣佈在OTN上的所有會員都可免費索取Oracle Arrayi的Linux版本,從幾年前的“絕不涉足Linux系統”到主動獻媚,足以體現Linux的發展迅猛。但是這時候,MySQL已經在Linux上普及,其它數據庫廠商再想搶佔這塊市場已經變的難上加難。
其實Rainking在一開始知道MySQL的時候,總是有種帶偏見的不屑。要知道在學校學習數據庫的時候聽到的都是Oracle,DB2這些大名鼎鼎的玩意兒。連MS SQL Server都被老師貶爲“算不上一個真正意義上的數據庫”。要知道Oracle啊DB2啊都是幾十萬甚至幾百萬的,面對一個不需要一分錢的免費MySQL,我實在不能相信它有多牛逼。直到看到一箇中國很著名的某電子商務網站的技術人員的採訪說道:“其實MySQL的性能已經優化到可以和Oracle,DB2相媲美了。我們在針對普通用戶的時候數據庫也是用的MySQL。但是對於VIP用戶我們還是選擇了Oracle。原因很簡單,萬一數據庫發生了崩潰,出了問題,用Oracle我們可以一個電話打過去讓他們解決,但是用MySQL的話,我找誰去啊?”這時候我才知道原來開源軟件的也可以做到很出色,並開始對MySQL刮目相看。
下面我們來看看怎麼安裝MySQL吧,比較複雜,大家做好心理準備!
首先當然還是要解壓縮咯,解完壓縮後順便把文件夾移動到/usr/local/下去,並且建立一個名爲Mysql的鏈接,方便以後輸入,因爲Mysql的文件名實在是太長了。在終端輸入:
tar xvf mysql-max-5.0.27-linux-i686-glibc23.tar.gz
sudo mv mysql-max-5.0.27-linux-i686-glibc23 /usr/local/
sudo ln?s /usr/local/ mysql-max-5.0.27-linux-i686-glibc23 /usr/local/ mysql

這樣,基本上我們就完成了等價於自己編譯軟件時從解壓縮到make install完成時的過程。怎麼樣?二進制安裝方便吧?所以很多時候不要總是想着編譯編譯編譯…
現在我們來爲mysqld增加一個登錄用戶和組:
sudo groupadd mysql
sudo useradd -g mysqlmysql

然後我們來進入mysql所在的目錄執行mysql_install_db腳本,用來初始化mysql數據庫的授權表,其中貯存了服務器訪問允許。
cd /usr/local/mysql
TMPDIR=/tmp/
MYSQL_UNIX_PORT=/tmp/mysql.sock
export TMPDIR MYSQL_UNIX_PORT
scripts/mysql_install_db --user=mysql

如果順利,會得到圖二的結果。

最後我們將程序二進制的所有權改爲root,數據目錄的所有權改爲運mysqld的用戶。在終端輸入:
chown-R root .(注意最後有個點)
chown-R mysqldata
chgrp-R mysql.(注意最後有個點)


第一個命令將/usr/local/mysql下文件的所有屬性改爲root用戶。第二個命令將數據目錄的所有屬性改爲mysql用戶。第三個命令將組屬性改爲mysql組。現在安裝基本就完畢了。我們來測試一下,在終端輸入:sudo bin/mysqld_safe--user=mysql &
應該會進入光標不停閃動的狀態,這就代表mysql順利啓動了。
這時候我們再打開一個終端,
在裏面輸入:bin/mysqladmin version
會得到以下畫面:

再在終端裏輸入:
bin/mysqladmin variables
可以得到一個巨大的表格,內容太多,這裏就不截圖了。最後我們要進行一些配置初始MySQL賬戶安全。MySQL安裝完以後會以用戶root創建兩個賬戶。這些賬戶爲超用戶賬戶,可以執行任何操作。初始root賬戶的密碼爲空,因此任何人可以用root賬戶不用任何密碼來連接MySQL服務器,並具有所有權限。在Linux中這兩個root賬戶均用於從本機連接,一個賬戶主機名應指定爲localhost,另一個賬戶爲實際的主機名或IP號。此外Mysql還創建了兩個匿名用戶賬戶,每個賬戶的用戶名均爲空。匿名賬戶沒有密碼,因此任何人可以使用匿名賬戶來連接MySQL服務器。這樣無疑太危險了,所以我們要給這4個帳號設上密碼:
/usr/local/mysql/bin/mysql-u root
mysql> SET PASSWORD FOR 

[email=’’@’localhost’]’’@’localhost’[/email]
= PASSWORD(’newpwd’);
mysql> SET PASSWORD FOR 

[email=’’@’host_name’]’’@’host_name’[/email]
= PASSWORD(’newpwd’);
mysql> SET PASSWORD FOR 

[email=’root’@’localhost’]’root’@’localhost’[/email]
= PASSWORD(’newpwd’);
mysql> SET PASSWORD FOR 

[email=’root’@’host_name’]’root’@’host_name’[/email]
= PASSWORD(’newpwd’);
用服務器主機名替換SET PASSWORD語句中的host_name。如果你不知道是哪個主機名,在SET PASSWORD之前執行下面的語句:
mysql> SELECT Host, User FROM mysql.user;
就這樣,最難安裝的Mysql也被我們輕鬆搞定了。歐耶!我們來加油進入PHP的領域吧!
PHP
PHP繼承自一個老的工程,名叫PHP/FI。PHP/FI在1ArrayArray5年由RasmusLerdorf創建,最初只是一套簡單的Perl 腳本,用來跟蹤訪問他主頁的人們的信息。它給這一套腳本取名爲“Personal Home Page Tools”。隨着更多功能需求的增加,Rasmus寫了一個更大的C語言的實現,它可以訪問數據庫,可以讓用戶開發簡單的動態Web程序。Rasmus發佈了PHP/FI的源代碼,以便每個人都可以使用它,同時大家也可以修正它的Bug並且改進它的源代碼。
PHP/FI,一個專爲個人主頁/表單提供解釋程序的程序,已經包含了今天PHP的一些基本功能。它有着Perl樣式的變量,自動解釋表單變量,並可以嵌入HTML。語法本身與Perl很相似,但是它很有限,很簡單,還稍微有些不協調。
到1ArrayArray7年,PHP/FI 2.0,也就是它的C語言實現的第二版在全世界已經有幾千個用戶(估計)和大約50,000 個域名安裝,大約是Internet所有域名的1%。但是那時只有幾個人在爲該工程撰寫少量當代碼,它仍然只是一個人的工程。
PHP/FI 2.0在經歷了數個beta版本的發佈後於1ArrayArray7年11月發佈了官方正式版本。不久,PHP 3.0的第一個alpha版本發佈,PHP從此走向了成功。
PHP 3.0是類似於當今PHP語法結構的第一個版本。AndiGutmans和ZeevSuraski在爲一所大學的項目中開發電子商務程序時發現PHP/FI 2.0功能明顯不足,於是他們重寫了代碼。這就是PHP 3.0。經過Andi,Rasmus和Zeev一系列的努力,考慮到PHP/FI已存在的用戶羣,他們決定聯合發佈PHP 3.0作爲PHP/FI 2.0的官方後繼版本。而PHP/FI 2.0的進一步開發幾乎終止了。
PHP 3.0的一個最強大的功能是它的可擴展性。除了給最終用戶提供數據庫、協議和API 的基礎結構,它的可擴展性還吸引了大量的開發人員加入並提交新的模塊。後來證實,這是PHP 3.0 取得巨大成功的關鍵。PHP 3.0中的其它關鍵功能包括面向對象的支持和更強大和協調的語法結構。
這個全新的語言伴隨着一個新的名稱發佈。它從PHP/FI 2.0的名稱中移去了暗含“本語言只限於個人使用”的部分。它被命名爲簡單的縮寫“PHP”。這是一種遞歸的縮寫,它的全稱是――PHP: Hypertext Preprocessor。
1ArrayArray8年末,PHP 的安裝人數幾近10,000,有大約100,000個網站報告他們使用了PHP。在PHP 3.0的頂峯,Internet上10%的web服務器上都安裝了它。
約九個月的公開測試後,官方於1ArrayArray8年6月正式發佈PHP 3.0。
1ArrayArray8年的冬天,PHP 3.0官方發佈不久,AndiGutmans和ZeevSuraski開始重新編寫PHP代碼。設計目標是增強複雜程序運行時的性能和PHP自身代碼的模塊性。PHP 3.0的新功能和廣泛的第三方數據庫、API的支持使得這樣程序的編寫成爲可能,但是PHP 3.0沒有高效處理如此複雜程序的能力。
新的被稱爲“ZendEngine”(這是Zeev和Andi的縮寫)的引擎,成功的實現了設計目標,並在1ArrayArrayArray 年中期首次引入PHP。基於該引擎並結合了更多新功能的PHP 4.0,在PHP 3.0發佈兩年後,於2000年5月發佈了官方正式版本。除了更高的性能以外,PHP 4.0還包含了其它一些關鍵功能,比如:支持更多的web 服務器;HTTP Sessions 支持;輸出緩衝;更安全的處理用戶輸入的方法;一些新的語言結構。
今天,已經有10,000 名開發人員(估計)和幾百萬網站報告已安裝了PHP,佔整個Internet 域名的20%。
PHP的開發小組有很多優秀的開發人員,同時還有大量的優秀人才在進行PHP相關工程的開發工作,如PEAR和PHP文檔的工程。
PHP 5在長時間的開發及多個預發佈版本後,於2004年7月發佈正式版本。它的核心是Zend引擎2代,引入了新的對象模型和大量新功能。
上完歷史課,我們照例要來安裝PHP。目前最新的PHP版本是5.2.1,可以在
http://www.php.net/downloads.php
頁面下載。下載以後照例先要解壓縮:
tar xvfphp-5.2.1.tar.gz
然後進入目錄,開始編譯:
cdphp-5.2.1
./configure --prefix=/usr/local/php?with-xml --with-apxs2=/usr/local/apache/bin/apxs--with-mysql=/usr/local/mysql

這時候會出錯,出錯信息是:
configure: error: cannot find output from lex; giving up
我們打開Ubuntu的新立得軟件包管理器,在搜索裏面輸入flex,然後標記並安裝它,然後再輸入libxml-dev並順帶安裝它,以後會用到。然後我們再重新配置一下,應該就沒有問題啦!配置完以後再在終端輸入:
make
sudo make install

就可以完成安裝了。
這時候我們要再次修改一下httpd.conf文件,讓Apache支持PHP。在終端輸入:
sudo gedit /usr/local/apache/conf/httpd.conf
然後在裏面添加:
AddTypeapplication/x-httpd-php.php
AddTypeapplication/x-httpd-php-source.phps

並且修改位於安裝文件夾php-5.2.1內的文件php.ini-dist,去掉extension=php_mysql.dll之前的分號,然後把它拷貝到/usr/local/php/lib/下,並命名爲php.ini:
sudo cp php.ini-dist /usr/local/php/lib/php.ini
然後我們重啓Apache服務器:
sudo /usr/local/apache/bin/apachectl restart
好,最後我們來寫一個測試頁面測試一下PHP有沒有正常工作。創建一個文件叫做test.php,將其放入/var/website目錄內,一定要注意權限,不要忘記設爲755,其文件內容如下:

phpphpinfo(); 
?>
如果看到圖三畫面,

那麼恭喜你,LAMP全部安裝成功了!
MediaWiki
MediaWiki是全球最著名的wiki程序,運行於PHP+MySQL環境。MediaWiki從2002年2月25日被作爲維基百科全書的系統軟件,並有大量其他應用實例。目前MediaWiki的開發得到維基媒體基金會的支持。
維基百科(Wikipedia,簡稱WP)是一個國際性的內容開放的百科全書協作計劃,是維基媒體基金會下的維基計劃,由維基媒體基金會組織運作。2005年之後,維基百科成爲世界上最大的wiki工程。維基百科最初於2001年1月15日開設英文版,近年來發展迅速。其他版本此後陸續啓動,2005年已有超過100多種語言的版本。中文維基百科開始於2002年10月底。截至2005年6月,其各語言版本總計超過1,000,000個有效內容頁面,佔據了當前互聯網上文章數量前50位站點的絕大多數位置。英文維基百科有超過8Array萬個條目(2006.1.3數據),排在所有維基站點的第一位。德語,日語,法語維基百科依次排在第二、三、四位。中文維基百科按條目數量排在第11位。
維基百科是一個自由、免費、內容開放的百科全書協作計劃,參與者來自世界各地。這個站點使用Wiki,文內容遵循GNU自由文檔協議。這意味着任何人都可以編輯維基百科中的任何文章及條目。MediaWiki是建立wik網站的首選後臺程序,它一直保值着持續的高頻率更新。其原作者爲德國的Magnus Manske。MediaWiki的優點如下:
1 經受過重量級應用的考驗,功能豐富卻架設簡單。全世界最大的wiki項目維基百科全書是使用mediawiki的成功範例,數據量、訪問量都超級龐大。
2 功能非常豐富,支持多語言版本,充分滿足知識站點的需要。
3 對運行環境要求很低,架設過程簡潔,即使新手也可以迅速建立自己的站點。
4 MediaWiki是目前應用最廣的wiki程序,數以萬計的網站在使用它,很容易找到範例站點,有大量的熱心參與人員參與研究,資料多。
5 mediawiki是受到維基媒體基金會支持的開源項目,持續開發,程序特性功能不斷完善,保證未來的支持
當然Mediawiki也有很多弱點:
1 後臺管理功能不是很完善,僅通過簡單的特殊頁面完成這些功能。
2 一般環境下,mediawiki的運行速度相對其他wiki程序有一定差距。mediawiki的目標是爲維基媒體項目服務,很多華麗的性能特徵要在高端設備環境(多服務器,多數據庫,反向緩衝squid服務器陣列,大量額外的PHP緩衝引擎)中才能體現。
3 在界面方面關注不夠,導致外觀美化的修改繁瑣,甚至需要一定的技術背景
目前MediaWiki的官方網站已經被中國政府屏蔽,大家下載MediaWiki可以去
http://sourceforge.net/projects/wikipedia/
下載最新版本mediawiki-1.Array.3.tar.gz。
MediaWiki的安裝比較簡單,但是首先要在Mysql裏面創建一個數據庫和用戶名:
CREATE DATABASE wikidb;
SHOW DATABASES;(查看新建的數據庫有沒有成功創建)
GRANT ALL PRIVILEGES ON *.* TO 

[email=’wikiuser’@’localhost’]’wikiuser’@’localhost’[/email]
IDENTIFIED BY ’password’ WITH GRANT OPTION;(注意替換password爲你所設置的密碼)
解壓縮文件:
tar xvfmediawiki-1.Array.3.tar.gz
sudorm-rf/var/website
sudomvmediawiki-1.Array.3 /var/website

sudochmod777 /var/website/config
然後打開瀏覽器,輸入:127.0.0.1/index.php點擊進入安裝頁面,填上該填的,這就不用我教了吧?那麼簡單…關鍵是數據庫用戶名密碼要按照上面設立的填。填完以後點擊安裝按鈕,順利地話就會出現以下畫面:

最後在終端裏把配置文件轉移到上層目錄裏去:
sudo mv /var/website/config/LocalSettings.php /var/website/
現在我們再次訪問127.0.0.1/index.php終於可以見到Wiki的頁面了,哈哈,全部搞定!
後記
在配置過程中,如果讀者和我的操作系統初始狀態及軟件版本完全一致,那麼應該不會碰到什麼大問題。但是如果讀者的操作系統或軟件版本跟我不完全一致,那麼極有可能會碰到各種各樣詭異的問題。如果遇到這種情況,請不要着急,首先把出錯提示:

拷貝下來,去Google或者Baidu搜答案。如果搜不到,請去我們Linuxer論壇的十萬個爲什麼版發問,我會盡量解答。我寫這篇文章之前在單位的機器上成功配置了一遍,寫文章的時候在虛擬機上成功配置了一遍。但是因爲內容實在太多,可能會有一些疏漏,請大家包含。文中有些內容直接摘自網絡,來源比較多,這裏就不一一列出出處了。另外抱怨一句,雖然Apache,Mysql等最多的應用都是在Linux上,但是普遍的,Windows版的安裝配置都要比Linux版簡單的多,也不容易出錯。事實上現在WAMP也逐漸趕超LAMP成爲流行。這不得不讓我們產生思考,在很多Linux的支持者痛罵Windows的時候,是否應該反思一下如何向Windows學習呢?



本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u1/36243/showart_478826.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章