๐ง Linux HTTPD ็ถฒ้ ไผบๆๅจๅปบ็ฝฎๆๅญธ(Apache ๅฎ่ฃ่่จญๅฎๆๅ)
Apache HTTP Server(httpd) ๆฏๆๅปฃๆณไฝฟ็จ็้ๆบ็ถฒ้ ไผบๆๅจไนไธ, ๅ ทๅ้ซๅบฆ็ฉฉๅฎๆง、ๅฏๆดๅ ๆง่ๆจก็ตๅๆถๆง,ๆฏๆด PHP、SSL、Proxy、Rewrite ่ๅค่ๆฌไธปๆฉ่จญๅฎ。 ๆฌ็ฏๆๅญธไปฅ「ๅฏฆๅๅฐๅ」ๆนๅผ,ๅธถไฝ ๅฎๆๅพๅฎ่ฃ、ๅๅๅฐ SSL ๅ็จ็ๅฎๆดๆต็จ。
1️⃣ ๅฎ่ฃ Apache HTTPD
# CentOS / RHEL ็ณปๅ sudo yum install httpd -y # Ubuntu / Debian ็ณปๅ sudo apt update sudo apt install apache2 -y
ๅฎ่ฃๅฎๆๅพ,ไธป่ฆ่จญๅฎๆชไฝ็ฝฎๅฆไธ:
/etc/httpd/conf/httpd.conf # CentOS / RHEL /etc/apache2/apache2.conf # Ubuntu / Debian
- DocumentRoot:้ ่จญ็ถฒ็ซๆ น็ฎ้(้ๅธธ็บ
/var/www/html) - Listen:็ฃ่ฝ็ๅ ่(้ ่จญ 80)
- Include:่ผๅ
ฅๅ
ถไป่จญๅฎๆช(ไพๅฆ
conf.d/*.conf)
2️⃣ ๅๅ่้ๆฉ่ชๅๅ็จๆๅ
# ๅๅๆๅ sudo systemctl start httpd # ่จญๅฎ้ๆฉ่ชๅๅๅ sudo systemctl enable httpd # ๆฅ็็ๆ sudo systemctl status httpd
้ ่จญ็ถฒ็ซ็ฎ้็บ:
/var/www/html/
ๅฏๅปบ็ซ้ฆ้ ๆธฌ่ฉฆ:
echo "<h1>Hello Apache!</h1>" | sudo tee /var/www/html/index.html curl http://localhost
่ฅๅบ็พ「Hello Apache!」ๅณไปฃ่กจ็ถฒ็ซๆๅ้ไฝๆๅ。
3️⃣ ้ฒ็ซ็่้ฃ็ท้ฉ่ญ
# ้ๆพ HTTP / HTTPS ๆๅ sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload # ้ฉ่ญไผบๆๅจ้ไฝ curl -I http://localhost
ๆไฝฟ็จ็่ฆฝๅจ้ๅ http://ไผบๆๅจIP ้ฉ่ญ้ฆ้ ๆฏๅฆๅฏๆญฃๅธธ้กฏ็คบ。
4️⃣ ่จญๅฎ่ๆฌไธปๆฉ(Virtual Host)
่ฅๅไธๅฐไธปๆฉ้ๆๅๅคๅ็ถฒ็ซ,ๅฏ่จญๅฎๅคๅ่ๆฌไธปๆฉ:
# /etc/httpd/conf.d/example.confServerName www.example.com DocumentRoot /var/www/example ErrorLog /var/log/httpd/example_error.log CustomLog /var/log/httpd/example_access.log combined
sudo mkdir -p /var/www/example echo "Hello Apache VirtualHost" | sudo tee /var/www/example/index.html sudo systemctl restart httpd
ไฟฎๆนๆฌๆฉ hosts ๆธฌ่ฉฆ:
sudo sh -c 'echo "127.0.0.1 www.example.com" >> /etc/hosts' curl http://www.example.com
่ฅๆญฃๅธธ้กฏ็คบๅ งๅฎน,ๅณ่กจ็คบ่ๆฌไธปๆฉ้ ็ฝฎๆๅ。
5️⃣ ๅ็จ SSL(HTTPS)
็บ็ถฒ็ซๅ็จๅ ๅฏ้ฃ็ท,ๅฏไฝฟ็จ่ช็ฐฝๆ่ญ้ฒ่กๆธฌ่ฉฆ:
# ๅฎ่ฃ mod_ssl ๅฅไปถ sudo yum install mod_ssl -y # CentOS / RHEL sudo apt install openssl # Ubuntu / Debian # ็ข็่ช็ฐฝๆ่ญ sudo openssl req -x509 -nodes -days 365 \ -newkey rsa:2048 \ -keyout /etc/ssl/private/apache-selfsigned.key \ -out /etc/ssl/certs/apache-selfsigned.crt
ไฟฎๆน ssl.conf ๆ default-ssl.conf ไปฅๅผ็จๆ่ญ่ทฏๅพๅพ้ๆฐๅๅ:
sudo systemctl restart httpd curl -k https://localhost
ๆๅ้กฏ็คบๅณไปฃ่กจ HTTPS ๅ็จๅฎๆ。
6️⃣ ๅธธ่ฆๅ้ก่่จบๆท
# ๆฅ็้ฏ่ชคๆฅ่ช sudo tail -n 20 /var/log/httpd/error_log # ็ขบ่ช Listen Port sudo ss -tuln | grep :80 # ้ฉ่ญ่จญๅฎ่ชๆณ sudo apachectl configtest # ้ๆฐ่ผๅ ฅ่จญๅฎ(ไธไธญๆท้ฃ็ท) sudo systemctl reload httpd
่ฅๅ ฑ้ฏ「Permission denied」,่ซๆชขๆฅ SELinux ๆๆชๆกๆฌ้:
sudo setenforce 0 # ๆๆฐธไน ่ชฟๆด /etc/selinux/config ็บ permissive
๐งญ ่กๅๆธ ๅฎ(ๅฟซ้่คๆฅ)
✅ ๅฎ่ฃ httpd / apache2 ไธฆ่จญๅฎ่ชๅๅ ✅ ้ๅ้ฒ็ซ็ HTTP / HTTPS ✅ ๆพ็ฝฎ index.html ๆธฌ่ฉฆ้ฆ้ ✅ ่จญๅฎ่ๆฌไธปๆฉไธฆๆธฌ่ฉฆๅๅๅฐๆ ✅ ๅ็จ SSL ่่ช็ฐฝๆ่ญ ✅ ้ฉ่ญ่จญๅฎๆช่ชๆณไธฆ่งๅฏๆฅ่ช
๐ ็ต่ช
้้ไปฅไธๆญฅ้ฉ,ไฝ ๅทฒ่ฝๆๅ้จ็ฝฒไธๅฐๅฎๆด็ Apache HTTPD ็ถฒ้ ไผบๆๅจ。 ๆๆก้ฒ็ซ็้ๆพ、่ๆฌไธปๆฉ็ฎก็่ SSL ๅ็จๅพ,ๅณๅฏ้ฒไธๆญฅๆดๅ LAMP ๆถๆงๆๅๅไปฃ็ๆ็จ, ๆ้ ๅฑฌๆผไฝ ่ชๅทฑ็็ฉฉๅฎ็ถฒ็ซๆๅ็ฐๅข。
๐ ๅปถไผธ้ฑ่ฎ
- ๐ง Linux Proxy Server ๅปบ็ฝฎๆๅญธ(Squid ๅฎ่ฃ่่จญๅฎๆๅ)
- ๐ง Linux Samba Server ๆถ่จญๆๅ
- ๐ง Linux LAMP ๆถๆงๆดๅ(Apache + MariaDB + PHP)
— WWFandy・็ณป็ตฑๅปบ็ฝฎ็ญ่จ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ