ฉันกำลังติดตั้งโคมไฟสแต็คทั้งหมดผ่าน 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
/Users/elzi/Sites
แต่คุณต้องการการเชื่อมต่อกับexample.dev
การใช้งาน/Users/elzi/sites/example/
แต่การเชื่อมต่อไปควรใช้www.example.dev
/Users/elzi/Sites/www.example
นั่นถูกต้องใช่ไหม? คุณสามารถยกตัวอย่างสิ่งที่คุณลองและเกิดอะไรขึ้น
www.example.dev
การแก้ไขเพียงแค่example.dev
นี่คือการกำหนดค่าที่ทำงานได้ดีกับ apache 2.2 มันวิเศษมากเมื่อใช้งานได้ฉันเพิ่งสร้างโฟลเดอร์ใหม่ใน ~ / Sites ของฉันและฉันสามารถเข้าถึงมันโดยอัตโนมัติด้วยกฎ wildcard * และการ%-2+
จัดรูปแบบสตริง ตอนนี้ไม่มีอะไรแก้ไข แม้ว่าฉันจะเพิ่มกฎ VirtualHost ด้วยตนเองลงในโฟลเดอร์โดยตรง แต่ก็ไม่สามารถแก้ไขได้
brew install --with privledged-ports
2) อย่ากังวลกับการติดตั้งco.echo.httpdfwd.plist
ดีมอนเปิดตัวเนื่องจาก 2.4 สามารถใช้พอร์ตที่มีสิทธิพิเศษได้ และ 2a) 80 แทน 8080 ในกรณีที่เกี่ยวข้อง