Windows下Apache+PHP+MySQL搭建歷程

一凸郑、需求來源

最近在做一個就業(yè)信息發(fā)布網(wǎng)站,發(fā)布每天的南北校宣講會信息矛市。此時前端模型已經(jīng)搭建好芙沥,用的是HTML+CSS+JS,JavaScript用到j(luò)Query庫浊吏,總體上實現(xiàn)了靜態(tài)頁面的設(shè)計而昨、UI圖標效果的制作、頁面動畫的制作和信息展示區(qū)的模型搭建找田。

小巧的發(fā)布網(wǎng)站已經(jīng)建地七七八八配紫,萬事具備,只差最關(guān)鍵的數(shù)據(jù)和網(wǎng)絡(luò)部分了午阵。


二躺孝、方案更改

在“早日完成項目”的目標驅(qū)動之下,我嘗試著自己完成后臺服務(wù)器的搭建工作底桂。既然是要快速搭建植袍,我能想到的首選就是使用集成開發(fā)環(huán)境xampp。這是一個后臺服務(wù)器集成環(huán)境籽懦,在最新的版本中于个,xampp集成了Apache、MySQL暮顺、PHP厅篓、phpMyAdmin、FileZilla和Tomcat捶码,使用的時候只要啟動相應(yīng)模塊即可羽氮。

雖然,這對于想要快速建后臺的同學(xué)來說不失為一個快捷簡便的捷徑惫恼,但是如此臃腫的集成環(huán)境并不是每一個模塊我們都能用得到档押,并且,在簡單的start和stop之間,我們并不能真正地理解每個模塊其中的原理令宿,只有自己動手把每個模塊獨自搭建起來并使它們相互關(guān)聯(lián)叼耙,才能方便我們自己的后期維護。


三粒没、集齊模塊

要搭建一個后臺服務(wù)器筛婉,有幾個必要的模塊:一個作為載體的服務(wù)器軟件、一個數(shù)據(jù)庫、一種后臺語言環(huán)境,它們分別是Apache服務(wù)器、MySQL數(shù)據(jù)庫和PHP環(huán)境。此外谆趾,為了方便管理數(shù)據(jù)庫,我還增加了一個phpMyAdmin模塊凡壤,用于在后臺以可視化形式對數(shù)據(jù)庫進行增刪查改第美。各模塊的版本如下:

Apache:2.4.12

MySQL:5.5.34

PHP:5.6.26

phpMyAdmin:4.4.11

要注意的是,PHP7已經(jīng)不再用php_mysql組件挑庶,而是采用了更新的php_mysqli組件言秸,這對其它模塊會有些影響,我最開始用的是php7迎捺,在測試mysql_connect函數(shù)的時候顯示找不到函數(shù)举畸,但在查閱了半天資料后確認各個模塊的配置并無問題,后來換了較低的5.6.26版本后凳枝,一切正常抄沮。

各模塊都在網(wǎng)上有得下載,這里就不再多言了岖瑰,下面說說在安裝和配置過程中的注意事項叛买。

搭建之前,你需要在某個根目錄創(chuàng)建一個文件蹋订,比如叫做amp率挣,代表Apache+MySQL+PHP。這個文件夾最終的結(jié)果會是這個樣子:

文件夾amp最終結(jié)果

1.Apache安裝

目前露戒,從網(wǎng)絡(luò)上下載的Apache模塊大都是免安裝直接解壓的壓縮包椒功,那么直接解壓到amp里面即可。

2.MySQL安裝

MySQL分為客戶端和服務(wù)器端智什,我選擇的5.5.34版本本身是一個客戶端动漾,但是在安裝完之后會推薦你再裝一個服務(wù)器端,這個是必須的荠锭,因為我們要的就是一個服務(wù)器端的 MySQL谦炬。

關(guān)于MySQL客戶端的安裝并沒有什么難度,一般來說一路“下一步”即可,一直到最后一步键思,提示安裝服務(wù)器端础爬,點擊進入,進入以下配置:

首先是選擇詳細配置吼鳞,點擊下一步:

詳細配置

作為開發(fā)者選擇Developer Machine看蚜,點擊下一步:

開發(fā)者機器

選擇數(shù)據(jù)庫類型,點擊下一步:

數(shù)據(jù)庫類型

配置數(shù)據(jù)庫端口和開啟嚴格模式赔桌,點擊下一步:

端口和嚴格模式

選擇utf8字符集供炎,點擊下一步:

字符集

這里選擇服務(wù)器名稱,默認MySQL(如果配置的最后一步無響應(yīng)疾党,可能是以前安裝的版本未刪除干凈音诫,此時可以刪除相應(yīng)注冊表項目和修改這個服務(wù)器名稱再嘗試,具體可百度)雪位;接著勾選設(shè)置環(huán)境變量選項竭钝,點擊下一步:

服務(wù)器名稱和環(huán)境變量設(shè)置

最后設(shè)置賬號和密碼后即可完成安裝。

3.PHP環(huán)境安裝

我采用的5.6.26版本php是免安裝解壓版雹洗,直接解壓到amp文件夾即可香罐。

4.phpMyAdmin安裝

phpMyAdmin4.4.11也是免安裝解壓版,直接解壓到amp文件夾即可时肿。


四庇茫、坑坑洼洼

到這里我們已經(jīng)把三大模塊和一個工具集齊,此時螃成,這些模塊僅僅是簡單地放在一塊兒旦签,并沒有產(chǎn)生關(guān)聯(lián)。在這一步寸宏,我們要做的就是牽線搭橋的工作顷霹。

1.Apache配置

配置Apache要修改的文件只有一個:conf文件夾里的httpd.conf,用文本編輯器打開它击吱,開始我們的配置淋淀。

(1)設(shè)置服務(wù)器端口

打開httpd.conf后,查找到listen覆醇,把80端口改為8080端口朵纷,以避免和IIS端口號沖突,如下:

Listen 8080

(2)加載php模塊

找到 #LoadModule vhost_alias_module modules/mod_vhost_alias.so (大概在第174行)永脓,在這行的后面添加以下內(nèi)容:

LoadModule php5_module "D:/amp/php5/php5apache2_4.dll"

AddType application/x-httpd-php .php

PHPIniDir "D:/amp/php5"

第一句代碼:讓Apache加載位于amp目錄下的php模塊袍辞;

第二句代碼:將以.php為擴展名的文件作為php腳本來運行;

第三句代碼:指定php模塊的初始化文件(php.ini)所在目錄常摧。

(3)設(shè)置Apache網(wǎng)站入口

在httpd.conf中找到DocumentRoot(大概在247行)搅吁,后面的路徑一般為htdocs威创,那里是存放項目網(wǎng)站的地方,服務(wù)器會以這個指定目錄為入口進入網(wǎng)站谎懦。修改這個入口以及下面的Directory可以讓Apache做不同的事情肚豺,比如修改為如下目錄:

DocumentRoot "D:/amp/"

<Directory "D:/amp/">

然后restart服務(wù)器,在瀏覽器輸入localhost:8080/phpmyadmin/index.php界拦,這時服務(wù)器會以phpmyadmin目錄下的index.php為入口吸申,進入數(shù)據(jù)庫管理頁面。

如無特別需要享甸,此處一般設(shè)置為項目網(wǎng)站的入口目錄截碴。

(4)開啟Apache服務(wù)

在打開Apache服務(wù)器之前,可能我們會遇到一個問題蛉威,就是在“服務(wù)”里面無法開啟Apache2.4服務(wù)日丹,導(dǎo)致這種結(jié)果的原因又很多,其中普遍的原因很多網(wǎng)友都有提到蚯嫌,這里說一個比較偏門的哲虾,也是我踩中的一個大坑。

如果是第一次安裝Apache齐帚,那么在“服務(wù)”選擇Apache2.4妒牙,點擊右鍵彼哼,選擇屬性对妄,里面有個“可執(zhí)行文件的路徑”是這樣的:

Apache服務(wù)路徑

這是一個正確的路徑。問題就出在這里敢朱。

由于我之前安裝過Apache剪菱,“服務(wù)”里面已經(jīng)存在Apache2.4服務(wù),其“可執(zhí)行文件的路徑”是當時的安裝路徑拴签。當我重新安裝Apache后孝常,新的路徑和舊的路徑不一樣,而“服務(wù)”里面用的仍然是舊路徑蚓哩,當然啟動不了啦构灸。

解決辦法就是進入注冊表,在注冊表中修改相應(yīng)的路徑岸梨,這里就不贅述了喜颁,同學(xué)們可以自行搜索。

2.PHP配置

在php5目錄下我們會看到php.ini-development和php.ini-production兩個文件曹阔,這里由于我們是作開發(fā)用半开,所以選擇前者,把文件名修改為php赃份,后綴名為ini寂拆,這就是我們在httpd.conf里面指定的php模塊初始化文件奢米。接下來我們就來配置這個php.ini:

(1)添加環(huán)境變量

既然是一個語言環(huán)境,那么就少不了環(huán)境變量的設(shè)置纠永。無論怎樣鬓长,先添加環(huán)境變量再說。做法就是將“D:\amp\php5\;”加入系統(tǒng)環(huán)境變量中的PATH渺蒿,相信同學(xué)們都已經(jīng)很熟悉了痢士。

(2)設(shè)置擴展庫目錄

在php.ini中查找到extension_dir(大概在734行),設(shè)置它的值如下:

extension_dir = "D:/amp/php5/ext"

這個目錄指定php擴展模塊的存放目錄茂装,以便調(diào)用相應(yīng)的.dll文件怠蹂。這里用到的擴展模塊有php_mysql.dll、php_mysqli.dll等等少态,在第三步中去注釋的模塊都是從這里調(diào)用的城侧。

(3)開啟相應(yīng)的擴展庫

php本身就是一個資源庫,要讓php做某件事彼妻,只要開啟相應(yīng)的模塊就行了嫌佑。

最開始的php.ini并沒有開啟任何擴展模塊,這些模塊都被注釋了侨歉,我們可以把需要的模塊去注釋屋摇,這樣就是開啟模塊了。這里需要開啟的模塊如下(把分號去掉即可):

;extension=php_curl.dll

;extension=php_gd2.dll

;extension=php_mbstring.dll

;extension=php_exif.dll

;extension=php_mysql.dll

;extension=php_mysqli.dll

;extension=php_pdo_mysql.dll

;extension=php_pdo_odbc.dll

;extension=php_sockets.dll

;extension=php_xmlrpc.dll

;extension=php_xsl.dll

(4)讓php支持短標簽

短標簽是指可以用簡潔的<? ... ?>來代替<?php ... ?>幽邓。短標簽的應(yīng)用很普遍炮温,開啟短標簽可以節(jié)省一些麻煩。

在php.ini中找到short_open_tag(大概在202行)牵舵,設(shè)置其值如下:

short_open_tag = On

(5)配置php的session功能和上傳功能

在使用session功能時柒啤,我們必須配置session文件在服務(wù)器上的保存目錄。我們需要為session建立一個可讀寫的目錄畸颅,這個目錄最好獨立于網(wǎng)站目錄之外担巩,我把這個目錄建在了php5里面,命名為sessiontmp没炒。

然后涛癌,在php.ini中找到session.save_path(大概在1391行),設(shè)置如下:

session.save_path = "D:/amp/php5/sessiontmp"

同session一樣送火,在使用php文件上傳功能時拳话,我們必須要指定一個臨時文件夾以完成文件上傳功能,否則文件上傳功能會失敗漾脂。我們再建一個文件夾uploadtmp假颇,作為上傳文件的臨時存放處。

在php.ini中找到upload_tmp_dir(大概在804行)骨稿,設(shè)置如下:

upload_tmp_dir = "D:/amp/php5/uploadtmp"

(6)設(shè)置時區(qū)

在php中笨鸡,默認date.timezone是被注釋掉的姜钳,也就是默認時區(qū)是UTC格林尼治標準時間。這里我們需要把時區(qū)調(diào)整為中國時區(qū)形耗,解決時間相差八小時的問題哥桥。找到date.timezone(大概在925行),設(shè)置如下:

date.timezone = PRC

(7)測試php

建立好php環(huán)境后激涤,我們要測試一下php應(yīng)用程序服務(wù)器能否在后臺起到解析php的作用拟糕。可以在htdocs目錄下創(chuàng)建一個php網(wǎng)頁倦踢,命名為testphp.php送滞,輸入以下內(nèi)容:

<!DOCTYPE html>

<html>

<head>

? ? <meta charset="utf-8">

? ? <title>測試php</title>

</head>

<body>

? ? <div>

? ? ? ? ? <?php

? ? ? ? ? ? ? echo "hello";

? ? ? ? ? ?>

? ? </div>

</body>

</html>

啟動Apache,在瀏覽器中輸入“l(fā)ocalhost:8080/testphp.php”辱挥,如果瀏覽器顯示hello犁嗅,說明php環(huán)境已經(jīng)成功搭建并被Apache服務(wù)器所調(diào)用。

3.MySQL配置

在安裝完MySQL服務(wù)器端后晤碘,我們還需要對它進行啟動前的設(shè)置褂微。由于之前在安裝的時候已經(jīng)進行了一些選擇,這里我們只需要再對MySQL目錄下的my.ini稍作設(shè)置即可园爷。

(1)查看設(shè)置情況

如果我們在安裝程序中已經(jīng)進行了選擇宠蚂,那么用文本編輯器打開my.ini后,我們可以看到客戶端和服務(wù)器端已經(jīng)設(shè)置好了端口和字符集童社,如下:

[client]

port=3306

[mysql]

default-character-set=utf8

[mysqld]

port=3306

(2)設(shè)置basedir和datadir

basedir選項和datadir選項分別表示數(shù)據(jù)庫服務(wù)器的位置和數(shù)據(jù)存放的位置求厕。在[mysqld]內(nèi)找到如下兩行并設(shè)置:

basedir="D:/amp/mysql/MySQL Server 5.5/"

datadir="D:/amp/mysql/MySQL Server 5.5/Data/"

記得每次設(shè)置完后要到“服務(wù)”里面重新啟動一下mysql條目。

(3)設(shè)置默認存儲引擎

my.ini一般會為數(shù)據(jù)庫選擇一種存儲引擎叠洗,默認為MYISAM甘改,這里我們選擇MYISAM即可旅东,如下:

default-storage-engine=MYISAM

需要注意的是灭抑,如果選擇的是innoDB引擎,那么還要再設(shè)置其數(shù)據(jù)存儲目錄抵代,如下:

innodb_data_home_dir="D:/amp/mysql/"

(4)設(shè)置SQL mode

SQL mode可以對數(shù)據(jù)庫進行一些有效地約束腾节,一般設(shè)置為嚴格模式,在這里設(shè)置如下:

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

(5)測試MySQL

至此荤牍,MySQL的配置就差不多了案腺,但是要啟用它,我們還需要到“服務(wù)”里啟動mysql條目康吵。然后再啟動Apache劈榨,它就會帶著MySQL一起飛了。

如何測試MySQL在php環(huán)境下起作用了呢晦嵌?比較簡單的方法就是寫一個php去連接數(shù)據(jù)庫同辣。

我們可以在htdocs目錄下新建一個php文本拷姿,命名為test.php寫入如下代碼:

<?php

$link=mysql_connect("localhost:3306","user","password");

if(!$link) echo "MySQL無法連接!";

else echo "MySQL連接成功旱函!";

?>

然后啟動Apache并訪問localhost:8080/test.php响巢,如果php能夠正常使用mysql模塊,那么mysql_connect函數(shù)是可以被調(diào)用到的棒妨,結(jié)果會顯示“MySQL連接成功踪古!”。

4.phpMyAdmin配置

在解壓了phpMyAdmin之后券腔,進入相應(yīng)目錄伏穆,在目錄中找到一個名為config.sample.inc.php的文件,將此文件復(fù)制一份并命名為config.inc.php纷纫,這個文件就是phpMyAdmin的配置文件了蜈出。

(1)設(shè)置phpMyAdmin的登陸方式

phpMyAdmin有四種登陸方式:cookie、config涛酗、http和signon铡原,其中默認方式是cookie,它的特點就是每次登陸都得輸入用戶名和密碼商叹,這里我們選擇cookie就行燕刻。

打開config.inc.php,查找到$cfg['Servers'][$i]['auth_type']剖笙,設(shè)置如下:

$cfg['Servers'][$i]['auth_type'] = 'cookie';

設(shè)置了cookie方式后我們還要設(shè)置短語密碼$cfg['blowfish_secret']卵洗,它可以用于Cookies加密,我們可以隨便填弥咪,比如:

$cfg['blowfish_secret'] = 'passwordpassword';

(2)創(chuàng)建一個MySQL控制用戶

創(chuàng)建控制用戶的目的是授予其特定的權(quán)限以限制其完成特定的功能过蹂。在config.inc.php中找到如下兩行并設(shè)置:

$cfg['Servers'][$i]['controluser'] = 'controluser';

$cfg['Servers'][$i]['controlpass'] = 'controlpass';

其中,controluser是設(shè)置控制用戶的用戶名聚至,controlpass是設(shè)置控制用戶的密碼酷勺。

(3)設(shè)置phpMyAdmin高級功能

我們還需要在phpMyAdmin里開啟一些高級功能,只要在config.inc.php中去掉相應(yīng)注釋即可扳躬,如下:

$cfg['Servers'][$i]['controldb'] = 'phpmyadmin';

$cfg['Servers'][$i]['bookmarktable'] = 'control_bookmark';

$cfg['Servers'][$i]['relation'] = 'control_relation';

$cfg['Servers'][$i]['table_info'] = 'control_table_info';

$cfg['Servers'][$i]['table_coords'] = 'control_table_coords';

$cfg['Servers'][$i]['pdf_pages'] = 'control_pdf_pages';

$cfg['Servers'][$i]['column_info'] = 'control_column_info';

$cfg['Servers'][$i]['history'] = 'control_history';

$cfg['Servers'][$i]['tracking'] = 'control_tracking';

$cfg['Servers'][$i]['designer_coords'] = 'control_designer_coords';

$cfg['Servers'][$i]['userconfig'] = 'control_userconfig';

(4)測試phpMyAdmin

至此脆诉,我們的phpMyAdmin的配置就全部完成了,如何測試呢贷币?

之前提到過击胜,要使用phpMyAdmin進入數(shù)據(jù)庫管理界面,我們需要在httpd.conf中修改一下入口地址役纹,如下:

DocumentRoot "D:/amp/"

<Directory "D:/amp/">

重啟Apache偶摔,在瀏覽器中輸入“l(fā)ocalhost:8080/phpmyadmin/index.php”,我們就可以進入phpMyAdmin登陸界面了促脉。輸入用戶名和密碼即可進入管理界面辰斋。管理完畢后記得把入口地址改回來信不,方便進入項目網(wǎng)站。


到這里亡呵,我們的后臺服務(wù)器的搭建就告一段落了抽活,之后要怎么去使用它就是真正的后臺開發(fā)的事情了。在沒有了解服務(wù)器搭建之前锰什,服務(wù)器的搭建對我來說一直是一種高深莫測的存在下硕,后來讀了鳥哥的Linux服務(wù)器開發(fā)篇,發(fā)現(xiàn)Linux下各種服務(wù)器的搭建就是改改配置文件和幾句命令行的事汁胆,現(xiàn)在在Windows下也搭了一回梭姓,發(fā)現(xiàn)仍然是繼續(xù)修改配置文件,只不過多了一些環(huán)境變量和服務(wù)的東西嫩码。其實前人已經(jīng)幫我們做了許多工作誉尖,這使我們搭建服務(wù)器時沒有想象中那么艱辛,所以铸题,如果你需要一個后臺铡恕,那就自己動手搭一個吧!


作者主頁:

https://trekerz.github.io

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丢间,一起剝皮案震驚了整個濱河市探熔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烘挫,老刑警劉巖诀艰,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饮六,居然都是意外死亡其垄,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門卤橄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绿满,“玉大人,你說我怎么就攤上這事虽风“艨冢” “怎么了寄月?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵辜膝,是天一觀的道長。 經(jīng)常有香客問我漾肮,道長厂抖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任克懊,我火速辦了婚禮忱辅,結(jié)果婚禮上七蜘,老公的妹妹穿的比我還像新娘。我一直安慰自己墙懂,他們只是感情好橡卤,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著损搬,像睡著了一般碧库。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上巧勤,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天嵌灰,我揣著相機與錄音,去河邊找鬼颅悉。 笑死沽瞭,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的剩瓶。 我是一名探鬼主播驹溃,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼延曙!你這毒婦竟也來了吠架?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤搂鲫,失蹤者是張志新(化名)和其女友劉穎傍药,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體魂仍,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡拐辽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了擦酌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俱诸。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赊舶,靈堂內(nèi)的尸體忽然破棺而出睁搭,到底是詐尸還是另有隱情,我是刑警寧澤笼平,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布园骆,位于F島的核電站,受9級特大地震影響寓调,放射性物質(zhì)發(fā)生泄漏锌唾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晌涕。 院中可真熱鬧滋捶,春花似錦、人聲如沸余黎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惧财。三九已至亲族,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間可缚,已是汗流浹背霎迫。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留帘靡,地道東北人知给。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像描姚,于是被迫代替她去往敵國和親涩赢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容