Cara yang tepat untuk mengubah direktori atau menjalankan dari banyak direktori di bawah port yang berbeda untuk apache2 adalah sebagai berikut:
Untuk apache2 file konfigurasi terletak di bawah /etc/apache2dan tidak menggunakan file konfigurasi tunggal seperti dalam versi yang lebih lama tetapi dibagi menjadi file konfigurasi yang lebih kecil, dengan /etc/apache2/apache2.confmenjadi file konfigurasi utama. Untuk melayani file dari direktori yang berbeda, kami memerlukan file conf virtualhost baru. File conf virtualhost berada di /etc/apache2/sites-available(jangan mengedit file dalam situs yang diaktifkan). Instalasi apache default menggunakan file conf virtualhost000-default.conf .
Mulailah dengan membuat file virtualhost baru dengan menyalin file virtualhost default yang digunakan oleh instalasi default apache (yang berjalan di localhost pada port 80). Ubah ke direktori /etc/apache2/sites-availabledan kemudian salin dengan sudo cp 000-default.conf example.com.conf, sekarang edit file dengan sudo gedit example.com.confke:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
Saya telah menghapus baris yang tidak penting dari file di atas untuk singkatnya. Berikut DocumentRootadalah jalur ke direktori tempat file situs web akan dilayani seperti index.html.
Buat direktori dari mana Anda ingin melayani file, untuk misalnya; mkdir example.comdan ubah pemilik dan grup default direktori, misalnya misalnya jika nama pengguna Anda yang login adalah ubuntuubah izin sudo chown ubuntu:www-data example.com. Ini memberikan akses penuh ke pengguna ubuntudan memungkinkan membaca dan mengeksekusi akses ke grup www-data.
Sekarang edit file conf apache /etc/apache2/apache2.confdengan mengeluarkan perintah sudo gedit apache2.confdan temukan baris <Directory /var/www/>dan di bawah tag penutup </Directory>, tambahkan yang berikut di bawah ini:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
Sekarang ada dua perintah untuk mengaktifkan atau menonaktifkan file konfigurasi virtualhost, yaitu a2ensitedan a2dissitemasing - masing. Sekarang karena example.com.conffile kita menggunakan port yang sama ( 80) seperti yang digunakan oleh file konfigurasi default ( 000-default.conf), kita harus menonaktifkan file konfigurasi default dengan mengeluarkan perintah sudo a2dissite 000-default.confdan mengaktifkan file conf virtualhost kami dengansudo a2ensite example.com.conf
Sekarang restart atau muat ulang server dengan perintah sudo service apache2 restart. Sekarang apache melayani file dari direktori example.compada localhostpada port default80 .
Itu a2ensite perintah pada dasarnya menciptakan link simbolik ke file conf di bawah direktori situs-diaktifkan
Jangan mengedit file di dalam pengarahan situs-situs yang diaktifkan (atau * -diaktifkan), seperti yang ditunjukkan dalam jawaban ini https://stackoverflow.com/a/41568701/2532763
Untuk mengubah port dan menjalankan dari banyak direktori pada port yang berbeda:
Sekarang jika Anda perlu menjalankan direktori pada port yang berbeda, ubah nomor port dari 80 menjadi 8080 dengan mengedit file virtualhost sebagai:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
dan mengedit /etc/apache2/ports.confdan menambahkan Listen 8080tepat di bawah garisListen 80
Sekarang kita dapat mengaktifkan file conf virtualhost default yang berjalan pada port 80 karena direktori example.com menggunakan port 8080, sebagai sudo a2ensite 000-default.conf
Sekarang restart atau muat ulang server dengan perintah sudo service apache2 restart. Sekarang kedua direktori dapat diakses dari localhostdanlocalhost:8080