Setting Up Virtual Hosts
The usage of virtual hosts in Apache Configuration is the practice of running more than one web site (that targets local resources) on a single machine.
Virtual hosts are IP-based, meaning that you have a different IP address for every web site, or "name-based", meaning that you have multiple names running on each IP address. This practice using Apache2 on OpenSuse comes in handy when you want to simulate a production environment (however working in dev environment) locally accessing to your project by a normal URL in the browser.
To setup a custom virtual host, we need to follow these steps:
1. Check if virtual hosts are allowed
By default, Apache2 uses the /etc/apache2/vhosts.d/*.conf
files (the location of the virtual hosts, one configuration file per virtual host in /etc/apache2/vhosts.d/), therefore per default we do not need to indicate that this file will be included during the runtime of Apache.
See: /etc/apache2/httpd.conf:
cat /etc/apache2/httpd.conf
See uncommented?
IncludeOptional /etc/apache2/vhosts.d/*.conf
2. Create a custom domain for the host files on your system
2.1. Create folder to host your files
You must be root to install and configure Apache.
Change to user root
sudo su
Once you have installed and checked the status of Apache, go to its Web-root directory and create a new directory as mentioned below.
cd /srv/www/
mkdir myproject
cd /srv/www/myproject
mkdir htdocs
Create a new file in the above mentioned directory by using the following command.
echo -e '<html>\n<html>\n\t<body>\n\t\t<h1>Welcome World!</h1>\n\t</body>\n</html>' > /srv/www/myproject/htdocs/index.html
2.2. Link DocumentRoot to ServerName respectively virtual host
Create a new virtualhost configuration file in the below mentioned directory and configure it as follows.
/etc/apache2/conf.d/vhost.conf
sudo su
echo -e 'DocumentRoot "/srv/www/myproject"\nServerName "myproject"' > /etc/apache2/conf.d/vhost.conf
Did it work?
cat /etc/apache2/conf.d/vhost.conf
You should see
DocumentRoot "/srv/www/htdocs/myproject" ServerName "myproject.example.com"
2.3. Edit configuration file
https://de.opensuse.org/Apache
sudo cp /etc/apache2/vhosts.d/vhost.template /etc/apache2/vhosts.d/myproject_vhost.conf
Example configuration
<VirtualHost 127.0.0.3:80> ServerName myproject ServerAdmin webmaster@localhost DocumentRoot /srv/www/myproject/htdocs <Directory /srv/www/myproject/htdocs> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> ErrorLog /var/log/apache2/error_log LogLevel warn CustomLog /var/log/apache2/access_log combined ServerSignature On </VirtualHost>
2.4. 1.7. What is where?
/etc/apache2/httpd.conf.local ... adding it in your own file (/etc/apache2/httpd.conf.local) putting its name into APACHE_CONF_INCLUDE_FILES in /etc/sysconfig/apache2 -- this will make system updates easier
/etc/hosts
| |
/etc/apache2/httpd.conf | The main Apache server configuration file. Avoid changing this file. It primarily contains include statements and global settings. |
/etc/apache2/global.conf | General configuration of the main Web server process, such as the access path, error logs, or the level of logging. |
/etc/apache2/default-server.conf | Global configuration for all virtual hosts with reasonable defaults. Instead of changing the values, overwrite them with a virtual host configuration. |
/etc/apache2/conf.d/vhost.conf | |
/etc/apache2/vhosts.d/*.conf | Your virtual host configuration should be located here. The directory contains template files for virtual hosts with and without SSL. Every file in this directory ending with .conf is automatically included in the Apache configuration. |
/opt/lampp/etc/httpd.conf
# Virtual hosts #Include etc/extra/httpd-vhosts.conf
Proceed to modify the line uncommenting that line:
# Virtual hosts Include etc/extra/httpd-vhosts.conf
3. Create a custom domain in the hosts file of your system
You need to create a custom domain where our apache virtual host will point to. This domain will be normally an ip (127.0.0.xx based) and a custom name.
In this example, our IP will be 127.0.0.3
and the domain myproject
. So finally, our hosts file will look like:
/etc/hosts
127.0.0.1 localhost 127.0.0.3 myproject #don't touch other existent values # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
4. Add the virtual host path
/opt/lampp/etc/extra/httpd-vhosts.conf
<VirtualHost 127.0.0.3:80> DocumentRoot "/opt/lampp/htdocs/my-project" DirectoryIndex index.php <Directory "/opt/lampp/htdocs/my-project"> Options All AllowOverride All Require all granted </Directory> </VirtualHost>
5. Test your virtual host
Start apache and mysql (entire XAMPP).
Navigate in your browser to http://myproject/
or http://127.0.0.3/
.
6. Weblinks
https://doc.opensuse.org/docum[...]nce/cha-apache2.html
https://doc.opensuse.org/documentation/leap/reference/html/book-reference/cha-apache2.html#sec-apache2-configuration-manually-configfiles-etc-apache2