If I create one site, I can access it with http://localhost ...
But if I create multiple virtual sites, with apache, on the same computer, http://localhost won't work.
How can I access it? (on the same computer, aka localhost)?
If I create one site, I can access it with http://localhost ...
But if I create multiple virtual sites, with apache, on the same computer, http://localhost won't work.
How can I access it? (on the same computer, aka localhost)?
To create a virtual site, try out the following commands; just replace "newsite" with the name of your site:
NOTE
- Tested on Ubuntu 20.04, using Apache 2.4.41 and Firefox 95.0.
- All commands were run from the home (
~/
) directory.- You must create your own
index.html
file in the home directory.
# Add the new site to the default Apache directory sudo mkdir --parents /var/www/newsite # Create your web page and place it in the directory: sudo cp ~/index.html /var/www/newsite/index.html sudo chmod 755 /var/www/newsite/index.html # Copy and modify a virtual host configuration file sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/newsite.conf sudo sed --in-place "s/webmaster@localhost/webmaster@newsite/g" /etc/apache2/sites-available/newsite.conf sudo sed --in-place "s/DocumentRoot \/var\/www\/html/DocumentRoot \/var\/www\/newsite/g" /etc/apache2/sites-available/newsite.conf sudo sed --in-place "/webmaster@newsite/ a ServerName newsite" /etc/apache2/sites-available/newsite.conf # Enable the new virtual host file sudo a2ensite newsite.conf # Modify hosts file sudo sed --in-place "\$a127\.0\.0\.1 newsite" /etc/hosts # Restart Apache sudo systemctl reload apache2 # Open the website xdg-open http://newsite
Output:
You can also turn this into a shell script.
You can assign multiple aliases for 127.0.0.1 in /etc/hosts
127.0.0.1 localhost site1 site2 site3
Configure appropriate VirtualHosts
site1, site2, site3 in Apache configs and access them as http://site1/
, http://site2/
, http://site3/
When you create virtual sites, you will use a directive like ServerName inside the VirtualHost container, to distinguish that virtual site. Something like: <VirtualHost *:80> ServerName my.best.server.biz ....... The DNS name of my.best.server.biz should resolve to the ip of your apache server, which can be 127.0.0.1 in your case. Most likely for this you will add entries in your hosts file, like pointed in the previous answer.