一凸郑、需求來源
最近在做一個就業(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é)果會是這個樣子:
1.Apache安裝
目前露戒,從網(wǎng)絡(luò)上下載的Apache模塊大都是免安裝直接解壓的壓縮包椒功,那么直接解壓到amp里面即可。
2.MySQL安裝
MySQL分為客戶端和服務(wù)器端智什,我選擇的5.5.34版本本身是一個客戶端动漾,但是在安裝完之后會推薦你再裝一個服務(wù)器端,這個是必須的荠锭,因為我們要的就是一個服務(wù)器端的 MySQL谦炬。
關(guān)于MySQL客戶端的安裝并沒有什么難度,一般來說一路“下一步”即可,一直到最后一步键思,提示安裝服務(wù)器端础爬,點擊進入,進入以下配置:
首先是選擇詳細配置吼鳞,點擊下一步:
作為開發(fā)者選擇Developer Machine看蚜,點擊下一步:
選擇數(shù)據(jù)庫類型,點擊下一步:
配置數(shù)據(jù)庫端口和開啟嚴格模式赔桌,點擊下一步:
選擇utf8字符集供炎,點擊下一步:
這里選擇服務(wù)器名稱,默認MySQL(如果配置的最后一步無響應(yīng)疾党,可能是以前安裝的版本未刪除干凈音诫,此時可以刪除相應(yīng)注冊表項目和修改這個服務(wù)器名稱再嘗試,具體可百度)雪位;接著勾選設(shè)置環(huán)境變量選項竭钝,點擊下一步:
最后設(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ù)”里面已經(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