Difference between revisions of "Apache: Virtual Host - lagi"

From OnnoWiki
Jump to navigation Jump to search
Line 28: Line 28:
  
 
==File Konfigurasi Virtual Host==
 
==File Konfigurasi Virtual Host==
 +
 +
  
 
Your best bet for a starting place is to copy Apache's default /etc/apache/sites-available/default. (Note that I like to make my files with the extension ".conf" - That's not necessary). I'm going to assume we'll make a server which will match the url http://myproject.192.168.33.10.xip.io.
 
Your best bet for a starting place is to copy Apache's default /etc/apache/sites-available/default. (Note that I like to make my files with the extension ".conf" - That's not necessary). I'm going to assume we'll make a server which will match the url http://myproject.192.168.33.10.xip.io.
Line 33: Line 35:
 
This assumes my server's IP address is 192.168.33.10. Change yours as needed. I'm using [http://xip.io] as it lets me skip needing to do any extra setup (like having to edit my computer's hosts file.
 
This assumes my server's IP address is 192.168.33.10. Change yours as needed. I'm using [http://xip.io] as it lets me skip needing to do any extra setup (like having to edit my computer's hosts file.
  
$ sudo cp /etc/apache2/sites-available/000-default.conf \
+
$ sudo cp /etc/apache2/sites-available/000-default.conf \
          /etc/apache2/sites-available/myproject.conf
+
          /etc/apache2/sites-available/myproject.conf
 
 
Here's what's in there.
 
 
 
<VirtualHost *:80>
 
    # 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
 
 
 
    # 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
+
Here's what's in there.
    CustomLog ${APACHE_LOG_DIR}/access.log combined
 
  
    # For most configuration files from conf-available/, which are
+
<VirtualHost *:80>
    # enabled or disabled at a global level, it is possible to
+
    # The ServerName directive sets the request scheme, hostname and port that
    # include a line for only one particular virtual host. For example the
+
    # the server uses to identify itself. This is used when creating
    # following line enables the CGI configuration for this host only
+
    # redirection URLs. In the context of virtual hosts, the ServerName
    # after it has been globally disabled with "a2disconf".
+
    # specifies what hostname must appear in the request's Host: header to
    #Include conf-available/serve-cgi-bin.conf
+
    # match this virtual host. For the default virtual host (this file) this
</VirtualHost>
+
    # 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
 +
 +
    # 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>
  
 
Unlike Apache 2.2, Apache 2.4's default virtual host setup has less meat in there. We can add to that for our own default. Let's start here. Remove those unnecessary comments an get to where your new virtual host looks like this:
 
Unlike Apache 2.2, Apache 2.4's default virtual host setup has less meat in there. We can add to that for our own default. Let's start here. Remove those unnecessary comments an get to where your new virtual host looks like this:
  
<VirtualHost *:80>
+
<VirtualHost *:80>
    ServerName myproject.192.168.33.10.xip.io
+
    ServerName myproject.192.168.33.10.xip.io  
 
+
    DocumentRoot /var/www/myproject/public
+
    DocumentRoot /var/www/myproject/public
 
 
    <Directory /var/www/myproject/public>
 
        Options -Indexes +FollowSymLinks +MultiViews
 
        AllowOverride All
 
        Require all granted
 
    </Directory>
 
 
 
    ErrorLog ${APACHE_LOG_DIR}/myproject-error.log
 
 
 
    # Possible values include: debug, info, notice, warn, error, crit,
 
    # alert, emerg.
 
    LogLevel warn
 
 
 
    CustomLog ${APACHE_LOG_DIR}/myproject-access.log combined
 
  
</VirtualHost>
+
    <Directory /var/www/myproject/public>
 +
        Options -Indexes +FollowSymLinks +MultiViews
 +
        AllowOverride All
 +
        Require all granted
 +
    </Directory>
 +
 +
    ErrorLog ${APACHE_LOG_DIR}/myproject-error.log
 +
 +
    # Possible values include: debug, info, notice, warn, error, crit,
 +
    # alert, emerg.
 +
    LogLevel warn
 +
 +
    CustomLog ${APACHE_LOG_DIR}/myproject-access.log combined
 +
 +
</VirtualHost>
  
What does all this do?
+
==What does all this do?==
  
 
     ServerName and ServerAlias: Let Apache know the domain to match to this virtual host by setting the ServerName. Optionally also use ServerAlias to tell apache to listen to other domains and point them to this virtual host as well, such as a "www" subdomain.
 
     ServerName and ServerAlias: Let Apache know the domain to match to this virtual host by setting the ServerName. Optionally also use ServerAlias to tell apache to listen to other domains and point them to this virtual host as well, such as a "www" subdomain.
Line 99: Line 101:
 
     ErrorLog, CustomLog: Create log files specifically for your domain, so they don't get mixed in with traffic / errors from other sites running on the server.
 
     ErrorLog, CustomLog: Create log files specifically for your domain, so they don't get mixed in with traffic / errors from other sites running on the server.
  
The Hosts File
+
==The Hosts File==
  
 
You might also need this. Every computer has a hosts file. This file can tell your computer what server to use when you request a specific domain.
 
You might also need this. Every computer has a hosts file. This file can tell your computer what server to use when you request a specific domain.
Line 108: Line 110:
  
 
Personally, I've started using xip.io, which will map to the IP address given in the URL. This way, you can setup a virtual host with a ServerName such as myproject.192.168.33.11.xip.io, and use http://myproject.192.168.33.11.xip.io in your browser to go to the server. Note that the IP address I used would be the address of your Vagrant server. This lets you avoid editing your hosts file!
 
Personally, I've started using xip.io, which will map to the IP address given in the URL. This way, you can setup a virtual host with a ServerName such as myproject.192.168.33.11.xip.io, and use http://myproject.192.168.33.11.xip.io in your browser to go to the server. Note that the IP address I used would be the address of your Vagrant server. This lets you avoid editing your hosts file!
More Resources
+
 
 +
==More Resources==
  
 
     Upgrading from Apache 2.2 to 2.4. Some servers still install 2.2, however some install the newer 2.4. If you find yourself suddenly using 2.4, know that it comes with some changes in configuration. The above article outlines those.
 
     Upgrading from Apache 2.2 to 2.4. Some servers still install 2.2, however some install the newer 2.4. If you find yourself suddenly using 2.4, know that it comes with some changes in configuration. The above article outlines those.
Line 114: Line 117:
  
 
If you need more information, check the documentation. Luckily, it's fairly easy to understand once you know the files to edit. Most comment setups for virtual hosts include name-based, in which you differentiate virtual hosts via ServerName. However you can also use IP addresses to differentiate.
 
If you need more information, check the documentation. Luckily, it's fairly easy to understand once you know the files to edit. Most comment setups for virtual hosts include name-based, in which you differentiate virtual hosts via ServerName. However you can also use IP addresses to differentiate.
 
Here are some examples of common setups!
 
 
Not using Ubuntu or Debian? Here are guides for CentOS, RedHat, FreeBSD and Arch.
 
 
© 2018 - Fideloper LLC
 
 
 
 
 
 
  
 
==Referensi==
 
==Referensi==
  
 
* https://serversforhackers.com/c/configuring-apache-virtual-hosts
 
* https://serversforhackers.com/c/configuring-apache-virtual-hosts

Revision as of 08:18, 9 October 2018

Sumber: https://serversforhackers.com/c/configuring-apache-virtual-hosts


Apache memungkinkan kita untuk menjalankan beberapa situs dalam sebuah server apache.

Di Ubuntu, setup virtual host bisa di operasikan secara default. File yang di tambahkan ke /etc/apache2/sites-enabled akan di baca.

Ubuntu menggunakan dua (2) directory untuk virtual host, yaitu:

  • /etc/apache2/sites-available
  • /etc/apache2/sites-enabled

Folder site-enabled berisi symlink ke site-available, dengan cara ini kita dapat mengkonfigurasi dengan aman di site-available jika di disable dengan cara menghilangkan symlink.

Cara Mengaktifkan Konfigurasi virtual host

Misalnya kita mempunyai konfigurasi virtual host (test.com.conf) di /etc/apache2/sites-available/test.com.conf yang belum di enable. Untuk mengaktifkannya cukup menggunakan,

$ sudo a2ensite test.com.conf  # membuat symlink dari site-enabled ke site-available
$ sudo service apache2 reload  # reload pache config agar host virtual yang baru jadi masuk

Untuk mendisable,

$ sudo a2dissite test.com.conf  #Remove symlink
$ sudo service apache2 reload

So, now we know how to enable or disable a virtual host. Now let's go over some useful configurations.

File Konfigurasi Virtual Host

Your best bet for a starting place is to copy Apache's default /etc/apache/sites-available/default. (Note that I like to make my files with the extension ".conf" - That's not necessary). I'm going to assume we'll make a server which will match the url http://myproject.192.168.33.10.xip.io.

This assumes my server's IP address is 192.168.33.10. Change yours as needed. I'm using [1] as it lets me skip needing to do any extra setup (like having to edit my computer's hosts file.

$ sudo cp /etc/apache2/sites-available/000-default.conf \
          /etc/apache2/sites-available/myproject.conf
Here's what's in there.
<VirtualHost *:80>
    # 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

    # 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>

Unlike Apache 2.2, Apache 2.4's default virtual host setup has less meat in there. We can add to that for our own default. Let's start here. Remove those unnecessary comments an get to where your new virtual host looks like this:

<VirtualHost *:80>
    ServerName myproject.192.168.33.10.xip.io 

    DocumentRoot /var/www/myproject/public  
    <Directory /var/www/myproject/public>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/myproject-error.log 

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/myproject-access.log combined 

</VirtualHost>

What does all this do?

   ServerName and ServerAlias: Let Apache know the domain to match to this virtual host by setting the ServerName. Optionally also use ServerAlias to tell apache to listen to other domains and point them to this virtual host as well, such as a "www" subdomain.
   DocumentRoot: Change to suit your needs. I often have a "public_html" or "public" directory which is the web root. Then I can encapsulate related files which stay behind the web-root within the sites directory. (site.com directory, with site.com/public_html directory as the web-root). This is how Laravel works by default.
   Options -Indexes:: -Indexes stops people from being able to go to a directory and see files listed in there. Instead they see a Forbidden error. This can stops users view all your files in your /images directory, for instance.
   AllowOverride: Set to "all" to allow .htaccess files in your virtual host (And sub-directories)
   ErrorLog, CustomLog: Create log files specifically for your domain, so they don't get mixed in with traffic / errors from other sites running on the server.

The Hosts File

You might also need this. Every computer has a hosts file. This file can tell your computer what server to use when you request a specific domain.

For example, if you set a virtual host for url myproject.local, your browser won't know what server to send that request to. However, if you also know your server's IP address is 192.168.33.10, then you can edit your hosts file and add the entry 192.168.33.10 myproject.local, which informs it where to look when that URL is used.

Here's how to edit the hosts file on mac and two methods for editing hosts file (as an administrator) on Windows.

Personally, I've started using xip.io, which will map to the IP address given in the URL. This way, you can setup a virtual host with a ServerName such as myproject.192.168.33.11.xip.io, and use http://myproject.192.168.33.11.xip.io in your browser to go to the server. Note that the IP address I used would be the address of your Vagrant server. This lets you avoid editing your hosts file!

More Resources

   Upgrading from Apache 2.2 to 2.4. Some servers still install 2.2, however some install the newer 2.4. If you find yourself suddenly using 2.4, know that it comes with some changes in configuration. The above article outlines those.
   My vhost tool script and the comment on usage, in both Python and Bash flavors. For Ubuntu specifically. This creates and enables an Apache virtual host for you.

If you need more information, check the documentation. Luckily, it's fairly easy to understand once you know the files to edit. Most comment setups for virtual hosts include name-based, in which you differentiate virtual hosts via ServerName. However you can also use IP addresses to differentiate.

Referensi