香港伺服器
04.11.2024
如何在CentOS上建置HTTP伺服器?
在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伺服器保持安全並實現最佳效能。對於那些希望部署生產伺服器的使用者,建議考慮提供額外安全層和託管服務的專業伺服器租用解決方案。