Windows下Apache+PHP+MySQL搭建歷程

一、需求來源

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

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


二、方案更改

在“早日完成項目”的目標(biāo)驅(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í)行文件的路徑”是當(dāng)時的安裝路徑。當(dāng)我重新安裝Apache后,新的路徑和舊的路徑不一樣,而“服務(wù)”里面用的仍然是舊路徑,當(dāng)然啟動不了啦。

解決辦法就是進入注冊表,在注冊表中修改相應(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支持短標(biāo)簽

短標(biāo)簽是指可以用簡潔的<? ... ?>來代替<?php ... ?>。短標(biāo)簽的應(yīng)用很普遍,開啟短標(biāo)簽可以節(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格林尼治標(biāo)準(zhǔn)時間。這里我們需要把時區(qū)調(diào)整為中國時區(qū),解決時間相差八小時的問題。找到date.timezone(大概在925行),設(shè)置如下:

date.timezone = PRC

(7)測試php

建立好php環(huán)境后,我們要測試一下php應(yīng)用程序服務(wù)器能否在后臺起到解析php的作用??梢栽趆tdocs目錄下創(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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容