Updated on 25.5.2023

How to set up multiple WordPress sites with WordOps

Build a blazingly fast WordPress development server with UpCloud & WordOps.net in just a few minutes. WordOps is a powerful CLI tool forked from EasyEngine that lets you deploy fast and secured Nginx WordPress sites by using simple and easy-to-remember commands.

Setting up a cloud server

To get started you will need a new UpCloud server running Ubuntu 18.04 or higher. Log in to your UpCloud Control Panel and click Deploy server. For now, WordOps is only available on Ubuntu or Debian-based Linux distributions and is not supported on CentOS. If you are new to UpCloud, you can get started by signing up for a free trial.

Once you’ve deployed a new cloud server, log in using your SSH client.

Initial Ubuntu server setup

When deploying new cloud servers, it’s good to follow a common setup routine to get the server prepared. We recommend you follow the steps below to update and secure your cloud server before installing WordOps.

While logged in as the root user, update and upgrade your Ubuntu server. It’s important to keep your server up to date to avoid security vulnerabilities caused by outdated software.

apt update && apt upgrade -y

You should also install a UFW firewall which can be used to restrict incoming traffic to only the required ports; SSH, HTTP and HTTPS (ports 22, 80 and 443). This is optional but is highly recommended as it adds an extra layer of protection to your server. Alternatively, you may wish to check out UpCloud’s L3 firewall feature in your cloud server’s settings.

apt install ufw -y

If you installed UFW, add the following rules and then enable the firewall.

ufw allow ssh
ufw allow http
ufw allow https
ufw enable

Lastly, create a new user with sudo privileges. It’s good practice to use a non-root account for connecting to your cloud server and to disable password authentication for SSH altogether to prevent brute-forcing.

adduser new-user
usermod -aG sudo new-user

Login to your server with the new user in a new SSH session, or by using the command below.

su new-user

Setting up WordOps

With your cloud server prepared, you can now go ahead and install WordOps.

The installation process is extremely simple – requiring only one command. While logged in as a user with sudo privileges, run the following command to begin the installation.

wget -qO wo wops.cc && sudo bash wo

The script will install all required dependencies as well as WordOps itself.

While the installation completes, now would be a good time to set up a domain for your development server if you haven’t already. This will allow you to use subdomains for each WordPress site you create.

When the installation process finishes, you’ll be prompted to Enter a name and email address.

Welcome to WordOps install/update script v3.13.2

Installing wo dependencies      [OK]
Installing WordOps      [OK]
Running post-install steps      [OK]
WordOps (wo) require an username & and an email address to configure Git (used to save server configurations)
Your informations will ONLY be stored locally
Enter your name: Sam
Enter your email: [email protected]
Synchronizing wo database, please wait...
WordOps (wo) installed successfully

To enable bash-completion, just use the command:
bash -l

To install WordOps recommended stacks, you can use the command:
wo stack install

To create a first WordPress site, you can use the command:
wo site create site.tld --wp

WordOps Documentation : https://docs.wordops.net
WordOps Community Forum : https://community.wordops.net
WordOps Community Chat : https://chat.wordops.net

Give WordOps a GitHub star : https://github.com/WordOps/WordOps/

Configuring domain name records

To be able to reach the WordPress sites running on your WordOps server, you will need to have configured a domain name A record pointing to your cloud server. The actual process of creating domain name records varies from one provider to another, but you can find general instructions for the topic from our guide on how to manage DNS records.

With a valid domain name, you can use subdomains to create as many websites with WordOps as you want.

Creating WordPress sites

With WordOps installed, you can begin to create websites.

If you just need a basic installation of WordPress, you can create a site with the following command. Remember to replace example.com with your own domain or subdomain.

sudo wo site create example.com --wp

However, with WordOps you can also set up a WordPress site with a free Let’s Encrypt SSL certificate and Nginx FastCGI Cache.

Note that a valid domain name is required for Let’s Encrypt to be able to obtain SSL certificates for your website. Therefore, you need to ensure your DNS records correctly point to your server.

Replace example.com with your domain or subdomain name.

sudo wo site update example.com --wpfc -le

When completed, you will see an output similar to the one below.

Start : wo-kernel [OK]
Adding repository for MySQL, please wait...
Adding repository for NGINX, please wait...
Adding repository for PHP, please wait...
Updating apt-cache              [OK]
Installing APT packages         [OK]
Applying Nginx configuration templates
Testing Nginx configuration     [OK]
Restarting Nginx                [OK]
Testing Nginx configuration     [OK]
Restarting Nginx                [OK]
Configuring php7.3-fpm
Restarting php7.3-fpm           [OK]
Tuning MySQL configuration      [OK]
Restarting mysql                [OK]
Running pre-update checks       [OK]
Setting up NGINX configuration  [Done]
Setting up webroot              [Done]
Downloading WordPress           [Done]
Setting up database             [Done]
Configuring WordPress           [OK]
Installing WordPress            [OK]
Installing plugin nginx-helper  [OK]
Setting plugin nginx-helper     [OK]
Testing Nginx configuration     [OK]
Reloading Nginx                 [OK]
HTTP Auth User Name: WordOps
HTTP Auth Password : t3shyrdQhkOQhtcM6QTbDPeB
WordOps backend is available on https://95.111.199.103:22222 or https://607d-24ff-feef-1353.v6.sg-sin1.upcloud.host:22222
WordPress admin user : Sam
WordPress admin password : FI5shPXMrvGuYnz3yVHxW8Qf
Nginx-Helper configuration :    http://example.com/wp-admin/options-general.php?page=nginx
Successfully created site http://example.com
Certificate type : domain
Validation mode : Webroot challenge
Issuing SSL cert with acme.sh   [OK]
Deploying SSL cert              [OK]
Securing WordOps backend with current cert
Adding HTTPS redirection        [OK]
Updating site url with https    [OK]
Testing Nginx configuration     [OK]
Reloading Nginx                 [OK]
Congratulations! Successfully Configured SSL on https://example.com

Enter the site’s URL into your web browser, and you should see a freshly installed WordPress site with HTTPS enabled.

You can log in to your WordPress admin panel by going to https://example.com/wp-admin/ and using the WordPress admin credentials that were generated in the previous output.

You can repeat the WordPress site deployment as many times as you want to install multiple websites on the same cloud server.

Managing your WordPress sites

WordOps has a host of features and can be used to configure WordPress sites of all types. However, listing all the available features is beyond the scope of this tutorial. You can refer to the official WordOps documentation for the full set of features and how to use them. Below are a handful of commands that you may find useful when first managing your server and websites.

Delete a site

In case you no longer need your WordPress site, or perhaps simply want to start over again, you can use the site delete command in WordOps to completely remove a website including its files and database.

sudo wo site delete example.com

List all available sites

At some point, you may have several websites running on your server. To list them all you can use the site list command.

sudo wo site list

Show information about a site

The site info command lets you view general information about your websites such as the cache backend, PHP version and the user database credentials.

sudo wo site info example.com

Show a site’s Nginx configuration

The site show subcommand in WordOps lets you view your site’s Nginx configuration.

sudo wo site show example.com

The commands listed above should be sufficient to get you up and running initially, but like mentioned above, WordOps can do so much more. For a full list of all the available features and commands, you can refer to the official WordOps documentation

Samir Haliru

  1. Hi,
    A couple of corrections for your article.
    1. WordOps does not use Docker. It is a fork of EasyEngine V3. It is only EasyEngine V4 that uses Docker thus WordOps does not.
    2. At the moment running more than one WordPress site through WordOps on the same server is not secure. They share the same php process so sites can access the files of other sites. Separate php processes for each site (part of what is required to make it secure) is on the road map , but is not yet implemented.

  2. Janne Ruostemaa

    Hi Mike, thanks for the corrections. We’ve updated the text to fix the mistaken mention of Docker. As for the security issue, it is indeed an important caveat for running multiple WordPress sites on WordOps at this time. In the meanwhile, WordOps is still a great platform for WordPress development or running a few trusted sites. Naturally, keeping each site secure by itself then becomes ever more important but that should be the bare minimum for any WordPress website.

  3. How many technologies are required to learn these installation manually on cloud like upcloud.

  4. Janne Ruostemaa

    Hi Rohit, thanks for the question. With WordOps, most of the undelying technologies are managed through it. Of course, having at least a rudimentary understanding of the workings of web servers, databases and WordPress itself will help if you ever need to troubleshoot anything, but not necessary to get started. Often the best way to learn in by doing.

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top