Best way Multiple WordPress on Single Server Bitnami NGINX 2021
If you handle more than one WordPress blog and want to install all these multiple WordPress websites or blogs on a single Virtual Machine (VM) then this article is for you. This tutorial is for WordPress with NGINX and SSL Certified by Bitnami and Automattic on the Google Cloud. You can learn how you can install the WordPress NGINX bitnami stack here.

Please note that this will guide you on how you can install multiple different WordPress not multisite. This bitnami stack already running a WordPress on this VM, now we’re adding the second WordPress. You can find the installation of the 1st WordPress application here. This article guides how you can install a second WordPress application on the virtual machine.
Page Contents
Installation of Multiple WordPress using Single Virtual Machine VM Bitnami NGINX
After the successful installation of WordPress NGINX bitnami stack, you can follow this step of adding multiple WordPress application in your bitnami stack. But the question may arise that
Why should one install multiple WordPress on a single VM?
You might already know the answer as you’re already here. These are some major point could be the reason.
- Handling Multiple VM could be tough.
- If you’ve already a virtual machine why create so many? It would be like you have to use a different browser on a different computer.
- From the above line, you can understand usage cost could be very high for different VM. We can save our hard-earned money using a single virtual machine,
- This may allow you to choose a strong dedicated virtual machine instead of multiple small shared machines.
- Drawback: Could be that you can’t install one WordPress in India and one in the US region. But both WordPress will work fine globally.
Add Database for the Second WordPress using PHPMyAdmin.
In the bitnami stack, PHPMyAdmin is very secure and you can’t access it directly by visiting a URL. Learn how to connect PHPMyAdmin in the bitnami stack.

Add MultiPress WordPress create files in the VM.
First of all, you’ve to open SSH Terminal, If you don’t know how to do it please refer to this tutorial of SSH. And you’ve to download the WordPress application to the Bitnami application folder.
To do that, you’ve to access SSH with root permission,
sudo -i
Download New WordPress Application to the application folder
First we’ll go to the application folder, execute the command line.
cd /opt/bitnami/apps/
Now Create a New folder in this directory, we are creating a new folder with the name “techaak”. You can choose any name but in the following command, you’ve to change techaak with your folder name.
Download Wordpress zip and extract
Execute the followings lines one by one.
mkdir techaak
cd techaak
wget http://wordpress.org/latest.tar.gz
tar xfz latest.tar.gz
mv wordpress htdocs
Now we downloaded the latest WordPress application to the virtual machine. To run multiple WordPress we’ve to connect this WordPress to the present environment of the single virtual machine. To do that let’s create configuration files.
Configuration files for the New WordPress Application.
We’ll create files according to the bitnami environment. To do that executes these command one by one
mkdir conf
cd conf
nano nginx-app.conf
Now a blank window or new file window is open-up, you’ve to paste the following lines in that
index index.php index.html index.htm;
if ($request_uri !~ "^/phpmyadmin.*$")
{
set $test A;
}
if ($request_uri !~ "^/bitnami.*$")
{
set $test "${test}B";
}
if (!-e $request_filename)
{
set $test "${test}C";
}
if ($test = ABC) {
rewrite ^/(.+)$ /index.php?q=$1 last;
}
# Deny access to any files with a .php extension in the uploads directory
location ~* /(?:uploads|files)/.*\.php$ {
deny all;
}
# Disable logging for not found files and access log for the favicon and robots
# Deny all attempts to access hidden files such as .htaccess or .htpasswd.
location ~ /\. {
deny all;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_read_timeout 300;
fastcgi_pass unix:/opt/bitnami/php/var/run/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
Press ctrl+x(windows) or cmd+x(mac), Then Y to confirm the changes and then Press Enter.
Now We’ll create second configuration file.
nano nginx-prefix.conf
In the new blank window paste these lines.
location /techaak {
alias "/opt/bitnami/apps/techaak/htdocs";
include "/opt/bitnami/apps/techaak/conf/nginx-app.conf";
}
Now save this file by pressing Ctrl+X, then Y and then enter. Now we’ll create the host file. Execute the following command.
nano nginx-vhosts.conf
A new blank window will open up, paste the following code in that, replace it with your values(red letters).
server {
listen 80;
root "/opt/bitnami/apps/techaak/htdocs";
server_name example.com www.example.com;
include "/opt/bitnami/apps/wordpress/conf/nginx-app.conf";
}
server {
listen 443 ssl;
root "/opt/bitnami/apps/techaak/htdocs";
server_name example.com www.example.com;
ssl_certificate /opt/bitnami/nginx/conf/server.crt;
ssl_certificate_key /opt/bitnami/nginx/conf/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
#change this folder name
include "/opt/bitnami/apps/techaak/conf/nginx-app.conf";
}
Save the changes by pressing ctrl+x, then Y and then enter.
Now all the configuration of your wordpress environment is done but not of bitnami nginx stack.
Connect the configuration with bitnami stack
Now you’ve make some changes in the bitnami stack so here, execute the following command to do that.
cd /opt/bitnami/nginx/conf/bitnami
nano bitnami-apps-prefix.conf
now a new SSH window will open up, add the following lines to that
include "/opt/bitnami/apps/techaak/conf/nginx-prefix.conf";
Save the change by pressing Ctrl+X, then Y and then enter. your changes will save.
Now connect the host file to the main bitnami stack.
execute the following command now.
nano bitnami-apps-vhosts.conf
include "/opt/bitnami/apps/techaak/conf/nginx-vhosts.conf";
Save the file using ctrl+x, then Y and then press enter.
Now all done for the Multiple WordPress on Single Virtual Machine. Now new WordPress is connected with the existing bitnami WordPress application.
Check that all settings are correct by executing
nginx -t
If it responds as ok, then fine, or in case of any error then check all steps you performed.
Set the default public permissions to new wordpress application.
sudo chown bitnami:daemon -R /opt/bitnami/apps/techaak/htdocs/*
sudo chmod -R g+w /opt/bitnami/apps/techaak/htdocs*
Now restart the nginx, execute the following command.
sudo /opt/bitnami/ctlscript.sh restart nginx
Update DNS of New WordPress
Visit the domain name provider’s account and point the IP of the single virtual machine to your website. Check Domain Name Configuration.
Access the New WordPress
You can now access your new wordpress website(offcourse after DNS update).
SSL certificate configuration of new WordPress Application
When you create multiple wordpress in Single Virtual Machine you need to setup separate SSL certificate. You’ve to provide path of this SSL certificate in nginx-vhost.conf instead of bitnami.
Generate New SSL certificate, execute the command one by one.
sudo /opt/bitnami/ctlscript.sh stop nginx
sudo /opt/bitnami/letsencrypt/lego --tls --email="admin@tezblog.com " --domains="example.com" --domains="www.example.com" --path="/opt/bitnami/letsencrypt" run
sudo /opt/bitnami/ctlscript.sh start nginx
please change email address and domain name with your own values.
Now point the new SSL certificate to the latest WordPress install. Execute the following command.
nano /opt/bitnami/apps/techaak/conf/nginx-vhosts.conf
Now add the new certificates and comment out old, you new nginx-vhosts.conf file would look like. You can get detailed information in this article.
server {
listen 80;
root "/opt/bitnami/apps/techaak/htdocs";
server_name example.com www.example.com;
include "/opt/bitnami/apps/wordpress/conf/nginx-app.conf";
}
server {
listen 443 ssl;
root "/opt/bitnami/apps/techaak/htdocs";
server_name example.com www.example.com;
#no need to change SSL certificate path.
# ssl_certificate "/opt/bitnami/apps/wordpress/conf/certs/server.crt";
# ssl_certificate_key "/opt/bitnami/apps/wordpress/conf/certs/server.key";
ssl_certificate
#new certificate below the line.
"/opt/bitnami/letsencrypt/certificates/iasrank.in.crt";
ssl_certificate_key "/opt/bitnami/letsencrypt/certificates/iasrank.in.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
#change this folder name
include "/opt/bitnami/apps/techaak/conf/nginx-app.conf";
}
Now test the nginx configuration, execute
nginx -t
Now after successful verification, reload the new changes we made into the application.
nginx -s reload
Done your new WordPress application can be access through the URL you provided.