ไฟล์คอนฟิก httpd.conf ของ Apache อยู่ที่ไหน

หลังจากปล่อยเว็บเซิร์ฟเวอร์ (Apache Web Server) ให้ทำงานไว้นานมากหลายปี  ได้เวลาปรับปรุงเป็นเวอร์ชั่นล่าสุด เพื่อประสิทธิภาพ และเพื่อความปลอดภัย

แต่ปัญหาคือเครื่องจะปรับปรุงนี้ รัน httpd ไว้หลายโปรเซส หลายพอร์ตมาก ทำให้เริ่มงงว่า โปรเซสไหน รันจาก httpd ไฟล์ไหน ใช้คอนฟิก httpd.conf  ที่ไหน

โดยดีฟอล์ตถ้าเป็น RedHat, CentOS, Fedora ไฟล์คอนฟิกของ Apache ที่ติดตั้งมากับแผ่นจะอยู่ใน /etc/httpd/conf/  แต่ถ้าคอมไพล์ Apache จาก source เอง ไดเร็คทอรีนี้ก็จะเปลี่ยนไป

หลังจากศึกษาทำความเข้าใจ เลยนำมาสรุปให้ฟัง เพื่อจะมีประโยชน์

หมายเหตุ ตัวอย่างในบทความนี้จะทดสอบกับ Apache เวอร์ชั่น 2.2.19  แต่วิธีการนี้สามารถนำไปใช้ได้กับ apache เวอร์ชั่นเก่า รวมถึงเวอร์ชั่น 2.0 ได้

ใช้คำสั่ง ps เพื่อดูโปรเซสที่รัน

[root@web ~]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
...
root     28859     1  0 03:34 ?        00:00:00 httpd
apache   28860 28859  0 03:34 ?        00:00:00 httpd
apache   28861 28859  0 03:34 ?        00:00:00 httpd
apache   28862 28859  0 03:34 ?        00:00:00 httpd
apache   28863 28859  0 03:34 ?        00:00:00 httpd
apache   28864 28859  0 03:34 ?        00:00:00 httpd

อย่างแรก httpd ที่รันเนี่ย อยู่ที่ไหน

หาได้จากเข้าไปดูใน /proc ตามไดเร็คทอรีย่อยเป็น PID (Process ID) ของโปรเซสที่รันด้วย root เช่นในที่นี้ PID เท่ากับ 28859 ต้องเข้าไปดูใน /proc/28859/

[root@web ~]# ls -l /proc/28859/
total 0
dr-xr-xr-x 2 root root 0 Aug  6 03:36 attr
-r-------- 1 root root 0 Aug  6 03:36 auxv
-r--r--r-- 1 root root 0 Aug  6 03:34 cmdline
-rw-r--r-- 1 root root 0 Aug  6 03:36 coredump_filter
-r--r--r-- 1 root root 0 Aug  6 03:36 cpuset
lrwxrwxrwx 1 root root 0 Aug  6 03:36 cwd -> /
-r-------- 1 root root 0 Aug  6 03:36 environ
lrwxrwxrwx 1 root root 0 Aug  6 03:36 exe -> /usr/local/sbin/httpd
...

ไฟล์ symbolic link ที่ชื่อ exe จะชึ้ไปยัง full path ของไฟล์ที่รัน

ได้ละว่าไฟล์ daemon ที่รัน อยู่ที่ไหน

ขั้นต่อไป หาไฟล์คอนฟิก httpd.conf ที่ daemon ตัวนี้ใช้

[root@web ~]# ls -l /usr/local/sbin/httpd
-rwxr-xr-x 1 root root 1473263 Aug  6 03:29 /usr/local/sbin/httpd

รัน httpd ตามด้วยออปชั่น ‘-V’  (ตัวอักษร วี ใหญ่) จะบอกรายละเอียดของไฟล์ httpd

[root@web ~]# /usr/local/sbin/httpd -V
Server version: Apache/2.2.19 (Unix)
Server built:   Aug  6 2011 03:24:26
Server's Module Magic Number: 20051115:28
Server loaded:  APR 1.4.5, APR-Util 1.3.12
Compiled using: APR 1.4.5, APR-Util 1.3.12
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/usr/local/httpd-2.2.19"
 -D SUEXEC_BIN="/usr/local/httpd-2.2.19/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

ไดเร็คทอรีหลักของ httpd (HTTPD_ROOT) คือ “/usr/local/httpd-2.2.19”

ไฟล์คอนฟิก (SERVER_CONFIG_FILE) คือ “conf/httpd.conf”  ซึ่งถ้าไม่มีเครื่องหมาย “/” นำหน้า จะเป็น relative path กับ HTTPD_ROOT อีกที หรือ full path ของคอนฟิกไฟล์ httpd.conf นี้คือ /usr/local/httpd-2.2.19/conf/httpd.conf
 

ข้อมูลอ้างอิง

  •  man proc(5) 

Leave a Reply

Your email address will not be published.