[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.
Leave a Reply