XAMPP 是一個把一堆架網站時會用到的服務、套件,集成起來成一大包的軟體。
本來架網站要裝一堆有的沒的:網站伺服器(Apache)、資料庫 (MySQL或MariaDB)、後端程式語言(PHP、Perl) 等等。現在有了這一包集成體,只要下載並安裝XAMPP就能架網站哩。
因為個人使用上只用到Apache、SQL、PHP,文章只會提到這幾個項目。
安裝XAMPP
首先來到 XAMPP官網,點擊Windows下載 (PHP也是有分版本的,目前有8跟7可以選)
執行安裝,跳一個UAC的警告 並不是什麼錯誤
這邊的話我只安裝我會用到的套件:Apache、MySQL、PHP、phpMyAdmin
安裝目錄
XAMPP控制面板
如果有跳出Error錯誤,八成是 port號(80, 443)跟其他的服務有重複、衝突。
到這邊如果都正常,此時在瀏覽器上輸入 127.0.0.1 或是 localhost (都會導到本地的80port),會跳轉到XAMPP在本地架起來預設的頁面。
Config 設定 - Apache服務
httpd.conf 設定檔
http.conf 設定檔中,可以指定 網站根目錄的位置、Http服務的Port號 ,還有很多如目錄瀏覽權限的設定等等
Listen 80 為Http傾聽80 port
如果改成其他Port號,如 Listen 8080,
則瀏覽網頁時要加上冒號來指定port號 127.0.0.1:8080
DocumentRoot、Directory 網站文件根目錄位置,預設是導到 C:/xampp/htdocs
所以前面一開始XAMPP預設跑出的頁面,是執行了這個目錄底下的 index.php
為什麼 Apache伺服器會優先開啟目錄底下 名稱為 index.php 或 index.html 的頁面?
是在這邊定義的,以下是找尋的順序:
disable Index of page
連進根目錄,若沒有index.php或index.html等頁面時,Apache預設會顯示這樣的資料夾畫面
但為了避免根目錄資料外洩,
可將這一行 "Options Indexes FollowSymLinks Includes ExecCGI" 中的Indexs參數拿掉
其餘參數可參考文件
再次打開就會是Forbidden Page了
修改完存檔,服務要Stop、再Start重啟一次,設定才會生效。
httpd-ssl.conf 設定檔
Https服務的設定檔
Config 設定 - MySQL服務
my.ini 設定檔
上下分別是Clinet端、Server端的設定
開機自動執行/自動重啟
在設定之前,先關閉XAMPP
再使用者管理身分開啟
在面板中點選 Config
接下來要讓Windows在開機後自動打開XAMPP的程式
搜尋XAMPP 開啟Control Panel檔案位置
把XAMPP Control Panel 這個捷徑,複製到以下Windows的開機啟動目錄
C:\Users\User\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
並點選進階 -> 以系統管理者身分執行
接著重開機電腦,試試看服務會不會自己運行吧~
防火牆規則
如果將網站架設在Windows伺服器上,比較嚴格的設定的話防火牆預設是會擋httpd, mysql通訊協議的(外網連不進來)
搜尋 防火牆 -> 進階設定 -> 點選輸入規則 -> 新增規則
可透過允許該程式
分別輸入以下兩個規則
c:\xampp\apache\bin\httpd.exe
c:\xampp\mysql\bin\mysqld.exe
當網站架設久了、訪問次數多了之後,伺服器便會產生肥大的日誌檔案
可以使用rotatelogs模組,讓日誌檔案在一段時間後自動命名成新的
日誌管理 rotatelogs
按照時間or檔名 重新命名日誌
修改 httpd.conf
將以下原本的設定
CustomLog "logs/access.log" common
或者
CustomLog "logs/access.log" combined
改成
CustomLog "|C:/xampp/apache/bin/rotatelogs.exe C:/xampp/apache/logs/access-%Y-%m-%d.log 86400" common
ErrorLog "|C:/xampp/apache/bin/rotatelogs.exe C:/xampp/apache/logs/error-%Y-%m-%d.log 86400"
但沒有支援自動刪除舊log的功能
年月日時分秒
CustomLog "|C:/xampp/apache/bin/rotatelogs.exe C:/xampp/apache/logs/access-%Y-%m-%d_%H-%M-%S.log 1" common
UTC時區偏移 ex: 8hr
CustomLog "|C:/xampp/apache/bin/rotatelogs.exe C:/xampp/apache/logs/access-%Y-%m-%d.log 86400 28800" common
按照log檔案大小劃分
CustomLog "|C:/xampp/apache/bin/rotatelogs.exe C:/xampp/apache/logs/access-%Y-%m-%d_%H-%M.log 5M" common
其餘參數
-l 本地時間
CustomLog "|C:/xampp/apache/bin/rotatelogs.exe -l C:/xampp/apache/logs/access-%Y-%m-%d.log 86400" common
-p 自動執行特定程式 ex: 自動刪除log,要注意權限
CustomLog "|C:/xampp/apache/bin/rotatelogs.exe -p 'Path/to/MyScript.bat' C:/xampp/apache/logs/access-%Y-%m-%d_%H-%M.log 86400" common
-f 保持文件打開狀態、不斷開寫檔
與logrotate相反,rotatelogs是一直開_yy_mm_dd 而非一直寫access.log
加上-f則固定寫入access.log,比較穩定寫檔、完全不會漏掉log紀錄(用在高負載時)
CustomLog "|C:/xampp/apache/bin/rotatelogs.exe -f C:/xampp/apache/logs/access-%Y-%m-%d.log 86400" common
沒有留言:
張貼留言