Konfigurasi Apache yang gagal di macOS Sierra - Host virtual tidak akan berfungsi

0

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 ~/Sitesfolder saya , asalkan saya membuat entri untuk mereka di file host saya.

Saya dapat mengakses situs di http://localhostdan 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
Elzi
sumber
Harap edit pertanyaan Anda menjadi sangat spesifik tentang apa yang Anda maksud dengan "tidak akan berhasil" dan "Saya menemukan kesalahan". Apa yang Anda coba, hasil apa yang Anda harapkan, dan hasil apa yang Anda dapatkan?
Spiff
Jadi, jika saya menafsirkan file konfigurasi Anda dengan benar, Anda ingin koneksi ke nama host yang tidak dikenal, ditambah "localhost" dan "dev" untuk digunakan /Users/elzi/Sites, tetapi Anda ingin koneksi example.devuntuk menggunakan /Users/elzi/sites/example/tetapi koneksi www.example.devharus digunakan /Users/elzi/Sites/www.example. Apakah itu benar? Bisakah Anda memberikan contoh tentang apa yang Anda coba dan apa yang terjadi?
Spiff
@Spiff diedit untuk kejelasan. Maaf soal itu. Itu memang benar, kecuali saya tidak khawatir tentang www.example.devpenyelesaian, hanya example.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.
elzi
1
@JakeGould saya membuatnya bekerja. Percayalah, ini benar-benar ajaib ketika sedang bekerja. Saya menggunakan gelandangan untuk banyak jenis proyek lain karena percaya tidak ada yang membenci konfigurasi apache lebih dari saya.
Elzi
1
@LukasKawerau Saya harus langsung menghapus pertanyaan ini karena konfigurasi yang saya buat agak berbeda dari apa yang diperlukan oleh tulisan asli saya, tetapi saya kurang lebih mengikuti panduan ini: echo.co/blog/… dengan dua perbedaan penting - 1) Tambahan versi apache untuk menggunakan 2.4 dan diinstal dengan brew install --with privledged-ports 2) Jangan repot-repot menginstal co.echo.httpdfwd.plistdaemon peluncurannya karena 2.4 dapat menggunakan port yang di-privedged. dan 2a) 80 bukannya 8080 jika berlaku.
Elzi