Wordpress multisite runs great on Digital Ocean’s One Click Wordpress install setup. However problems happen when trying to add Letsencrypt to the installation for each domain the multisite uses. The typical multisite setup uses subdirectories for each subsite. This is done by wordpress and works fine with stock virtual host settings created by the One Click install from Digital Ocean. However, certbot doesn’t like this and expects a virtualhost to be declared/setup in apache for each domain in your Wordpress Multisite site list. After googling, all examples I see don’t use the same language/code examples in the sites-available as Digital Ocean’s one click setup uses. Here’s what Digital Ocean creates with the setup:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory /var/www/html/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =YourDomainNameHere.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
The
RewriteCond %{SERVER_NAME} =YourDomainNameHere.com
is confusing as tutorials on virtualhosts in Ubuntu 16.04 doesn’t cover this code line.
So… for this situation… which is not currently covered in the Letsencrypt or Wordpress tutorials on Digital Ocean… what is the proper way to add in the domains in apache ALL for the same installation folder ( /var/www/html
) so that Letsencrypt Certbot will install additional domain certificates properly?
Help would be most appreciated. thank you.
P.S. Expanding a single certificate is also not recommended for unrelated domains from what I’ve gathered in tutorials.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Accepted Answer
Answer given at the letsencrypt support forums
https://community.letsencrypt.org/t/setting-up-letsencrypt-for-a-single-wordpress-multisite-installation-with-many-domains/46511
Basically, each domain needs it’s OWN .conf file as well as each file having the Servername declared. Then after system linking into sites-enabled and an apache2 restart, certbot will install the additional certificates properly. See the thread at letsencrypt for more details.
Hi there,
I just came across this question.
Indeed, what I would usually do in such a case is to create separate virtual hosts for each website.
So let’s have the following scenario as an example:
/var/www/html
example1.com
and example2.com
.So rather than using only the default catch-all Apache virtual host (Vhost for short), you could create 3 separate virtual hosts for each domain name:
example1.com
:<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName example1.com
ServerAlias www.example1.com
<Directory /var/www/html/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
example2.com
:<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName example2.com
ServerAlias www.example2.com
<Directory /var/www/html/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
That way you could issue separate SSL certificates for each domain name, and also set up HTTP to HTTPS redirects without the domain names affecting each other.
Note how both Vhosts have the same DocumentRoot
set to /var/www/html
so that they could both be pointing to the same WordPress multisite installation.
For more information on Apache virtual hosts, make sure to check out this tutorial here:
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-18-04
Once you have the two separate virtual hosts you can issue Let’s Encrypt certificates using certbot
as normal. You can follow the steps from this tutorial here on how to do that:
In case that you have more domain names, just follow the same procedure by adding separate Vhosts for each domain name.
Regards, Bobby
This comment has been deleted
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.