Ubuntu – Recommended workflows for Apache virtual hosts

Apache2virtualhostwebserver

I do a lot of local web development work on my Ubuntu machine, and I'm constantly setting up virtual hosts in Apache. I don't need to do hard core server management, but I am getting tired of the repetitive process of manually adding config directives to files in /etc/apache2/sites-available/ and then updating the /etc/hosts file.

Is there a more efficient or more automated way to do all this that I'm missing? Maybe something like rapache but that's actually working?

Best Answer

When I had to do shuch things I proceed creating a VirtualHost whit a wildcard name:

  1. Choose a fancy domain name like 'example.com' for localhost
  2. Place it in /etc/hosts file as 127.0.0.1 *.example.com
  3. Install and activate mod_rewrite
  4. create a wildcard VirtualHost in apache sites directory:

    <VirtualHost 127.0.0.1:80>
      DocumentRoot /default/path
      ServerName example.com
      ServerAlias *.example.com
      RewriteEngine On
      UseCanonicalName Off
    
      RewriteCond %{HTTP_HOST} ^(.*).example.com
      RewriteCond /srv/%1/ -d
      RewriteRule ^(.+)   %{SERVER_NAME}$1 [C]
      RewriteRule ^([^.]+)\.example\.com/(.*) /srv/$1/$2 [L]
    </VirtualHost>
    
  5. Now you can place any folder under /srv/ and it will be the root for <foldername>.example.com

This is borrowed from memory, it could need some more minor adjustments and it may conflict with any other rewrite rules each webapp would have. But it fits me for my webapp testing needs.

Related Question