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.
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://22.214.171.124: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