因工作需要,重新配置了Apache和PHP。想起當年曾經配置過,但是已經忘得差不多了。而且,也沒有記錄。從我個人來看,確實缺乏這樣的訓練,從國家教育體系來看,似乎也從未有過做科學記錄的訓練。中國的瓷器之所以有名氣,是因為發展得早,各種能工巧匠各種靈感迸發,精美絕倫,然後各種失傳,只留下一個精美的物件,而沒有怎樣再次製作的記錄。到現在也不知道地動儀的內部結構吧?也許是他們沒有做記錄的習慣,也許是他們不想讓別人知道,不想讓別人學去自己的看家本領。從歷史上中國人的個性來看,後者的可能性大。不是他們沒有做記錄的習慣,而是他們不想做記錄。反觀目前已經超越中國、處於世界頂級的德國瓷器,在奧古斯都大帝那個時代,為了仿製中國瓷器,進行了3萬多次實驗,並記錄。可復現、可證實、可證偽,這是科學。需要訓練,思維上,行動上。
==============言歸正傳雙層線===============================
Apache安裝與配置詳解
安裝
官方網站:http://www.apache.org/
頂層選單找到:download
在下面的連結中選擇官方推薦的第一個,清華的映象伺服器:
http://mirrors.tuna.tsinghua.edu.cn/apache/
會出現一個目錄列表,Ctrl + F,查詢httpd,點選進入。
如果想檢視詳細資訊,就搜Apache HTTP Server Download Page,也可以直接開啟http://httpd.apache.org/download.cgi
在這個頁面上,我們可以看到一些說明和細節資訊,各種下載方法。在這裡,只說明windows系統的檔案的下載方法。
在頁面最明顯的位置,有個
- 2.4.29 (released 2017-10-23)
點選,會跳到本頁面對應的節。如下:
- Source: httpd-2.4.29.tar.bz2 [ PGP ] [ MD5 ] [ SHA1 ] [ SHA256 ]
- Source: httpd-2.4.29.tar.gz [ PGP ] [ MD5 ] [ SHA1 ] [ SHA256 ]
- Binaries
- Security and official patches
- Other files
- Files for Microsoft Windows
是原始碼和安裝檔案的下載連結。apache伺服器本身不儲存檔案,一律通過第三方伺服器釋出,大概是因為全世界的流量太大了,作為一個非盈利組織,無力也沒有必要維護。
如果點選Binaries,又會進入目錄瀏覽,兜兜轉轉又會回到第三方伺服器,所以,直接點 a number of third party vendors,或者Files for Microsoft Windows,這倆連結是一樣的,會出現一個第三方的列表:
如果想要純的Apache伺服器,就選前兩個,後面三個是整合了mysql和php的版本。
下載後,解壓,我放在了c:/apache24目錄下。
配置
開啟apache24/conf目錄,用文字編輯器開啟httpd.conf檔案。
查詢【ServerRoot "${SRVROOT}"】
(說明:因檔案內有一些標記帶有引號,故凡是需要查詢的,一律用中文中括號標記,以便區別,使用時只需查詢中括號內的內容即可,下同)
此處的${SRVROOT}"是apache配置檔案中的變數,它的上一句是Define SRVROOT "/Apache24",意思是,把SRVROOT這個變數的值定義為/Apache24,
這裡我們根據實際情況調整一下,改成Define SRVROOT "c:/Apache24",也就是我們Apache安裝目錄的絕對路徑。
這個配置檔案中,使用了很多${SRVROOT}變數來設定apache的安裝路徑,比如DocumentRoot,所以這裡最好把這個變數用上,就不必到處改了。
查詢【Listen 80】,這裡是預設的,如無必要,不必修改。
查詢【ServerName】
ServerName localhost:80
此處是主站點名稱,即網站域名,根據實際情況修改
查詢【ServerAdmin】
ServerAdmin xxx@163.com
此處是管理員的郵件地址,可自動向管理員發日誌等郵件。
查詢【DocumentRoot】
DocumentRoot "${SRVROOT}/htdocs"
此處是網站的根目錄,SRVROOT即是前面定義的安裝目錄,可根據實際情況調整。可以設定在安裝目錄之外。
查詢【<Directory />】
把其下的Require all denied 改為Require all granted
最後,使用httpd.exe檔案進行安裝,可以cmd進入D:\Apache24\bin目錄執行,也可以任意目錄D:\Apache24\bin\httpd.exe。
httpd -k install -n "Apache24"
引號內是自定義的別名。
如果需要刪除這個服務:
httpd -k uninstall -n "Apache2.4"
至此,apache配置完畢。此時用http://localhost,應該就可以訪問了。
如果外網無法訪問,關閉防火牆或設定80埠通過,試試。
虛擬站點的配置
在http.conf 中將 httpd-vhosts.conf包含進來
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
在 httpd-vhost.conf中配置
(1)基於IP的虛擬主機
修改hosts檔案,新增3個域名與之對應
192.168.1.11 www.test1.com
192.168.1.12 www.test2.com
192.168.1.13 www.test3.com
建立虛擬主機存放檔案的根目錄,如
www/test1/1.html
www/test2/2.html
www/test3/3.html
在httpd-vhosts.conf進行如下配置
<VirtualHost 192.188.1.11:80>
ServerName www.test1.com
DocumentRoot "www/test1"
<Directory "www/test1">
Options Indexs FollowSysLinks
AllowOverride None
Order allow deny
allow from all
DirectoryIndex index.html index.htm index.php
</Directory>
</VirtualHost>
<VirtualHost 192.168.1.12:80>
ServerName www.test2.com
DocumentRoot /www/test2/
<Directory "/www/test2">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow From All
</Directory>
</VirtualHost>
<VirtualHost 192.168.1.13:80>
ServerName www.test3.com
DocumentRoot /www/test3/
<Directory "/www/test3">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow From All
</Directory>
</VirtualHost>
(2)基於主機名
設定域名對映同一個主機
192.168.1.10 www.test1.com
192.168.1.10 www.test2.com
192.168.1.10 www.test3.com
設定存放網頁的根目錄
www/test1/1.html
www/test2/2.html
www/test3/3.html
在使用基於域名的虛擬主機時,必須指定伺服器的IP地址和可能的訪問埠來使主機接受請求,可以
使用NameVirtualHost指令來配置,如果伺服器上所有的IP都會用到,則可以使用來表示,
在NameVirtualHost指定的ip並不會讓伺服器監聽這個IP
然後配置<VirtualHost>
如果在現有的WEB伺服器上配置虛擬主機,則必須為現存的虛擬主機也配置<VirtualHost>,其中
ServerName 和 DocumentRoot包含的內容應該與全域性的內容一致,且要放在配置檔案的最前面,
作為預設主機的配置
NameVirtualHost :80
<VirtualHost :80>
ServerName www.test1.com
DocumentRoot "www/test2"
<Directory "www/test1">
Options Indexs FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost :80>
ServerName www.test2.com
DocumentRoot "www/test2"
<Directory "www/test2">
Options Indexs FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost :80>
ServerName www.test3.com
DocumentRoot "www/test3"
<Directory "www/test3">
Options Indexs FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
(3)基於埠
修改httpd.conf
設定為
Listen 8001
Listen 8002
修改虛擬主機配置檔案 httpd-vhosts.conf
<VirtualHost *:8001>
ServerName www.test1.com
DocumentRoot "www/test1"
</VirtualHost>
<VirtualHost *:8002>
ServerName www.test2.com
DocumentRoot "www/test2"
</VirtualHost>
此處要注意,如果 httpd-vhosts.conf中配置了80埠的virtualhost的DocumentRoot,就要與httpd.conf中的DocumentRoot一致,否則,以httpd-vhosts.conf中的為準,在httpd-vhosts.conf中找不到DocumentRoot時,才使用httpd.conf中的DocumentRoot。
PHP配置
下載連結:https://windows.php.net/download
注意與執行緒安全版本配合好,不然會報錯,而且你不知道錯在哪,先保證這一步是正確的。
Apache伺服器下應當使用TS版,即執行緒安全版,官方說明如下:
TS(Thread Safe) refers to multithread capable builds. NTS(Non Thread Safe) refers to single thread only builds. Use case for TS binaries involves interaction with a multithreaded SAPI and PHP loaded as a module into a web server. For NTS binaries the widespread use case is interaction with a web server through the FastCGI protocol, utilizing no multithreading (but also for example CLI).
就是TS版可以跑多執行緒,NTS只能跑單執行緒。常見的就是Apache和IIS,Apache下用TS,IIS下用NTS。
配置檔案是PHP目錄下的php-development.ini和php-dist.ini,開發期間把php-development.ini改成php.ini
1. 模組載入:
extension = php_mysqli.dll
2. 修改模組的目錄
extension_dir = "D:/php/ext"
也可以將 D:/php ,D:/php/ext 新增到系統環境變數中,此處最好用絕對路徑
3. 在Apache中配置php
更改httpd.conf
新增PHP模組
LoadModule php7_module "D:/php/php7apache2_4.dll
配置php.in路徑
PHPIniDir "D:/php"
配置AddType
AddType application/x-httpd-php .php
AddType application/x-httpd-php .txt
4. register_globals = Off 設定是否開啟全域性變數
若設定為On
已GET/POST提交的引數,直接可以使用變數用呼叫, 建議不開啟
5.設定時區:date.timezone =PRC
6.設定session
以上配置完成後,在命令列中執行php.exe,如果一切正常,不會有提示,否則會出現錯誤提示,例如缺少MSVC環境。
GOOD LUCK!