Konfigurasi VirtualHost Apache

Disini saya akan mencatat tentang apa saja yang harus dilakukan pada saat ingin membuat atau mengubah VirtualHost. berikut dengan cara membuat VirtualHost dengan domain, Menambahkan VirtualHost dengan port yang berbeda, atau mengubah port default VirtualHost Apache

Mengubah Port Default VirtualHost Apache

Secara default VirtualHost Apache menggunakan port 80 untuk komunikasi tanpa enkripsi dan port 443 untuk komunikasi dengan enkripsi (SSL/TLS)
Untuk mengubah port default VirtualHost apache kita harus mengubahnya di dalam file ports.conf yang berada didalam direktori /etc/apache2.

sudo nano /etc/apache2/ports.conf

Lalu ubah pada bagian parameter Listen

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Menambahkan VirtualHost Baru Dengan Port Custom

Ketika kita ingin menambahkan VirtualHost baru dengan port custom, hal yang harus diperhatikan adalah menambahkan parameter Listen di awal file konfigurasi.
Dan perlu diperhatikan juga ketika kita ingin membuat VirtualHost baru dengan port yang sudah ada kita tidak perlu menambahkan parameter Listen di awal file konfigurasi. Jika itu dilakukan pada saat akan mengaktifkan VirtualHost dengan perintah a2ensite akan terjadi error dan ketika kita coba lihat penyebab error dengan perintah apachectl configtest akan muncul log error dengan keterangan

AH00526: Syntax error on line 1 of /etc/apache2/sites-enabled/tes.conf:
Cannot define multiple Listeners on the same IP:port
Action 'configtest' failed.
The Apache error log may have more information.

Menambahkan VirtualHost Baru dengan port custom (IP)

Cara ini dibutuhkan ketika kita ingin menginstall aplikasi yang mensyaratkan penginstallanya terletak di Document Root seperti Crater Invoice, ataupun dengan alasan keamanan yang mengharuskan kita melakukan custom port.

Untuk menambahkan VirtualHost dengan port custom (IP) parameter yang ditambahkan dan diubah adalah:

Tambahkan parameter Listen <port-number>

Ubah parameter <VirtualHost *:<port-number>>

Sehingga menjadi seperti berikut:

Listen 8361

<VirtualHost *:8361>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/crater/public

        <Directory /var/www/crater/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>        

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Menambahkan VirtualHost Baru dengan port custom (Domain)

Tambahkan parameter Listen <port-number>

Ubah parameter <VirtualHost *:<port-number>>

Sehingga menjadi seperti berikut:

Listen 8362
<VirtualHost *:8362>
    ServerName warscloud.com
    DocumentRoot /var/www/website/

    <Directory /var/www/website>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /var/log/apache2/warscloud.com_error.log
    CustomLog /var/log/apache2/warscloud.com_access.log combined
</VirtualHost>