Apache บน Debian 11
Apache บน Debian 11
คำสั่งในการติดตั้ง apache2
sudo apt install apache2
คำสั่งในการถอนการติดตั้ง apache2
sudo apt-get purge apache2 apache2-utils apache2.2-bin apache2-common
sudo apt-get autoremove --purge
คำสั่ง ตรวจสอบ เวอร์ชั่นของ Apache
sudo apache2 -v
ผลที่แสดงออกมาเมื่อใช้คำสั่ง ตรวจสอบ
root@www:/etc# sudo apache2 -v
Server version: Apache/2.4.52 (Debian)
Server built: 2022-01-03T21:27:14
คำสั่งเรียกใช้งาน ส่วนมามันเรียกใช้งานอัติโนมัติ อยู่แล้ว
systemctl is-enabled apache2
คำสั่ง รีสตาร์ทการทำงาน หรือกรณี จะ เริ่มการทำงานหรือหยุดการทำงาน ก็แค่ เปลี่ยนจาก restart >start,stop
systemctl restart apache2
กรณีที่เรามีการแก้ไขค่า คอนฟิก ก็เรียกใช้คำสั่ง
sudo systemctl reload apache2
คำสั่งตรวจสอบสถานะของมัน Checking the Status of Apache Webserver
systemctl status apache2
ผลที่แสดงออกมาเมื่อเราใช้คำสั่งตรวจสอบสถานะ
root@www:/etc# systemctl status apache2
● apache2.service – The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
Active: active (running) since Sat 2022-03-26 14:57:12 +07; 5 days ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 341 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUC>
Process: 37066 ExecReload=/usr/sbin/apachectl graceful (code=exited, status>
Main PID: 493 (apache2)
Tasks: 11 (limit: 4528)
Memory: 2.6G
CPU: 15min 43.387s
ใช้คำสั่ง s2enmod เพื่อเปิดค่าของ Apache modules ตามตัวอย่าง กรณีเราเปิดค่า ssl rewrite header
a2enmod ssl rewrite headers
ขั้นตอนการคอนฟิก Configuring Apache Web Server
ในขั้นตอนนี้ น่าจะทำความเข้าใจโครงสร้างมันให้ดี จะช่วยได้มากในการปรับแต่งค่าต่างๆๆๆ ตามที่เราเข้าใจ บางครั้งหากเราอ่านคำแนะนำ และเราต้องการมาปรับแต่งตามแบบของเราเอง
ในการศึกษาเกี่ยวกับพวกนี้ การคอนฟิก อาจจะแตกต่างกันไป อย่ายึดหลักตายตัวว่าต้องทำแบบนั้น ต้องทำแบบนี้ หากเราทดสอบแล้วว่า ที่เคยทำมาแบบไหนง่าย และได้ผล ให้ใช้แบบเดิมจะลดเวลาได้มาก และให้จดบันทึกไว้
โครงสร้างของไฟล์ สำหรับคอนฟิก ของ apache จะเป็นแบบนี้ครับ
- ในส่วนที่เก็บไฟล์คอนฟิกหลักจะอยู่ใน /etc/apache2
- ไฟล์หลักที่ใช้ในการคอนฟิก คือ/etc/apache2/apache2.conf
ตัวอย่าง ไฟล์ใน /etc/apache2/sites-available
วิธีการดูให้ใช้คำสั่ง ls
root@www:/etc/apache2/sites-available# ls
เมื่อใช้คำสั่ง ls มี 000-default.conf เป็นไฟล์ดีฟอลต์ และมี nextcloud.conf เป็นไฟล์ที่เราสร้างขึ้นมาใหม่สำหรับ วิชวลโอสต์ของเรา
000-default.conf default-ssl.conf nextcloud.conf
ตัวอย่าง ไฟล์ใน /etc/apache2/sites-enable
จะเห็นว่ามี 000-default.conf เป็นไฟล์ดีฟอลต์ และมี nextcloud.conf เป็นไฟล์ที่เราสร้างขึ้นมาใหม่ เช่นกัน แต่มัน link ไปยัง /etc/apache2/sites-avilable
root@www:/etc/apache2/sites-enabled# ls
000-default.conf nextcloud.conf
วิธีดูว่า มีการสร้าง link ไปจริงหรือไม่ ให้ใช้ คำสั่ง ls-la
root@www:/etc/apache2/sites-enabled# ls -la
total 8
drwxr-xr-x 2 root root 4096 Feb 17 13:29 .
drwxr-xr-x 8 root root 4096 Feb 17 19:11 ..
lrwxrwxrwx 1 root root 35 Feb 17 12:44 000-default.conf -> ../sites-available/000-default.conf
lrwxrwxrwx 1 root root 33 Feb 17 13:29 nextcloud.conf -> ../sites-available/nextcloud.conf
กรณีไฟล์ default-ssl.conf
default-ssl.conf ใช้สำหรับกรณีที่เราต้องการเปิดการใช้งาน ssl หรือ https เพื่อทดสอบวิธีการ
- sudo a2ensite default-ssl
- enable mod ssl.
- sudo a2enmod ssl
- systemctl restart apache2
Setup Apache Virtual Host for Nextcloud
ตัวอย่างกรณีเราติดตั้ง Nextcloud แล้วเราสร้าง ไฟล์คอนฟิกสำหรับมัน To use the virtual host installation
vi /etc/apache2/sites-available/nextcloud.conf
หลังจากนั้น ให้แก้ไขค่า โดยกำหนดให้เป็น โดเมนเนมของเราเอง ตามตัวอย่างชื่อโดเมนเนม knupan.live ให้เปลี่ยนเป็นโดเมนเนมที่เรามีหรือสร้างขึ้นมาเอง
<VirtualHost *:80>
ServerName www.knupan.live
ServerAlias knupan.live
# auto redirect HTTP to HTTPS
Redirect permanent / https://www.knupan.live/
</VirtualHost>
<VirtualHost *:443>
ServerName www.knupan.live
ServerAlias knupan.live
# DocumentRoot /var/www/nextcloud/
DocumentRoot /var/www/
Protocols h2 http/1.1
# auto redirect www to non-www
<If "%{HTTP_HOST} == 'knupan.live'">
Redirect permanent / https://www.knupan.live/
</If>
# log files
ErrorLog /var/log/apache2/www.knupan.live-error.log
CustomLog /var/log/apache2/www.knupan.live-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/www.knupan.live/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.knupan.live/privkey.pem
# HSTS
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
</VirtualHost>
ทดสอบว่าที่เราปรับแต่งไปแล้วมี ปัญหาหรือไม่
apachectl configtest
systemctl restart apache2
ปกติหากเราคอนฟิกค่าดังกล่าว มันจะยังไม่ทำงาน เพราะมันจะทำงานในแบบเดิมของมัน หากต้องการให้ทำงาน ตามที่เราต้องการก็ให้ใช้คำสั่ง
a2ensite nextcloud.conf
Warning, Tip, Notice, or Information.
จะเห็นว่า ในไฟล์คอนฟิก /etc/apache2/sites-available/nextcloud.conf
ได้กำหนดที่เก็บข้อมูลเว็บไชต์ ไว้ที่
DocumentRoot /var/www/
ดังนั้นเราต้องดำเนินการในขั้นตอนต่อไปนี้ด้วย
เปลี่ยนชื่อเจ้าของและกลุ่ม ใน /var/www ใช้ -R เพื่อเปลี่ยนทั้งหมด to change the permissions of a folder and all its subfolders and files in one step
chown -R www-data:www-data /var/www
เปลี่ยนสิทธิ์ในการเข้าถึง /var/www
chmod 755 /var/www
เมื่อมีการแก้ไขค่าคอนฟิกต้องใช้คำสั่ง
systemctl reload apache2
การติดตั้งและการปรับแต่ง Apache บน Debian ที่สำคัญมีแค่นี้แหละคิดว่าไม่น่าจะยาก