Tag: Apache

Apache 編譯錯誤 – cannot install ‘libaprutil-1.la’ to a directory

今天編譯安裝 Apache, Apache 的預設安裝目錄是 /usr/local/apache2, 但我將它安裝到 /usr/local/apache, 但在編譯時出現以下錯誤: 原因可能是之前編譯 Apache 時, 有一些紀錄是安裝到 /usr/local/apache2 所致, 解決方法是有兩個:1. 執行 make clean 指令, 再重新編譯。2. 將原始碼的目錄刪除, 再重新解壓 Apache 的源始碼, 再進行編譯安裝即可。

解決 Ubuntu Apache 找不到 ServerName

用 Ubuntu 安裝好 Apache 後,啟動 Apache 時會出現以下報錯:apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message出現錯誤的原因是 Apache 不能抓取系統的 …

Apache log 的 internal dummy connection

當開啟 Apache 的 access_log 查看裡面的內容,查詢記錄內簡中會看到一堆 “internal dummy connection” 的記錄: ::1 – – “OPTIONS * HTTP/1.0” 200 – “-” “Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips PHP/5.4.16 (internal dummy connection)” 根據 Apache 官方的說明, 這是 …

Apache httpd 設定預設首頁

Apache 設定了 DirectoryIndex 後, Apache 會自動開啟目錄下的相應頁面, 例如:DirectoryIndex index.html index.htm index.php如果沒有 DirectoryIndex 設定的頁面, 會顯示 403 Forbidden 或者顯示所有檔案。用 YUM 安裝好 httpd 後, 如果網頁根目錄沒有 DirectoryIndex, 預設會出現一個 “Testing 123” 的頁面, 這個設定方法很實用, 因為可以在 VirtualHost 沒有 …

Fail2ban 攔截暴力入侵 WordPress

WordPress 是目前最受歡迎的 CMS, 而針對 WordPress 的攻擊也很多, 本文會講述使用 Fail2ban 攔截對 WordPress 的暴力入侵。如果未安裝 Fail2ban, 先安裝 Fail2ban, 可以參考本站另一篇文章:攔截暴力入侵的 IP — Fail2Ban安裝好 Fail2ban 後, 在 Fail2ban 的 filter 目錄建立 wordpress 的 filter, 以下會以 /etc/fail2ban/filter.d/wordpress.conf …

Shell Script – 發現 Load Average 高自動執行指令

當系統的 Load Average 很高時, 可能面臨當機的風險, 遇到這個問題可以用 Shell Script 定時檢查系統的 Load Average, 當發現 Load Average 到達某一個設定好的數值時, 便自動執行一些指令, 例如重啟服務, kill process 或向系統管理員發出電郵通知等。以下 Shell Script 會透過定時讀取 /proc/loadavg 的數值, 當發現 Load Average 高時 (以下設定為 …

Shell Script 檢查並自動重啟 Apache httpd

如果主機出現問題時, 可能負載過高或者服務當掉, 最理想的做法還是要找出原因, 很多時只要修改一些設定便可以。 早前遇到一位客戶, 他安裝在 VPS 的 Apache 會無故當掉, 間隔由幾小時到一天不等, 檢查後 Load Average 一點也不高, 當掉後只要重新啟動 Apache 便沒問題, 初部估計可能是 mpm_prefork 的設定問題。由於修改後要觀察一段時間, 這段時間 Apache 也可能當掉, 便寫了這支 Shell Script, 會自動檢查 Apache 是否能回應請求, …

強制 PHP 顯示錯誤訊息

很多主機基於保安理由, 將 PHP 執行時的錯誤訊息隱藏, 當 PHP 程式執行時遇到錯誤, 即使是 run time error 這類錯誤, 都只會顯示空白內容。原因是在 php.ini 設定了這兩行:display_errors = Off error_reporting = Off上面兩個設定, 只要其中其中一個設定成 Off, 都不會顯示錯誤訊息, 這樣對於程式除錯很麻煩, 要暫時顯示 PHP 的錯誤訊息方便除錯, 分別可以修改 PHP 及 …

禁止個別 VirtualHost 或目錄使用 PHP mail() 函式

PHP 的 disable_functions 選項可以停用某些特定的 PHP 函式, 主要是基於安全理由, 將一些對系統有威脅的函式停用, 但 disable_functions 必須透過 php.ini 設定, 因為如果可以在 httpd.conf 或 .htaccess 設定, 使用者便很容易將停用的函式開啟。之前遇到一個情況, 要將個別 VirtualHost 的 mail() 函式停用, 但主機內其他 VirtualHost 仍要繼續開啟 mail()。雖然 disable_functions 不能在 …

個別 VirtualHost 或目錄停用 PHP

在 Linux 安裝 Apache 及 PHP 後, 可以按需要設定個別 VirtualHost 或目錄停用 VirtualHost, 例如一個只用作儲存上載圖片的目錄, 不需要執行 PHP 的權限, 以下的設定方法。VirtualHost 停用 PHP: 首先開啟儲存 VirtualHost 的檔案, RHEL 及 CentOS 是 /etc/httpd/conf/httpd.conf, 而 Debian 及 Ubuntu …