在CentOS上部署HTTP伺服器需要謹慎的規劃和執行,尤其是在處理企業級伺服器租用環境時。本指南深入探討了建置可靠HTTP伺服器的技術層面,重點關注效能、安全性和可擴展性。

前提條件和系統需求

在開始安裝過程之前,請確保您的系統符合以下基本需求:

  • CentOS 7.x或8.x(最小化安裝)
  • Root存取權限或sudo權限
  • 最少2GB記憶體
  • 20GB可用磁碟空間
  • 可用的網際網路連線

初始系統設定

首先,讓我們更新系統並設定必要的軟體源。開啟終端並執行:

sudo dnf update -y
sudo dnf install epel-release -y
sudo dnf install httpd -y

Apache安裝和基本設定

安裝Apache HTTP伺服器後,我們需要設定服務並設定自動啟動。依序執行以下指令:

sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl status httpd

透過網頁瀏覽器存取伺服器的IP位址來驗證安裝。您應該能看到Apache的預設測試頁面。

基本設定步驟

Apache的主要設定檔位於/etc/httpd/conf/httpd.conf。讓我們進行一些重要的修改以增強安全性和效能:

# 備份原始設定
sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.backup

# 編輯設定檔
sudo nano /etc/httpd/conf/httpd.conf

在設定中加入這些最佳化設定:

ServerTokens Prod
ServerSignature Off
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Timeout 60
LimitRequestBody 10485760

虛擬主機設定

對於託管多個網站,虛擬主機是不可或缺的。建立新的虛擬主機設定:

sudo mkdir -p /var/www/yourdomain.com/html
sudo chown -R apache:apache /var/www/yourdomain.com/html
sudo chmod -R 755 /var/www/yourdomain.com

# 建立虛擬主機設定
sudo nano /etc/httpd/conf.d/yourdomain.com.conf

加入此虛擬主機設定範本:

<VirtualHost *:80>
    ServerAdmin webmaster@yourdomain.com
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com
    DocumentRoot /var/www/yourdomain.com/html
    ErrorLog /var/log/httpd/yourdomain.com-error.log
    CustomLog /var/log/httpd/yourdomain.com-access.log combined
    
    <Directory /var/www/yourdomain.com/html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

安全強化措施

對任何生產環境的HTTP伺服器來說,實施強大的安全措施都是至關重要的。以下是如何增強伺服器安全性:

1. 設定ModSecurity網路應用程式防火牆

sudo dnf install mod_security mod_security_crs -y
sudo systemctl restart httpd
sudo mv /etc/httpd/modsecurity.d/modsecurity.conf{-recommended,}
sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/httpd/modsecurity.d/modsecurity.conf

2. SSL/TLS設定

使用Let’s Encrypt安裝並設定SSL憑證:

sudo dnf install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
sudo systemctl restart httpd

在Apache設定中加入這些安全標頭:

<IfModule mod_headers.c>
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set X-Content-Type-Options "nosniff"
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    Header always set Content-Security-Policy "default-src 'self'"
</IfModule>

效能最佳化

使用這些進階設定最佳化您的HTTP伺服器效能:

1. 啟用快取

sudo nano /etc/httpd/conf.d/cache.conf

# 加入以下設定
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
</IfModule>

2. 啟用壓縮

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/json
</IfModule>

3. MPM設定

為了更好的效能,設定MPM(多處理模組)設定:

sudo nano /etc/httpd/conf.modules.d/00-mpm.conf

# 註釋掉prefork模組並啟用event模組
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule mpm_event_module modules/mod_mpm_event.so

# 加入event MPM設定
<IfModule mpm_event_module>
    StartServers             3
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild   0
</IfModule>

監控和故障排除

實施適當的監控和了解如何排除故障對於維護可靠的HTTP伺服器至關重要:

1. 日誌分析

設定日誌輪轉以有效管理Apache日誌:

sudo nano /etc/logrotate.d/httpd

/var/log/httpd/*log {
    weekly
    rotate 52
    missingok
    notifempty
    sharedscripts
    compress
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

2. 效能監控

安裝和設定Apache server-status模組:

sudo nano /etc/httpd/conf.d/server-status.conf

<Location "/server-status">
    SetHandler server-status
    Require ip 127.0.0.1
    Require ip ::1
</Location>

常見問題和解決方案

以下是常見問題的解決方案:

1. 權限問題

# 修復SELinux上下文
sudo restorecon -Rv /var/www/html/

# 設定正確的權限
sudo chcon -R -t httpd_sys_content_t /var/www/html/
sudo setsebool -P httpd_can_network_connect 1

2. 連線逾時

# 在Apache設定中調整逾時設定
Timeout 300
KeepAliveTimeout 15
MaxKeepAliveRequests 100

維護最佳實踐

遵循這些維護程序以確保伺服器的最佳效能:

  • 定期系統更新:sudo dnf update -y
  • 監控磁碟使用情況:df -h
  • 檢查Apache狀態:sudo systemctl status httpd
  • 檢視錯誤日誌:sudo tail -f /var/log/httpd/error_log

結論

在CentOS上設定HTTP伺服器需要注意安全性、效能和維護。本指南涵蓋了Apache設定的基本面向,從基本安裝到進階最佳化技術。定期監控和適當的維護將確保您的Web伺服器保持安全並實現最佳效能。對於那些希望部署生產伺服器的使用者,建議考慮提供額外安全層和託管服務的專業伺服器租用解決方案。