PHP开发环境配置:安装与配置Apache、PHP、MySQL、PhpMyAdmin
?
?
目標(biāo)
ü??????? 在Windows上安裝與配置MySQL
ü??????? 在Windows上安裝與配置Apache
ü??????? 在Windows上安裝與配置PHP
?
一般情況下,使用PHP開(kāi)發(fā)的Web網(wǎng)站是在Linux操作系統(tǒng)下運(yùn)行的,它與在Linux上運(yùn)行的Apache Web服務(wù)器、MySQL數(shù)據(jù)服務(wù)器構(gòu)成了著名的“LAMP”技術(shù)(Linux、Apache、MySQL、PHP的首字母構(gòu)成)。
LAMP一詞由Michael Kunze在1998年為德國(guó)一家計(jì)算機(jī)雜志編寫(xiě)一篇關(guān)于自由軟件如何成為商業(yè)軟件替代品的文章時(shí)創(chuàng)造的。 (楊, 譚, & 于, 2008)
LAMP所代表的不僅僅是自由和開(kāi)發(fā),而且LAMP構(gòu)成了強(qiáng)大的、高性能Web應(yīng)用平臺(tái),具有易于開(kāi)發(fā)、更新速度快、安全性高、成本低的特點(diǎn),因此被很多開(kāi)發(fā)者視為“黃金組合”。當(dāng)前,國(guó)內(nèi)外最知名的三大BBS軟件提供商IPB、VBB、PHPBBS均基于LAMP平臺(tái)。在國(guó)內(nèi),據(jù)PHPCHINA資料統(tǒng)計(jì),在中國(guó)排名前200名的網(wǎng)站中就61%采用了LAMP平臺(tái)。 (楊, 譚, & 于, 2008)
LAMP的迅速發(fā)展對(duì)于Java和.Net等商業(yè)軟件構(gòu)成了嚴(yán)重的威脅。據(jù)美國(guó)互聯(lián)網(wǎng)市場(chǎng)調(diào)研機(jī)構(gòu)NetCraft(www.netcraft.co.uk)發(fā)布的2008年1月份的網(wǎng)站統(tǒng)計(jì)數(shù)據(jù)表明,基于Linux的Apache依然是網(wǎng)站的第一選擇,市場(chǎng)份額為50.6%,而快速崛起的Web2.0網(wǎng)站,半數(shù)以上也都采用了LAMP技術(shù)。 (楊, 譚, & 于, 2008)
因此掌握LAMP是進(jìn)行PHP Web開(kāi)發(fā)和運(yùn)營(yíng)的基本前提。然而對(duì)于很多的PHP開(kāi)發(fā)者來(lái)說(shuō),Windows似乎是一個(gè)更容易使用、也更愿意使用的操作系統(tǒng),而且在Windows上開(kāi)發(fā)的PHP程序可以略作修改或直接移植到Linux系統(tǒng)上去。因此作為純粹的PHP開(kāi)發(fā)人員,Linux不是必須的(當(dāng)然,如果想要作為產(chǎn)品運(yùn)行,則還需要掌握如何在Linux上安裝部署系統(tǒng)),他們所需要的是如何在自己喜歡的Windows系統(tǒng)上安裝配置Apache、MySQL和PHP,我們稱之為WAMP。
在本章,我們將介紹如何在Windows上安裝配置Apache、MySQL和PHP。我們將在附錄中介紹有關(guān)LAMP的安裝配置。
1.1????? 安裝與配置Apache
Apache Web服務(wù)器雖然在近年的市場(chǎng)占有率有所下降(2005年11月時(shí)曾接近80%),但NetCraft發(fā)布的2010年三月的統(tǒng)計(jì)數(shù)據(jù)說(shuō)明,Apache服務(wù)器仍然占第一位,有54%左右,比第二位的Microsoft IIS的24%左右高出近2倍。這意味著這個(gè)開(kāi)源軟件將繼續(xù)成為互聯(lián)網(wǎng)上應(yīng)用最廣泛的Web服務(wù)器。
1.1.1 Apache簡(jiǎn)介
在Web服務(wù)器發(fā)展的初期,美國(guó)架構(gòu)超級(jí)計(jì)算機(jī)應(yīng)用中心(NCSA)在1995年創(chuàng)建了當(dāng)時(shí)一流的Web服務(wù)器。然而,NCSA Web服務(wù)器的主要開(kāi)發(fā)人員后來(lái)同時(shí)離開(kāi)了NCSA,使得這個(gè)服務(wù)器項(xiàng)目就停頓下來(lái)。與此同時(shí),那些使用NCSA Web服務(wù)器的人們開(kāi)始交換他們用于該服務(wù)器的補(bǔ)丁程序,他們也很快認(rèn)識(shí)到處理管理這些補(bǔ)丁程序的論壇的重要意義。就這樣,誕生了Apache Group。這以團(tuán)體使用NCSA Web服務(wù)器的代碼,創(chuàng)建了稱為Apache的Web服務(wù)器軟件。Apache最初是從NCSA Web服務(wù)器內(nèi)核代碼和一大堆補(bǔ)丁程序中衍生出來(lái)的。經(jīng)過(guò)短短的幾年時(shí)間,Apache已經(jīng)稱為使用最廣泛的Web服務(wù)器軟件,在服務(wù)器市場(chǎng)中占絕對(duì)優(yōu)勢(shì)。
Apache是一個(gè)免費(fèi)的軟件,用戶可以免費(fèi)從Apache的官方網(wǎng)站下載。任何人都可以參加其組成部分的開(kāi)發(fā)。Apache允許世界各地的人對(duì)其提供新特性。當(dāng)新代碼提交到Apache Group后,Apache Group對(duì)其具體內(nèi)容進(jìn)行審查并測(cè)試和質(zhì)量檢查。如果他們滿意,該代碼就會(huì)被集成到Apache的主要發(fā)行版本中。
Apache的其他主要特征有:
l???????? 支持最新的HTTP協(xié)議:是最先支持HTTP1.1的Web服務(wù)器之一,其與新的HTTP協(xié)議完全兼容,同時(shí)與HTTP1.0、HTTP1.1向后兼容。Apache還為支持新協(xié)議做好了準(zhǔn)備。
l???????? 簡(jiǎn)單而強(qiáng)大的基于文件的配置:該服務(wù)器沒(méi)有為管理員提供圖形用戶界面,提供了一個(gè)簡(jiǎn)單但是功能異常強(qiáng)大的配置文件。用戶可以根據(jù)需要用這個(gè)文件隨心所欲的完成自己希望的Apache配置。
l???????? 支持通用網(wǎng)關(guān)接口(CGI):采用mod_cgi模塊支持CGI。Apache支持CGI/1.1標(biāo)準(zhǔn),并且提供了一些擴(kuò)充。
l???????? 支持虛擬主機(jī):是首批既支持IP虛擬主機(jī)又支持命名虛擬主機(jī)的Web服務(wù)器之一。
l???????? 支持HTTP認(rèn)證:支持基于Web的基本認(rèn)證。它還有望支持基于消息摘要的認(rèn)證機(jī)制。
l???????? 內(nèi)部集成Perl:Perl是CGI腳本編程的事實(shí)標(biāo)準(zhǔn)。Apache對(duì)Perl提供了良好的支持,通過(guò)使用其mod_perl模塊,還可以將Perl的腳本裝入內(nèi)存。
l???????? 集成代理服務(wù)器:用戶還可以選擇Apache作為代理服務(wù)器。
l???????? 支持SSL:由于版本法和美國(guó)法律在進(jìn)出口方面的限制,Apache本身不支持SSL。但用戶可以通過(guò)安裝Apache的補(bǔ)丁程序集合(Apache-SSL)使得Apache支持SSL。
l???????? 支持HTTP Cookie:通過(guò)支持Cookie,可以對(duì)用戶瀏覽Web站點(diǎn)進(jìn)行跟蹤。
Apache可以到官方網(wǎng)站下載Apache的最新安裝程序。
1.1.2 安裝Apache
Windows下安裝Apache與安裝其他Windows程序并無(wú)二致,其安裝過(guò)程簡(jiǎn)要說(shuō)明如下:
(1)?? 雙擊Apache安裝文件,啟動(dòng)安裝程序。
(2)?? 進(jìn)行安裝時(shí),首先看到一個(gè)歡迎界面,然后單擊下一步。
(3)?? 接下來(lái)會(huì)顯示一個(gè)許可協(xié)議。如果你同意許可條款,單擊下一步。
(4)?? 接下來(lái)看到對(duì)話框中將包含與Apache服務(wù)器有關(guān)的各項(xiàng)內(nèi)容。閱讀后單擊下一步。
(5)?? 下面需要提供與服務(wù)器操作有關(guān)的一些內(nèi)容,包括網(wǎng)絡(luò)域、服務(wù)器名和管理的EMAIL地址。如果你知道這些信息,就可以填入,否則,前兩項(xiàng)只需輸入localhost,最后一項(xiàng)可以填入一個(gè)任意的EMAIL地址。以后可以在httpd.conf文件中修改這些信息。另外還會(huì)提示你確定Apache要作為面向所有用戶的服務(wù)運(yùn)行還是只用于當(dāng)前用戶。如果你希望Apache自動(dòng)與操作系統(tǒng)一起啟動(dòng)(這也是推進(jìn)的做法),可以選擇Apache安裝為面向所有用戶的服務(wù)。完成設(shè)置后,單擊下一步。
(6)?? 接下來(lái)會(huì)提選擇安裝類型:典型安裝(Typical)或是定制安裝(Custom)。除非有特殊的原因你不想安裝Apache文檔,否則請(qǐng)選擇典型安裝,然后單擊“下一步”。如果不安裝文檔,可以選擇定制安裝,單擊“下一步”,否則請(qǐng)選擇典型安裝,在下一個(gè)屏幕中將Apache Documentation選項(xiàng)取消。
(7)?? 下面將提示你選擇目標(biāo)文件夾。默認(rèn)目標(biāo)文件夾為C:/Program Files/Apache Group。你可以選擇你自己想要安裝的目錄。不論你選擇哪個(gè)目錄,要記住。
(8)?? 單擊“安裝”完成安裝。這就是安裝Apache的全過(guò)程。
1.1.3 配置Apache
Apache Web服務(wù)器的主要配置文件為httpd.conf,在安裝目錄的conf目錄下。下面簡(jiǎn)要介紹一些常用的配置參數(shù)。
(1)?????? ServerRoot指令
用來(lái)設(shè)置服務(wù)器目錄的絕對(duì)路徑,它通知服務(wù)器到哪個(gè)位置查找所有的資源和配置文件。在配置文件中指定的資源,有許多是相對(duì)于ServerRoot目錄的。在Windows下,ServerRoot就是安裝目。
(2)?????? Port指令
指定服務(wù)器運(yùn)行在哪個(gè)端口上。默認(rèn)為80,這是標(biāo)準(zhǔn)的HTTP端口號(hào)。用戶在某些特定情況下可能要讓服務(wù)器運(yùn)行在另外的端口上,例如當(dāng)用戶想要運(yùn)行一個(gè)測(cè)試服務(wù)器而不希望其他人知道時(shí),或者80端口已經(jīng)被其他程序占用了(如IIS),這時(shí)候可以指定服務(wù)器偵聽(tīng)非80端口。在Windows版本上用Listen指令完成該配置。修改httpd.conf里面關(guān)于Listen的選項(xiàng),例如:
Listen 8000指令就是使Apache監(jiān)聽(tīng)8000端口。而如果要同時(shí)指定監(jiān)聽(tīng)端口和監(jiān)聽(tīng)地址,可以使用:
?????????????????? Listen 192.168.20.10:80
(3)?????? ServerName指令
用來(lái)設(shè)置服務(wù)器將返回的主機(jī)名,它應(yīng)該被設(shè)置為一個(gè)完全限定的域名。例如,將它設(shè)置為www.yourserver.com而不是簡(jiǎn)單的www。如果服務(wù)器通過(guò)Internet訪問(wèn)而不是僅僅在局域網(wǎng)中訪問(wèn),該設(shè)置尤為重要。如果你自己沒(méi)有域名或只在局域網(wǎng)內(nèi)使用,你可以將它設(shè)置為自己的ip地址。
(4)?????? DocumentRoot指令
設(shè)置為文檔目錄的絕對(duì)路徑,該路徑是Apache提供文件的頂級(jí)目錄,也就是網(wǎng)頁(yè)存放的目錄。在默認(rèn)情況下,它被設(shè)置為安裝目錄下的htdocs目錄。例如,如果設(shè)置DocumentRoot為D:/htdocs,那么當(dāng)訪問(wèn)http://localhost/index.html時(shí)實(shí)際就是訪問(wèn)D:/htdocs目錄下的index.html文件。需要注意的是Windows路徑中的“/”該為“/”。
(5)?????? DirectoryIndex指令
指明作為目錄索引的文件名,例如,當(dāng)請(qǐng)求的URL為http://www.server.com/Directory/時(shí),指明哪個(gè)文件作為目錄的索引,即默認(rèn)訪問(wèn)的文件。通常在這里放入許多文件名非常有用,這樣當(dāng)index.html(默認(rèn)值)找不到時(shí),可以使用另一個(gè)文件替換。該指令最有用的應(yīng)用是在目錄中有一個(gè)CGI程序運(yùn)行,作為默認(rèn)的動(dòng)作。
其他的一些指令用作服務(wù)器的性能調(diào)整等作用,需要的時(shí)候可以查詢Apache文檔。
除了上述的幾個(gè)指令外,還需要了解如何進(jìn)行訪問(wèn)控制。要配置默認(rèn)可以使用的選項(xiàng),需要使用Options指令。
例如,在httpd.conf文件中,可以見(jiàn)到如下清單:
#
# Aliases: Add here as many aliases as you need(with no limit). The format
# is Alias fakename realname
#
# Note that if you include a trailing / on fakename then the server will
# require it to be present in the URL. So “/icons” isn’t aliased in this
# example, only “/icons/”. If the fakename is slash-terminated, then the
# realname must also be slash terminated, and if the fakename omits the
# trailing slash, the realname must also omit it.
#
# We include the /icons/ alias for FancyIndexed directory listings. If you
# do not use FancyIndexing, you may comment this out.
#
Alias /icons/ “/var/www/icons/”
<Directory “/var/www/icons”>
???????? Options Indexes MultiViews
???????? AllowOverride None
???????? Order allow, deny
???????? Allow from all
</Directory>
1.?????? Options指令
Options可以為None、All或者任何Indexes、Includes、FollowSymLinks、ExecCGI或者MultiViews的組合。MultiViews不包含在All中,必須顯示指定。這些選項(xiàng)解釋如下。
None:該目錄沒(méi)有啟用任何可用的選項(xiàng)。
All:該目錄啟用了所有選項(xiàng),除了MultiViews。
Indexes:當(dāng)Index.html文件或者另一個(gè)DirectoryIndex文件不存在時(shí),目錄中的文件列表將作為HTML頁(yè)產(chǎn)生,顯示給用戶。
Includes:該目錄允許服務(wù)器側(cè)包含(SSI)。如果允許包含但是不允許在包含中有exec選項(xiàng),則可以寫(xiě)為IncludesNoExec。基于安全的原因,對(duì)于沒(méi)有安全控制權(quán)限的目錄,如UserDir目錄,該選項(xiàng)是一個(gè)很好的主意。
FollowSymLinks:允許訪問(wèn)符號(hào)鏈接到文檔目錄的目錄。這種方法不好,不要將整個(gè)服務(wù)器全部設(shè)置為該選項(xiàng)。對(duì)某個(gè)目錄可以這樣設(shè)置,但是在僅當(dāng)有足夠的理由時(shí)才這樣設(shè)置。該選項(xiàng)是一個(gè)潛在的安全隱患,因?yàn)樵试SWeb用戶跳出文檔目錄以外,并且可能潛在地允許用戶訪問(wèn)文件系統(tǒng)的分區(qū),而這些地方時(shí)不希望其他人訪問(wèn)的。
ExecCGI:即使該目錄不是ScriptAlias化的目錄,也在其中允許CGI程序。
MultiViews:該選項(xiàng)是mod_negotiation模塊的一部分。當(dāng)客戶請(qǐng)求的文檔沒(méi)有找到時(shí),服務(wù)器試圖計(jì)算最適合客戶請(qǐng)求的文檔。
2.?????? AllowOverrides指令
AllowOverrides指令指定.htaccess文件可以覆蓋的選項(xiàng)。可以對(duì)每個(gè)目錄進(jìn)行設(shè)置。例如,可以對(duì)主要文檔root和UserDir目錄的覆蓋有不同的標(biāo)準(zhǔn)。該功能對(duì)于用戶目錄特別有用,在這些目錄中用戶沒(méi)有訪問(wèn)服務(wù)器配置文件的權(quán)限。
AllowOverrides可以設(shè)置為All或者Options.htaccess、FileInfo.htaccess、AuthConfig.htaccess以及Limit.htaccess選項(xiàng)的組合這些選項(xiàng)含義如下。
All:表示不讀取.htaccess文件配置內(nèi)容。
Options.htaccess:文件可以為該目錄添加沒(méi)有在Options指令中列出的選項(xiàng)。
FileInfo.htaccess:文件包含修改文檔類型信息的指令。
AuthConfig.htaccess:文件可能包含驗(yàn)證指令。
Limit.htaccess:文件可能包含allow、deny、order指令。
3.?????? order指令
Order只能設(shè)置為Order allow, deny或Orderdeny,allow,表明用戶是先設(shè)置允許的訪問(wèn)地址還是先設(shè)置禁止訪問(wèn)的地址。
4.?????? allow指令
指明允許訪問(wèn)的地址或地址序列。如allow from all指令表明允許所有IP來(lái)的訪問(wèn)請(qǐng)求。
5.?????? deny指令
指明禁止訪問(wèn)的地址或地址序列。如deny from all指令表明禁止所有IP來(lái)的訪問(wèn)請(qǐng)求。
1.2????? 安裝與配置PHP
PHP當(dāng)前的版本是5.3.2,即將發(fā)布的版本是6.0。我們以當(dāng)前穩(wěn)定版本5.3為基礎(chǔ)介紹PHP。
1.2.1? 下載PHP
PHP原本是在Linux下開(kāi)發(fā)的,直到現(xiàn)在也任然是以源代碼的形式發(fā)布,下載編譯后配置運(yùn)行。在Windows下你也可以這么做。但是更好的辦法是去下載已近編譯好的二進(jìn)制包,下載地址為:http://windows.php.net/download/。PHP for Windows的二進(jìn)制包有2種,是因不同編譯器而產(chǎn)生的2中包。
l???????? VC9 X86版本。這個(gè)版本是由Visual Studio 2008編譯器編譯的,并且在運(yùn)行時(shí)要求實(shí)現(xiàn)安裝了Microsoft 2008 C++ Runtime (x86) 。VC9版本適合于與IIS一起使用。
l???????? VC6 X86版本。這個(gè)版本由傳統(tǒng)的Visual Studio 6編譯器編譯。如果你的web服務(wù)器為Apache1或Apache2,你應(yīng)該選擇VC6版本。在本書(shū)中,我們使用Apache2.2,我們選擇下載VC6 版本。
每個(gè)版本又分為線程安全(Thread safe)和非線程安全(NoneThread safe),我們選擇線程安全版本。每個(gè)版本又分為解壓縮版和msi安裝版。這兩種版本區(qū)別不大,都需要做手工配置。我們選擇解壓版。
1.2.2? 安裝PHP
我們下載的是VC6 線程安全的解壓縮版本(php-5.x.x-Win32-VC6-x86.zip,x為某一子版本)。使用解壓縮工具如winzip或winrar將此文件解壓縮到你想安裝PHP的目錄,比如D:/PHP5。解壓版的安裝就此結(jié)束。
MSI安裝版安裝也比較簡(jiǎn)單,按照界面提示安裝即可。
1.2.3? 配置PHP
PHP的運(yùn)行需要和Web服務(wù)的支持,故對(duì)PHP的配置同時(shí)需要配置Web服務(wù)器。本書(shū)中我們是Apache,需要對(duì)Apache的配置文件httpd.conf進(jìn)行配置。
(1)?????? 配置Apache的httpd.conf。
l???????? PHP的在Apache下有三種運(yùn)行方式,分別是作為Apache模塊運(yùn)行、作為CGI模式運(yùn)行以及作為FastCGI模式運(yùn)行。FastCGI模式作為正式運(yùn)行時(shí)比較合適,在開(kāi)發(fā)模式下,我們一般選用Apache模塊方式。將PHP作為Apache模塊運(yùn)行,需要對(duì)Apache做如下配置:
#php Moudule handler configure
LoadModule php5_module "d:/php5/php5apache2_2.dll"
AddHandler application/x-httpd-php .php
?
# configure the path to php.ini
PHPIniDir "d:/php5"
l???????? 上面的配置將使PHP處理任何以.php為擴(kuò)展名的文件,即使這個(gè)文件還有其他的擴(kuò)展名。比如文件名為my.php.txt也會(huì)被PHP模塊處理。為了保證只有以.php結(jié)尾的文件被執(zhí)行,還需要如下的配置;
<FilesMatch /.php$>
????? SetHandler application/x-httpd-php
</FilesMatch>
l???????? 修改DocumentRoot為你放置php頁(yè)面的目錄。當(dāng)然你也可以配置虛擬目錄和虛擬主機(jī)。我了方便起見(jiàn)我們直接選擇修改DocumentRoot。假如你的php文件放在D:/php5_Doc下,則:
DocumentRoot ?"D:/ php5_Doc"
l???????? 修改訪問(wèn)權(quán)限。在Directory指令下,修改默認(rèn)路徑,即<Directory? />下的內(nèi)容。將“Deny from all”修改為“Allow from all”。
同時(shí)要修改D:/php5_Doc的房屋權(quán)限,相應(yīng)的配置如下:
<Directory "D:/ php5_Doc">
??? Options Indexes FollowSymLinks
??? AllowOverride None???
??? Order allow,deny
??? Allow from all
</Directory>
l???????? 添加默認(rèn)文件。將index.php添加到<IfModule dir_module>指令下。如:
<IfModule dir_module>
??? DirectoryIndex index.php index.html index.htm
</IfModule>
(2)?????? 配置PHP的php.ini
在安裝目錄下,有php.ini-development和php.ini-production文件,可以以這兩個(gè)文件為基礎(chǔ),使他們分別作為開(kāi)發(fā)和產(chǎn)品階段的配置文件。現(xiàn)在我們主要用來(lái)開(kāi)發(fā),我們把php.ini-development修改為php.ini,并做如下配置:
l???????? doc_root選項(xiàng)。在php.ini文件中找到doc_root,將其修改為放置php的目錄,要和Apache中的DocumentRoot一致。即:doc_root ="D:/ php5_Doc"。
l???????? extension_dir選項(xiàng)。此選項(xiàng)用于說(shuō)明php擴(kuò)展功能(比如數(shù)據(jù)庫(kù)擴(kuò)展)文件的目錄。這些擴(kuò)展功能將在需要時(shí)動(dòng)態(tài)加載。在PHP的安裝部分,我們把PHP安裝在D:/PHP5,則:
???? extension_dir = "D:/php5/ext"
l???????? 選擇動(dòng)態(tài)擴(kuò)展項(xiàng)。在“Dynamic Extensions”配置小節(jié)中,可以根據(jù)我們的實(shí)際需要選擇擴(kuò)展功能。在本講義中我們需要用到MySQL,我們需要選擇MySQL的擴(kuò)展。MySQL有2個(gè)擴(kuò)展項(xiàng),如果使用較新的MySQL5版本,我們選擇php_mysqli.dll,如果是以前的版本這選擇php_mysql.dll。選擇擴(kuò)展比較簡(jiǎn)單,將每行的第一個(gè)字符“;”去掉即可。其他的擴(kuò)展可按實(shí)際需要選擇。
1.2.4測(cè)試PHP的安裝
如果MySQL還沒(méi)有安裝,我們現(xiàn)在把MySQL擴(kuò)展注釋掉(即添加“;”進(jìn)行注釋)。
在PHP的文檔目錄下(D:/ php5_Doc),創(chuàng)建一個(gè)測(cè)試文件(test.php),其主要內(nèi)容如下:
<?php
? phpinfo();
?>
接下來(lái)就該運(yùn)行test.php來(lái)測(cè)試PHP安裝的正確性了。
首先啟動(dòng)Apache,如果配置上有一些影響Apache啟動(dòng)的錯(cuò)誤,則Apache不啟動(dòng)。
然后在瀏覽器地址欄輸入: http://localhost:88/test.php。(端口88看Apache的實(shí)際配置情況。)
如能顯示如圖1.1所示內(nèi)容,則表示配置正確,否則還有其他一些配置問(wèn)題。
?
圖1.1 phpinfo顯示
1.3 安裝與配置MySQL
MySQL是一個(gè)快速而有健壯的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)(RDBMS)。一個(gè)數(shù)據(jù)庫(kù)將允許高效的存儲(chǔ)、搜索、排序和檢索數(shù)據(jù)。MySQL服務(wù)器將控制對(duì)數(shù)據(jù)的訪問(wèn),從而確保多個(gè)用戶可以并發(fā)的使用它,同時(shí)提供了快速訪問(wèn)并且確保只有通過(guò)驗(yàn)證的用戶才能獲得數(shù)據(jù)訪問(wèn)。因此,MySQL是一個(gè)多用戶、多線程的服務(wù)器。它使用了結(jié)構(gòu)化查詢語(yǔ)言(SQL),這是全球通用的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)查詢語(yǔ)言。MySQL是在1996發(fā)布的,但是其開(kāi)發(fā)歷史可以追溯到1979年。它是世界上最受歡迎的開(kāi)源數(shù)據(jù)庫(kù)之一 (Welling & Thomson, 2009)。
PHP和MySQL能在所有主流的操作系統(tǒng)和許多非主流系統(tǒng)中運(yùn)行,而且它們有低成本、高性能與可擴(kuò)展性高、易學(xué)習(xí)等優(yōu)點(diǎn),符合現(xiàn)在“綠色”“低碳”的觀念,受到了廣大開(kāi)發(fā)者和使用者的喜愛(ài)。
1.3.1 安裝MySQL
由于MySQL是開(kāi)源軟件,獲取這個(gè)軟件很簡(jiǎn)單,只需訪問(wèn)MySQL網(wǎng)站下載一個(gè)副本就行了。在本書(shū)中,我們介紹在Windows上MySQL版本。各個(gè)Linux版本一般都有自己對(duì)應(yīng)的MySQL版本,安裝也不復(fù)雜,相關(guān)內(nèi)容請(qǐng)參考相應(yīng)資料。
可用于Windows平臺(tái)有以下三種版本:
????????? 基本。包含在Windows中有效運(yùn)行MySQL所需的所有特性,但不包括可選組件,如基準(zhǔn)測(cè)試工具。
????????? 完整。包含在Windows中有效運(yùn)行MySQL所需的所有特性,也包括各個(gè)可選組件。
????????? 無(wú)安裝程序。包含完整包中的所有特性,但沒(méi)安裝程序,解壓即可。
一般情況下我們下載基本包或者完整包,這兩個(gè)版本都有Windows安裝程序,安裝過(guò)程中會(huì)提示你選擇各種配置信息。而無(wú)安裝版,解壓完后還需要編輯配置文件,一般推薦有經(jīng)驗(yàn)的人使用。
與許多Windows程序一樣,MySQL提供了一個(gè)方便的GUI安裝程序來(lái)安裝二進(jìn)制包。過(guò)程如下。
(1)雙擊msi安裝包啟動(dòng)安裝過(guò)程。
(2)選擇安裝類型,有“Typical(默認(rèn))”、“Complete(完全)”、“Custom(用戶自定義)”三個(gè)選項(xiàng),我們選擇“Custom”,有更多的選項(xiàng),也方便熟悉安裝過(guò)程,如圖1.1。
?
圖 1.1 選擇安裝類型
(3)接受或修改安裝目錄。默認(rèn)目錄為C:/Program Files/MySQL/MySQL Server 5.1,可以修改此默認(rèn)目錄,如圖1.2。在接下來(lái)的窗口中,單擊OK或Next,然后單擊下一個(gè)窗口中的Install。
?
圖 1.2 選擇安裝目錄
(4)等待安裝結(jié)束,直到出現(xiàn)下面的界面,如圖1.3,這里是詢問(wèn)你是否要注冊(cè)一個(gè)mysql.com的賬號(hào),一般不需要了,點(diǎn)選“Skip Sign-Up”,按“Next”略過(guò)此步驟。
?
圖1.3 注冊(cè)MySQL用戶
(5)mysql配置向?qū)?#xff0c;不用像以前一樣,自己手動(dòng)亂七八糟的配置my.ini了,將 “Configure the Mysql Server now”前面的勾打上,點(diǎn)“Finish”結(jié)束軟件的安裝并啟動(dòng)mysql配置向?qū)?#xff0c;如圖1.4。
?
圖1.4 啟動(dòng)配置
(6)選擇配置方式,“Detailed Configuration(手動(dòng)精確配置)”、“Standard Configuration(標(biāo)準(zhǔn)配置)”,我們選擇“Detailed Configuration”,方便熟悉配置過(guò)程。圖1.5。
?
圖1.5 選擇配置方式
(7)選擇服務(wù)器類型,“Developer Machine(開(kāi)發(fā)測(cè)試類,mysql占用很少資源)”、“Server Machine(服務(wù)器類型,mysql占用較多資源)”、“Dedicated MySQL Server Machine(專門的數(shù)據(jù)庫(kù)服務(wù)器,mysql占用所有可用資源)”,大家根據(jù)自己的類型選擇了,一般選“Server Machine”,不會(huì)太少,也不會(huì)占滿。圖 1.6。
?
圖 1.5 選擇服務(wù)器類型
?
圖 1.6 選擇數(shù)據(jù)庫(kù)用途
(8)選擇mysql數(shù)據(jù)庫(kù)的大致用途,“Multifunctional Database(通用多功能型)”、“Transactional Database Only(服務(wù)器類型,專注于事務(wù)處理)”、“Non-Transactional Database Only”(非事務(wù)處理型,較簡(jiǎn)單,主要做一些監(jiān)控、記數(shù)用,對(duì)MyISAM數(shù)據(jù)類型的支持僅限于non-transactional),隨自己的用途而選擇了,我這里選擇“Multifunctional Database”,按“Next”繼續(xù)。如圖 1.6。
(9)對(duì)InnoDB Tablespace進(jìn)行配置,就是為InnoDB 數(shù)據(jù)庫(kù)文件選擇一個(gè)存儲(chǔ)空間,如果修改了,要記住位置,重裝的時(shí)候要選擇一樣的地方,否則可能會(huì)造成數(shù)據(jù)庫(kù)損壞,當(dāng)然,對(duì)數(shù)據(jù)庫(kù)做個(gè)備份就沒(méi)問(wèn)題了,這里不詳述。這里沒(méi)有修改,使用默認(rèn)位置,直接按“Next”繼續(xù)。如圖1.7。
?
圖1.7 數(shù)據(jù)庫(kù)文件位置
(10)選擇您的網(wǎng)站一般mysql訪問(wèn)量,同時(shí)連接的數(shù)目,“Decision Support(DSS)/OLAP(20個(gè)左右)”、“Online Transaction Processing(OLTP)(500個(gè)左右)”、“Manual Setting(手動(dòng)設(shè)置,自己輸一個(gè)數(shù))”,我這里選“Online Transaction Processing(OLTP)”,自己的服務(wù)器,應(yīng)該夠用了,按“Next”繼續(xù)。如圖 1.8。
(11)是否啟用TCP/IP連接,設(shè)定端口,如果不啟用,就只能在自己的機(jī)器上訪問(wèn)mysql數(shù)據(jù)庫(kù)了,我們這里啟用,把前面的勾打上,Port Number:3306,在這個(gè)頁(yè)面上,您還可以選擇“啟用標(biāo)準(zhǔn)模式”(Enable Strict Mode),這樣MySQL就不會(huì)允許細(xì)小的語(yǔ)法錯(cuò)誤。如果您還是個(gè)新手,我建議您取消標(biāo)準(zhǔn)模式以減少麻煩。但熟悉MySQL以后,盡量使用標(biāo)準(zhǔn)模式,因?yàn)樗梢越档陀泻?shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)的可能性。按“Next”繼續(xù)。如圖1.9。
?
?
圖 1.8 數(shù)據(jù)庫(kù)連接數(shù)量
?
圖1.9 選擇端口號(hào)
(12)選擇字符集。這個(gè)比較重要,就是對(duì)mysql默認(rèn)數(shù)據(jù)庫(kù)語(yǔ)言編碼進(jìn)行設(shè)置,第一個(gè)是西文編碼,第二個(gè)是多字節(jié)的通用utf8編碼,都不是我們通用的編碼,這里選擇第三個(gè),然后在Character Set那里選擇或填入“gbk”,當(dāng)然也可以用“gb2312”,區(qū)別就是gbk的字庫(kù)容量大,包括了gb2312的所有漢字,并且加上了繁體字、和其它亂七八糟的字——使用mysql的時(shí)候,在執(zhí)行數(shù)據(jù)操作命令之前運(yùn)行一次“SET NAMES GBK;”(運(yùn)行一次就行了,GBK可以替換為其它值,視這里的設(shè)置而定),就可以正常的使用漢字(或其它文字)了,否則不能正常顯示漢字。按 “Next”繼續(xù)。如圖1.10。
?
圖1.10 選擇字符集
?
圖 1.11 安裝MySQL服務(wù)
(13)選擇是否將mysql安裝為windows服務(wù),還可以指定Service Name(服務(wù)標(biāo)識(shí)名稱),是否將mysql的bin目錄加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目錄名,比如連接,“mysql.exe -uusername -ppassword;”就可以了,不用指出mysql.exe的完整地址,很方便),這里全部打上了勾,Service Name不變。按“Next”繼續(xù)。圖 1.11。
(14)這一步詢問(wèn)是否要修改默認(rèn)root用戶(超級(jí)管理)的密碼(默認(rèn)為空),“New root password”如果要修改,就在此填入新密碼(如果是重裝,并且之前已經(jīng)設(shè)置了密碼,在這里更改密碼可能會(huì)出錯(cuò),請(qǐng)留空,并將“Modify Security Settings”前面的勾去掉,安裝配置完成后另行修改密碼),“Confirm(再輸一遍)”內(nèi)再填一次,防止輸錯(cuò)。“Enable root access from remote machines(是否允許root用戶在其它的機(jī)器上登陸,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account(新建一個(gè)匿名用戶,匿名用戶可以連接數(shù)據(jù)庫(kù),不能操作數(shù)據(jù),包括查詢)”,一般就不用勾了,設(shè)置完畢,按“Next”繼續(xù)。如圖1.12。
?
圖1.12 創(chuàng)建root用戶
接下來(lái)就是等待配置結(jié)束了。
配置結(jié)束后,如果想更改配置,可以到安裝目錄中編輯my.ini文件,修改相應(yīng)條目來(lái)修改配置。
1.3.2 配置MySQL
在上面的MSI安裝的過(guò)程中,已經(jīng)進(jìn)行了可以使用的配置。但是如果采用手動(dòng)安裝模式,或想修改MySQL的配置,則需要了解MySQL的my.ini文件中的相關(guān)條目。my.ini文件在安裝目錄下。我們現(xiàn)在需要關(guān)注的是my.ini文件中的mysqld小節(jié)(即在my.ini文件標(biāo)注為[mysqld]的地方)中幾個(gè)條目。
(1)?????? port = 3306
表示MySQL監(jiān)聽(tīng)3306端口,3306是MySQL的默認(rèn)端口,如果有需要,可以修改這個(gè)端口。
(2)?????? basedir="安裝目錄"。
??? 表明安裝目錄的位置。
如果安裝目錄為“C:/Program Files/MySQL/MySQL Server 5.1/”,則內(nèi)容相應(yīng)內(nèi)容為:
basedir=" C:/Program Files/MySQL/MySQL Server 5.1/"
注意目錄間隔使用“/”而不是“/”,如果要使用“/”,則要修改成“//”,如下:
basedir=" C://Program Files//MySQL//MySQL Server 5.1//"
(3)?????? datadir="數(shù)據(jù)文件的目錄 "
指明數(shù)據(jù)文件的目錄,假如數(shù)據(jù)文件放在D:/data下,則:
datadir="D:/data/ "
(4)?????? default-character-set=字符集
指明數(shù)據(jù)庫(kù)采用何種字符對(duì)數(shù)據(jù)進(jìn)行編碼。一般情況下可以utf-8,在使用中文的情況下也可使用gbk。如:
default-character-set=gbk
(5)?????? default-storage-engine=數(shù)據(jù)庫(kù)引擎
指定默認(rèn)的數(shù)據(jù)庫(kù)引擎。在Linux下,默認(rèn)的引擎為MyISAM,而在Windows下默認(rèn)引擎為INNODB。他們的主要區(qū)別在于MyISAM不支持外鍵與事務(wù)但執(zhí)行速度快,INNODB支持外鍵與事務(wù)但執(zhí)行效率稍差。至于選用哪種引擎,要看具體應(yīng)用而定。如:
default-storage-engine=MyISAM
(6)?????? innodb_data_home_dir=innodb數(shù)據(jù)文件位置。
如果才用innobd引擎,則可以使用這一條目指定innodb數(shù)據(jù)文件的位置。假設(shè)innodb數(shù)據(jù)文件的位置在D:/InnoDB_Data,則
innodb_data_home_dir="D:/ InnoDB_Data /"
?
還有其他許多調(diào)整數(shù)據(jù)庫(kù)性能的條目如cache的大小,最大數(shù)據(jù)庫(kù)連接數(shù)等等。這些參數(shù)的調(diào)整對(duì)于DBA來(lái)說(shuō)比較重要,而對(duì)于我們剛接觸MySQL的人或程序開(kāi)發(fā)者人來(lái)說(shuō),并不是必須的。
1.3.3 MySQL客戶端PhpMyAdmin
phpMyAdmin 是一個(gè)以PHP為基礎(chǔ),以Web-Base方式架構(gòu)在網(wǎng)站主機(jī)上的MySQL的數(shù)據(jù)庫(kù)管理工具。安裝該工具后,即可以通過(guò) web 形式直接管理 MySQL 數(shù)據(jù),而不需要通過(guò)執(zhí)行系統(tǒng)命令來(lái)管理,非常適合對(duì)數(shù)據(jù)庫(kù)操作命令不熟悉的數(shù)據(jù)庫(kù)管理者。PhpMyAdmin已經(jīng)有十年的歷史,它非常穩(wěn)定,也易于擴(kuò)展。 而且每年都贏得SourceForge.net社區(qū)的最佳系統(tǒng)管理工具獎(jiǎng)。我們可以到http://www.phpmyadmin.net/home_page/index.php上去下載PhpMyAdmin。
作為非英語(yǔ)地區(qū)的人,在下載時(shí),我們要選擇多語(yǔ)種語(yǔ)言包(PhpMyAdmin聲稱支持58種語(yǔ)言,當(dāng)然也支持簡(jiǎn)體中文),在Windows下為解壓方便也選擇zip壓縮包,如phpMyAdmin-3.3.1-all-languages.zip。
下載后解壓到1.2.3節(jié)中配置的doc_root指定的目錄下。接下就該配置PhpMyAdmin了。
打開(kāi) libraries 目錄下的 config.default.php 文件,依次找到下面各項(xiàng),按照說(shuō)明配置即可。
1、訪問(wèn)網(wǎng)址
$cfg['PmaAbsoluteUri'] = ' ';????? //這里填寫(xiě) phpMyAdmin 的訪問(wèn)網(wǎng)址。
2、MySQL 主機(jī)信息
$cfg['Servers'][$i]['host'] = 'localhost'; ??// MySQL主機(jī)名或IP地址
填寫(xiě) localhost? 或 MySQL? 所在服務(wù)器的 ip 地址,如果 MySQL 和該 phpMyAdmin 在同一服務(wù)器,則按默認(rèn) localhost
$cfg['Servers'][$i]['port'] = ' '; // MySQL 端口 – 默認(rèn)端口可以留空
MySQL 端口,默認(rèn)為 3306,保留為空即可,如果您安裝 MySQL 時(shí)使用了其它的端口,需要在這里填寫(xiě)。
3、MySQL 用戶名和密碼
$cfg['Servers'][$i]['user'] = 'root'; // 填寫(xiě) MySQL訪問(wèn) phpMyAdmin 使用的 MySQL 用戶名,默認(rèn)為 root。
$c fg['Servers'][$i]['password'] = ''; // 填寫(xiě)對(duì)應(yīng)上述 MySQL 用戶名的密碼。
4、認(rèn)證方法
$cfg['Servers'][$i]['auth_type'] = 'cookie'; //考慮到安全的因素,建議這里填寫(xiě) cookie。
在此有四種模式可供選擇,cookie,http,HTTP,config
config 方式即輸入 phpMyAdmin 的訪問(wèn)網(wǎng)址即可直接進(jìn)入,無(wú)需輸入用戶名和密碼,是不安全的,不推薦使用。
當(dāng)該項(xiàng)設(shè)置為 cookie,http 或 HTTP 時(shí),登錄 phpMyAdmin 需要數(shù)據(jù)用戶名和密碼進(jìn)行驗(yàn)證,具體如下:
PHP 安裝模式為 Apache,可以使用 http 和 cookie;
PHP 安裝模式為 CGI,可以使用 cookie。
5、短語(yǔ)密碼(blowfish_secret)的設(shè)置
$cfg['blowfish_secret'] = '';
如果認(rèn)證方法設(shè)置為 cookie,就需要設(shè)置短語(yǔ)密碼,設(shè)置為什么密碼,由您自己決定,這里不能留空,否則會(huì)在登錄 phpMyAdmin 時(shí)提示錯(cuò)誤。
當(dāng)使用 'HTTP' 和 'cookie' 認(rèn)證時(shí),phpMyAdmin 需要一個(gè)在 `mysql`.`user` (除 `Password` 之外的所有字段)、`mysql`.`db` (所有字段)、`mysql`.`host` (所有字段) 和 `mysql`.`tables_priv` (除 `Grantor` 和 `Timestamp` 之外的所有字段) 數(shù)據(jù)表中僅具有 SELECT 權(quán)限的控制用戶。
你必須在 config.inc.php 中的 $cfg['Servers'][$i]['controluser'] 和 $cfg['Servers'][$i]['controlpass'] 設(shè)置中設(shè)置好控制用戶。
下例演示了如何使用 pma 作為控制用戶以及 pmapass 作為控制用戶的密碼,需要注意的是: 這僅僅是個(gè)示范,請(qǐng)?jiān)谀愕呐渲梦募惺褂貌煌挠脩裘兔艽a!在 phpMyAdmin SQL 查詢窗口或 MySQL 命令行客戶端中輸入下列命令。
如果網(wǎng)站服務(wù)器和 MySQL 服務(wù)器并不在同一臺(tái)服務(wù)器上,你要將 localhost 換成正確的地址。
GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
GRANT SELECT (
??? Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
??? Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
??? File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
??? Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
??? Execute_priv, Repl_slave_priv, Repl_client_priv
??? ) ON mysql.user TO 'pma'@'localhost';
GRANT SELECT ON mysql.db TO 'pma'@'localhost';
GRANT SELECT ON mysql.host TO 'pma'@'localhost';
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
??? ON mysql.tables_priv TO 'pma'@'localhost';
如果你想使用書(shū)簽以及相關(guān)的新功能,還要執(zhí)行:
GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';
上面的<pma_db>數(shù)據(jù)庫(kù)的創(chuàng)建,你可以使用setup目錄下的Create.sql,此腳本文件幫助你創(chuàng)建書(shū)簽有關(guān)的數(shù)據(jù)庫(kù)。當(dāng)然想使用書(shū)簽功能,還需要在配置文件中配置與<pma_db>數(shù)據(jù)有關(guān)的內(nèi)容。
上述配置是PhpMyAdmin的基本配置,這些信息對(duì)于初學(xué)者已經(jīng)足夠。如需要更詳細(xì)的信息可以參考PhpMyAdmin的中文翻譯文檔,網(wǎng)址是:http://www.phpmyadmin.net/localized_docs/zh_CN/Documentation.html。
配置完成后,將此文件重命名為config.inc.php,復(fù)制到PhpMyAdmin的安裝目錄下即可。接下來(lái)您就可以在瀏覽器里輸入:http://localhost:88/phpmyadmin/,看看是否有登陸界面出現(xiàn)。
?
總結(jié)
以上是生活随笔為你收集整理的PHP开发环境配置:安装与配置Apache、PHP、MySQL、PhpMyAdmin的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在安装、重装MySQL时出现could
- 下一篇: linux cmake编译源码,linu