ฉันจะบอกได้ว่าไฟล์ปรับแต่งใดที่ Apache กำลังใช้อยู่


36

ฉันกำลังพยายามตั้งค่าโฮสต์เสมือนบน Mac OS X ฉันได้แก้ไข httpd.conf แล้วรีสตาร์ทเซิร์ฟเวอร์ แต่ก็ไม่มีโชคในการทำให้ใช้งานได้ นอกจากนี้ฉันสังเกตเห็นว่ามันไม่ได้ให้บริการไฟล์ใน DocumentRoot ที่กล่าวถึงใน httpd.conf (Libraries / WebServer / Documents) แต่ในไดเรกทอรีอื่น (/ usr / local / apache2 / htdocs) ฉันไม่เห็นโฟลเดอร์นี้พูดถึงทุกที่ใน httpd.conf นอกจากนี้ PHP ใช้งานได้ แต่บรรทัด "LoadModule php5_module" แสดงความคิดเห็น นี่ทำให้ฉันคิดว่าใช้ไฟล์. config อีกไฟล์ ฉันจะทราบได้อย่างไรว่ากำลังโหลดการกำหนดค่าใดอยู่

อัปเดต: ฉันเพิ่งลบ httpd.conf และ apache ที่ทำงานเหมือนเดิมหลังจากรีสตาร์ทดังนั้นมันจึงไม่ได้ใช้อย่างแน่นอน!

คำตอบ:


45

ด้วยแอ็พพลิเคชัน * nix ใด ๆ วิธีที่ง่ายที่สุดคือการเคียวรีไบนารีเอง ในกรณีของ httpd ฉันคิดว่ากระบวนการจะเป็นเช่นนี้:

$ whereis httpd
/usr/sbin/httpd
$ /usr/sbin/httpd -V
Server version: Apache/2.2.11 (Unix)
Server built:   Jun 17 2009 14:55:13
Server's Module Magic Number: 20051115:21
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
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_FLOCK_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"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/private/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

อย่างที่คุณเห็น - OS X ของฉันบอกว่าไบนารีหากไม่ได้เป็นแบบนั้นจะใช้ไฟล์กำหนดค่า: /private/etc/apache2/httpd.conf

ถ้านั่นไม่ช่วยบางทีคำแนะนำในการค้นหาของ Christopher อาจเป็นขั้นตอนต่อไป


2
สิ่งนี้จะไม่ทำงานหากคุณใช้ Apache ผ่าน Server.app ในกรณีนี้คุณจะต้องมีรายการกระบวนการในคำตอบจาก @msanford serverfault.com/a/155114/187798ซึ่งแสดงว่า Server.app เริ่ม httpd ด้วยไฟล์การกำหนดค่าที่แตกต่างกันดังแสดงในที่นี้จากการติดตั้งของฉัน (Mavericks)/usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/apache2/httpd_server_app.conf -D WEBSERVICE_ON
Jason S

ยังไม่ทำงานเมื่อใช้ apache ติดตั้งผ่านทาง macports - คำตอบโดย msandord ใช้งานได้สำหรับฉัน!
pgee70

15

มีคำถาม ServerFault อื่นเกี่ยวกับการเป็นนี้ หากคุณใช้เซิร์ฟเวอร์ที่ใช้เดเบียนคุณสามารถใช้apache2ctlเพื่อกำหนดว่าจะใช้ไฟล์ปรับแต่งใด:

apache2ctl -V

เพิ่มเติมเกี่ยวกับเรื่องนี้:

วิธีค้นหา apache httpd.conf ที่ใช้ที่รันไทม์


10

ลอง

ps ax | grep httpd

และคุณควร (อาจ) รับผลเช่น

1633   ??  Ss     0:00.21 /usr/sbin/httpd -f /etc/httpd.conf

นอกจากนี้คุณรีสตาร์ทเซิร์ฟเวอร์อย่างไร เพียงแค่อยากรู้อยากเห็นในกรณีที่คุณอย่างใดไม่ได้จริงอีกครั้งอ่านไฟล์ config


หืมมันไม่มี-fธงอยู่เลย
Claudiu

1
+1 เช่นนี้เป็นคำตอบเดียวที่เหมาะกับทุกกรณีที่ถ้าคุณกำลังกำหนดค่า Apache ตัวเองหรือถ้าคุณกำลังใช้ Apache ผ่าน Server.app
เจสัน S

2

เนื่องจากการกำหนดค่าบางอย่างใช้แอปเซิร์ฟเวอร์ชงหรืออะไรก็ตามและเพราะหนึ่ง liners FTW:

$(ps ax -o comm | grep -m 1 httpd) -V | grep SERVER_CONFIG_FILE

คำสั่งนี้ทำสิ่งต่อไปนี้:

  • ค้นหากระบวนการ httpd ที่ใช้งานอยู่
  • ข้อมูลการกำหนดค่าเอาท์พุท
  • Grep ไฟล์ config

ทดสอบกับ Sierra & El Capitan


$เป็นสิ่งสำคัญ (ยังไม่พรอมต์บรรทัดคำสั่งในกรณีนี้) หากแปลงคำสั่งเป็น parens เป็นคำสั่งที่เราผ่านการ-Vตั้งค่าสถานะ ออกจากผลลัพธ์ใน: "ข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด` -V '"
Tom Auger

0

ก่อนอื่นให้ตรวจสอบว่าเป็นสคริปต์เริ่มต้นสำหรับ Apache สำหรับ macOS ควรเป็น / Library / LaunchDaemons ซึ่งอาจรวมถึงไดเรกทอรีทำงานหรือข้อมูลที่คล้ายกัน

คุณสามารถดีบักกระบวนการที่กำลังรันด้วยตัวเองด้วย dtruss dtruss -p <pid>คุณสามารถเชื่อมต่อกับกระบวนการทำงานโดยใช้ จากนั้นหากคุณ HUP คุณสามารถเจาะรูเอาต์พุตเพื่อดูว่ามันกำลังคว้า config ของมันไว้ที่ไหน อีกวิธีหนึ่งคือเพียงแค่เริ่มต้น Apache โดยการเรียก dtruss dtruss start_apache_commandโดยตรงกับ

คุณสามารถเสมอเพียงทำการค้นหาทั้งระบบสำหรับ httpd.conf find / -name httpd.confด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.