這些年來,也一直都在運維Linux環境,忽然有朋友自學PHP開發,說要在本身的windows筆記本上搭建一套PHP的開發環境,以前的開發環境也都是開發人員本身搞定的,因此也沒去研究過。應邀接單後居然發現本身都不會玩windows的在WAMP環境,說來可悲啊!技術無國界,技術無高低。因此苦水往肚子裏面咽。一翻的google後,在本身高性能的筆記本上使用vmware開始安裝了個全新的windows10系統,而後直接上官網下載了AMP所需的各個部件,一路的嘗試,WAMP架構終於成功了,但有一個感受是windows環境比Linux環境更難玩啊!爲了可以讓你們看的更清晰的過程,又重頭到尾來了一次,因此有了下文。php
環境展現:html
操做系統:windows 10專業版(官方原版)mysql
Httpd版本:httpd-2.4.35-o110i-x64-vc14sql
PHP版本:php-7.2.11-Win32-VC15-x64數據庫
MariaDB版本:mariadb-10.3.10-winx64apache
全部軟件均從官網直接下載windows
解壓後軟件存放路徑:C:\AMP,軟件名稱的下級均無其它多餘外層目錄瀏覽器
爲了方便往後排查錯誤,建議修改默認配置文件以前,先複製一份以備往後排錯比對使用。服務器
Httpd的主配置文件:C:\AMP\httpd\conf\httpd.confphp7
Httpd的小配文件:C:\AMP\httpd\conf\extra
Httpd的默認證書目錄:C:\AMP\httpd\conf\ssl
Httpd的網頁根目錄:C:\AMP\httpd\htdocs
打開cmd窗口,嘗試啓動httpd
C:\Users\lucker>cd c:\amp\httpd\bin
c:\AMP\httpd\bin>httpd.exe
若是收到以下報錯,說明你的系統缺乏Visual C++ 環境
Visual C++ Redistributable for Visual Studio 2015官方下載地址:
下載併成功安裝後,再次啓動httpd又會收到以下報錯:
c:\AMP\httpd\bin>httpd.exe
httpd.exe: Syntax error on line 40 of C:/AMP/httpd/conf/httpd.conf: ServerRoot must be a valid directory
httpd.conf須要修改的地方有如下幾處:
Define SRVROOT "/Apache24"
須要修改成本身的httpd的根目錄
Define SRVROOT " C:\AMP\httpd"
修改完此處,httpd已經能夠正常啓動了
順便說明一下httpd隱藏版本設定
ServerTokens Prod
能夠放在Define SRVROOT " C:\AMP\httpd"
下一行便可
沒有隱藏版本信息以前http報文頭會顯示以下信息
隱藏版本信息以後
修改完httpd.conf配置文件以後再次重啓httpd
cmd命令行中止前臺阻塞的httpd程序,使用CTROL+C組合鍵
此時打開瀏覽器訪問localhost已經正常了
此時咱們能夠向Httpd的網頁根目錄添加一個本身的頁面進行測試
C:\AMP\httpd\htdocs\test.html
<html>
<title>test page</title>
<body>
<h1><center>恭喜你,你的httpd服務器已經能夠正常工做了!</center></h1>
</body>
</html>
再次使用瀏覽器訪問localhost/test.html進行測試
若是能看到上圖結果說明你的httpd做爲靜態服務器已經正常了,接下來須要修httpd及PHP的相關配置,使httpd可以和PHP應用服務器進行整合。
配置httpd調用php的接口
LoadModule php7_module "C:\AMP\php\php7apache2_4.dll"
PHPIniDir "C:\AMP\php"
配置httpd對php文檔格式的支持
IfModule mime_module
AddType application/x-httpd-php .php
PHP程序主配置文件,默認沒有,須要自行復制C:\AMP\php\php.ini-production爲php.ini並進行相應修改,
固然若是有須要,也能夠複製C:\AMP\php\php.ini-development爲php.ini後進修改。
二者不一樣以外經過原來的文件名足以區分。Development環境開啓的調試性參數更多。
修改時區爲Asia/Shanghai
date.timezone = Asia/Shanghai
順便說一下隱藏PHP相關信息設定
expose_php = On
修改成
expose_php = Off
沒有隱藏PHP版本信息以前http報文頭信息以下
若是httpd隱藏了版本信息只會看到X-Powered-By: PHP/7.2.11這一行信息
隱藏PHP版本信息以後(不會顯示php應用的任何信息)
添加httpd整合php以後的測試面
C:\AMP\httpd\htdocs\httpd-php.php
<?php
echo "恭喜你,你的HTTPD調用PHP配置已經成功!"
?>
首先使用httpd.ext –t作一下配置文件格式的檢查,沒問題以後再次啓動
再次使用瀏覽器訪問localhost/httpd-php.php進行測試
若是能看到上圖的結果,說明你的httpd整合php已經沒有問題了。
接下來就是mariadb的安裝及配置了
建立mysql配置文件C:\AMP\mariadb\my.cnf
[mysqld]
innodb_buffer_pool_size=128M
datadir=C:\amp\mariadb\data
socket=C:\amp\mariadb\socket\mysql.sock
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
####Self config####
bind-address=0.0.0.0
character-set-server=utf8
skip-name-resolve
innodb_file_per_table
default_storage_engine=innodb
log-warnings=1
slow_query_log=1
long-query-time=2
slow_query_log_file=C:\amp\mariadb\log\slow.log
[mysqld_safe]
log-error=C:\amp\mariadb\log\error.log
注意:此配置文件須要是unix格式
須要本身建立兩個目錄
存放socket的目錄C:\AMP\mariadb\socket
存放日誌目錄C:\AMP\mariadb\log
Cmd下啓動MariaDB服務器的命令
C:\Users\lucker>cd c:\AMP\mariadb\bin
c:\AMP\mariadb\bin>mysqld.exe --basedir=C:\AMP\mariadb --datadir=C:\amp\mariadb\data --log-error=C:\amp\mariadb\log\error.log --socket=C:\amp\mariadb\socket\mysql.sock
MariaDB服務器啓動後會處於前臺阻塞狀態,此cmd窗口不能夠關閉
再打一個新的cmd窗口使用mysql客戶端工具鏈接測試
C:\Users\lucker>cd c:\amp\mariadb\bin
c:\AMP\mariadb\bin>mysql.exe -uroot
可以看到如上畫面說明MariaDB服務器的安裝基本完成,接下來寫一個php鏈接MariaDB的測試面進行測試了
C:\AMP\httpd\htdocs\httpd-mariadb.php
<?php
//定義參數
$servername = "localhost";
$username = "root";
$password = "";
// 建立鏈接
$conn = new mysqli($servername, $username, $password);
// 檢測鏈接
if ($conn->connect_error) {
die("抱歉,MariaDB數據庫鏈接失敗!: " . $conn->connect_error);
}
echo "恭喜你,MariaDB數據庫鏈接成功,你的WAMP搭建成功!!!";
?>
使用瀏覽器打開localhost/httpd-mariadb.php訪問測試
出現上述報錯提示是源於php的mysqli模塊沒開啓,須要修改php.ini配置文件,指定php擴展組件所在目錄,以及啓用須要的擴展組件。
extension_dir = "C:\AMP\php\ext"
extension=mysqli
注意:因爲我這裏僅僅爲了給你們展現PHP鏈接MariaDB,常規來講,須要啓用的模塊不止這一個,須要根據本身的實際狀況選擇性的進行開啓。
再次重啓httpd服務刷新訪問頁面,成功頁面展現以下
至此爲止,WAMP環境搭建完成,但要想用的更方便一些,須要把httpd以及mariadb服務端都安裝成服務並設定爲開機自啓動,這樣之後就不用使用煩瑣的cmd命令來服務。
Cmd命令行將httpd安裝爲服務
c:\amp\httpd\bin>httpd.exe -k install -n httpd
Installing the 'httpd' service
The 'httpd' service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.
c:\amp\httpd\bin>httpd.exe -k start
c:\amp\httpd\bin>httpd.exe -k stop
The 'Apache2.4' service is stopping.
The 'Apache2.4' service has stopped.
c:\amp\httpd\bin>
Cmd命令行將MariaDB安裝爲服務
c:\amp\mariadb\bin>mysqld.exe --install mysql --defaults-file=c:\amp\mariadb\my.cnf
Service successfully installed.
c:\amp\mariadb\bin>net start mysql
mysql 服務正在啓動 .
mysql 服務已經啓動成功。
c:\amp\mariadb\bin>net stop mysql
mysql 服務正在中止.
mysql 服務已成功中止。
c:\amp\mariadb\bin>
windows服務都在cmd命令行下使用net命令進行管理
格式:net start|stop service_name(若是默認名稱很複雜建議安裝服務時人工指定)
c:\amp\httpd\bin>net start httpd
httpd 服務正在啓動 .
httpd 服務已經啓動成功。
c:\amp\httpd\bin>net start mysql
mysql 服務正在啓動 .
mysql 服務已經啓動成功。
c:\amp\httpd\bin>net stop httpd
httpd 服務正在中止.
httpd 服務已成功中止。
c:\amp\httpd\bin>net stop mysql
mysql 服務正在中止.
mysql 服務已成功中止。
c:\amp\httpd\bin>
至此爲止,終於搞定了windows環境下的WAMP架構的搭建,若是要想調試本身的代碼,就把代碼放置於C:\amp\httpd\htdocs就能夠爲所欲爲的折騰本身的PHP程序了。
固然對於新手來講,仍是強烈建議使用phpstudy或者xampp一鍵安裝包,畢竟這種分開安裝的方式坑會比較多,配置比較複雜。若是想往後維護升級方便,或者有更高的使用需求,本身整合的這種方式固然也就用得上了。