Saya menginstal seluruh tumpukan LAMP melalui Homebrew (Apache, PHP, MySQL, Dnsmasq).
Berikut ringkasan singkat konfigurasi:
ServerName localhost
Listen 80
DocumentRoot "/Users/your_user/Sites"
<Directory "/Users/your_user/Sites">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Hanya dengan ini, semuanya berfungsi dengan baik.
Pada bagian selanjutnya ketika saya mencoba untuk menambahkan virtual host menggunakan konfigurasi yang saya tahu telah bekerja di masa lalu, saya menemukan kesalahan.
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>
Pada titik ini saya bahkan tidak khawatir tentang PHP / MySQL / DNSMASQ. Saya hanya perlu salah satu konfigurasi virtualhost saya untuk bekerja terlebih dahulu. Menggunakan aturan bawah saya harus dapat mengakses situs mana pun di ~/Sites
folder saya , asalkan saya membuat entri untuk mereka di file host saya.
Saya dapat mengakses situs di http://localhost
dan melihat indeks apa pun yang saya atur DocumentRoot
(atau VirtualDocument
) root menjadi, tetapi saya tidak dapat mengakses wildcard ServerAlias
. Sebagai contoh,
http://test.dev
tidak menyelesaikan di Apache, meskipun:
- Itu ada di file host saya.
- Mampu melakukan ping.
Saya mulai berpikir masalahnya bukan terkait dengan Apache? Mungkin masalah DNS / IPv6?
Berikut dump 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
Output dari sudoapachectl -v
Server version: Apache/2.4.23 (Unix)
Server built: Dec 22 2016 18:07:11
Output dari cat /etc/resolv.conf
nameserver 127.0.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4
Output dari 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
Output dari 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
, tetapi Anda ingin koneksiexample.dev
untuk menggunakan/Users/elzi/sites/example/
tetapi koneksiwww.example.dev
harus digunakan/Users/elzi/Sites/www.example
. Apakah itu benar? Bisakah Anda memberikan contoh tentang apa yang Anda coba dan apa yang terjadi?www.example.dev
penyelesaian, hanyaexample.dev
ini adalah konfigurasi yang bekerja dengan baik dengan apache 2.2. Benar-benar ajaib ketika berfungsi, saya hanya membuat folder baru di ~ / Situs saya dan saya dapat mengaksesnya secara otomatis dengan aturan wildcard * dan%-2+
pemformatan string. Sekarang tidak ada yang terselesaikan. Bahkan ketika saya secara manual menambahkan aturan VirtualHost langsung ke folder itu tidak menyelesaikan.brew install --with privledged-ports
2) Jangan repot-repot menginstalco.echo.httpdfwd.plist
daemon peluncurannya karena 2.4 dapat menggunakan port yang di-privedged. dan 2a) 80 bukannya 8080 jika berlaku.