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 ที่สำคัญมีแค่นี้แหละคิดว่าไม่น่าจะยาก