[update: 2020-05-20] There does seem to be a conflict with Let’s Encrypt certbot. You’ll need to manually run updates. I’ll update once I figure it out, how to do it more automated. Looks like possible race condition for the ghost, and then the SSL… but since you’re defining them by macro’s it’s not so bad.
steps seem to be:
- DNS to point to the server
- Create vhost only (not SSL yet), and ensure it works.
- Certbot certificate only
- Add Use VhostSSL $domain line.
- Renewals are certificates only…? <– untested
[Original Post] I have had to manage my share of vhosts, and it’s the same vhosts all the time. Maybe slight changes. They usually look something like this:
<VirtualHost *:80> ServerName domain.tld ServerAlias www.domain.tld DocumentRoot /var/www/project/public <Directory /var/www/project/public> AllowOverride All Order Allow,Deny Allow from All </Directory> ErrorLog /var/log/apache2/project_error.log CustomLog /var/log/apache2/project_access.log combined </VirtualHost>
But repeated for EVERY domain name on the server. There’s an easier way, since apache 2.4.5.
You define the template macro:
<Macro VhostMacro $domain> <VirtualHost *:80> ServerName $domain ServerAlias www.$domain DocumentRoot /var/www/$domain/public <Directory /var/www/$domain/public> AllowOverride All Order Allow,Deny Allow from All </Directory> ErrorLog /var/log/apache2/$domain_error.log CustomLog /var/log/apache2/$domain_access.log combined </VirtualHost> </Macro>
You call the macro:
Use VhostMacro lloydleung.com Use VhostMacro site2.tld Use VhostMacro something.com
You can extrapolate as much as you want.
Remember to restart/reload apache to load the new configs. Otherwise apache won’t know.