Botched Apache config บน macOS Sierra - โฮสต์เสมือนจะไม่ทำงาน


0

ฉันกำลังติดตั้งโคมไฟสแต็คทั้งหมดผ่าน Homebrew (Apache, PHP, MySQL, Dnsmasq)

นี่เป็นบทสรุปโดยย่อของการกำหนดค่า:

ServerName localhost

Listen 80

DocumentRoot "/Users/your_user/Sites"
<Directory "/Users/your_user/Sites">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

ด้วยสิ่งเหล่านี้ทุกอย่างทำงานได้ดี

ในส่วนถัดไปเมื่อฉันพยายามเพิ่มโฮสต์เสมือนโดยใช้ config ฉันรู้ว่าเคยทำงานในอดีตฉันพบข้อผิดพลาด

LoadModule vhost_alias_module libexec/mod_vhost_alias.so

<VirtualHost *:80>
    DocumentRoot /Users/elzi/Sites
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
  ServerName dev
  ServerAlias *.dev
  VirtualDocumentRoot /Users/elzi/Sites/%-2+
</VirtualHost>

ณ จุดนี้ฉันไม่ได้กังวลเกี่ยวกับ PHP / MySQL / DNSMASQ ฉันต้องการหนึ่งใน virtualhost configs เพื่อทำงานก่อน ใช้กฎด้านล่างฉันควรจะสามารถเข้าถึงเว็บไซต์ใด ๆ ใน~/Sitesโฟลเดอร์ของฉันหากฉันทำรายการสำหรับพวกเขาในไฟล์โฮสต์ของฉัน

ฉันสามารถเข้าถึงเว็บไซต์ที่http://localhostและดูดัชนีของสิ่งที่ฉันตั้งค่าDocumentRoot(หรือVirtualDocument) รากจะเป็น ServerAliasแต่ฉันไม่สามารถเข้าถึงสัญลักษณ์แทน ตัวอย่างเช่น,

http://test.dev ไม่สามารถแก้ไขใน Apache แม้:

  • มันมีอยู่ในไฟล์โฮสต์ของฉัน
  • ความสามารถในการ ping

ฉันเริ่มคิดว่าปัญหาไม่เกี่ยวข้องกับ Apache อย่างเคร่งครัดหรือไม่ อาจเป็นปัญหา DNS / IPv6 หรือ

นี่คือการถ่ายโอนข้อมูลของ netstat -amp tcp | grep 80

tcp4       0      0  192.168.0.108.49632    151.101.193.69.80      ESTABLISHED
tcp4       0      0  192.168.0.108.49608    151.101.193.69.80      ESTABLISHED
tcp6       0      0  ::1.49567              ::1.80                 CLOSE_WAIT 
tcp4       0      0  192.168.0.108.49566    192.168.0.101.8060     CLOSE_WAIT
tcp46      0      0  *.80                   *.*                    LISTEN
tcp4       0      0  127.0.0.1.18800        *.*                    LISTEN

ผลผลิตของ sudoapachectl -v

Server version: Apache/2.4.23 (Unix)
Server built:   Dec 22 2016 18:07:11

ผลผลิตของ cat /etc/resolv.conf

nameserver 127.0.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4

ผลผลิตของ brew services list

Name    Status  User Plist
httpd24 started elzi /Users/elzi/Library/LaunchAgents/homebrew.mxcl.httpd24.plist
jack    started elzi /Users/elzi/Library/LaunchAgents/homebrew.mxcl.jack.plist
mongodb started elzi /Users/elzi/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
mysql   started elzi /Users/elzi/Library/LaunchAgents/homebrew.mxcl.mysql.plist
php70   started elzi /Users/elzi/Library/LaunchAgents/homebrew.mxcl.php70.plist

ผลผลิตของ sudo apachectl -S

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server localhost (/usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf:3)
         port 80 namevhost localhost (/usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf:3)
         port 80 namevhost dev (/usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf:8)
                 wild alias *.dev
ServerRoot: "/usr/local/opt/httpd24"
Main DocumentRoot: "/Users/elzi/Sites"
Main ErrorLog: "/usr/local/var/log/apache2/error_log"
Mutex rewrite-map: using_defaults
Mutex default: dir="/usr/local/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
PidFile: "/usr/local/var/run/apache2/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="elzi" id=501
Group: name="staff" id=20

โปรดแก้ไขคำถามของคุณให้เจาะจงมากเกี่ยวกับสิ่งที่คุณหมายถึงโดย "จะไม่ทำงาน" และ "ฉันพบข้อผิดพลาด" คุณลองทำอะไรคุณคาดหวังผลลัพธ์อะไรและคุณได้ผลลัพธ์อะไรบ้าง
Spiff

ดังนั้นถ้าผมตีความไฟล์ config ของคุณในขณะที่คุณต้องการเชื่อมต่อกับชื่อโฮสต์ที่ไม่รู้จักบวก "localhost" และ "dev" เพื่อใช้/Users/elzi/Sitesแต่คุณต้องการการเชื่อมต่อกับexample.devการใช้งาน/Users/elzi/sites/example/แต่การเชื่อมต่อไปควรใช้www.example.dev /Users/elzi/Sites/www.exampleนั่นถูกต้องใช่ไหม? คุณสามารถยกตัวอย่างสิ่งที่คุณลองและเกิดอะไรขึ้น
Spiff

@Spiff แก้ไขเพื่อความชัดเจน ขอโทษด้วยกับเรื่องนั้น. ถูกต้องยกเว้นว่าฉันไม่ได้กังวลเกี่ยวกับwww.example.devการแก้ไขเพียงแค่example.dev นี่คือการกำหนดค่าที่ทำงานได้ดีกับ apache 2.2 มันวิเศษมากเมื่อใช้งานได้ฉันเพิ่งสร้างโฟลเดอร์ใหม่ใน ~ / Sites ของฉันและฉันสามารถเข้าถึงมันโดยอัตโนมัติด้วยกฎ wildcard * และการ%-2+จัดรูปแบบสตริง ตอนนี้ไม่มีอะไรแก้ไข แม้ว่าฉันจะเพิ่มกฎ VirtualHost ด้วยตนเองลงในโฟลเดอร์โดยตรง แต่ก็ไม่สามารถแก้ไขได้
elzi

1
@ Jake ฉันจะทำให้มันทำงานได้ เชื่อใจฉันมันวิเศษอย่างจริงจังเมื่ออยู่ในการทำงาน ฉันใช้คนจรจัดสำหรับโครงการประเภทอื่น ๆ เพราะเชื่อว่าไม่มีใครเกลียด apache ที่กำหนดค่าได้มากกว่าฉัน
elzi

1
@ LukasKawerau ฉันควร prob เพียงลบคำถามนี้เนื่องจาก config ที่ฉันลงเอยด้วยแตกต่างจากโพสต์ต้นฉบับของฉัน แต่ฉันทำตามคำแนะนำนี้มากขึ้นหรือน้อยลง: echo.co/blog/…มีสองข้อแตกต่างที่สำคัญ - 1) ภาคผนวก apache เวอร์ชั่นที่ใช้ 2.4 และติดตั้งด้วยbrew install --with privledged-ports 2) อย่ากังวลกับการติดตั้งco.echo.httpdfwd.plistดีมอนเปิดตัวเนื่องจาก 2.4 สามารถใช้พอร์ตที่มีสิทธิพิเศษได้ และ 2a) 80 แทน 8080 ในกรณีที่เกี่ยวข้อง
elzi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.