This tutorial shows you how to install WordPress with Webinoly (Enable Nginx FastCGI Cache)
The VPS used in this article: Vultr (1GB RAM, 1 vCore)
Get $100 of free Vultr credits if you sign up through this link!
Demo domain: blogwp.ovh
Please resolve the domain name to an IP address in advance
Please replace blogwp.ovh with your own domain name.
Webinoly is a powerful set of commands for doing just about anything you could wish. it officially only supports the latest LTS version of Ubuntu (20.04 and 18.04).
Webinoly provides a set of tools and commands that facilitate the web server administration.
Webinoly features:
- Free SSL certificates for your sites with Let’s Encrypt and automatic server configuration.
- HTTP/2 increase the speed of serving your content.
- Always install the latest stable version of PHP (v7.4) and have the option to install earlier versions (7.2 and 7.3) if needed.
- FastCGI Cache and Redis Object Cache for your WordPress site.
- Install WordPress in any subfolder, Clone a WordPress site and support for external databases.
- Get an A+ grade on Qualys (SSL Labs) Test.
- Log viewer in real time.
- Automatically optimize your server to get the most out of the available resources.
Can I use Webinoly in my shared hosting plan?
No, shared hosting plans do not allow access with sudo privileges required to install and make adjustments to the operating system. Typically, you can use Self-Managed VPS or Dedicated server with Webinoly.
The following part is the installation steps
1、Quick Setup, install LEMP Stack
LEMP stands for Linux + Nginx + MariaDB (MySQL) + PHP. LEMP is the most complete and necessary configuration for WordPress sites.
wget -qO weby qrok.es/wy && sudo bash weby 3
MySQL has been installed successfully!
phpMyAdmin has been installed successfully!
****************************************************************************
****** INSTALLATION HAS FINISHED SUCCESSFULLY ******
****************************************************************************
******** Save your DB access password in a secure place: ********
****** root: ntzpsJBR0h3xoVsP admin: TkCuyUIdnXfzaj60 ******
****************************************************************************
****************************************************************************
************************ D O N A T I O N S *************************
*** If you like Webinoly, buy me a coffee or a beer to show support. ***
****************************************************************************
************* Bitcoin: 1E3Ybo5UcvaAr1MoK4nBnMRFFY9aEMiku3 **********
******* GitHub Sponsors: https://github.com/sponsors/QROkes **********
*************** PayPal: https://www.paypal.me/qrokes ****************
****************************************************************************
*** Your regular donations is what keep this project moving forward. ***
****************************************************************************
2、Install WordPress, enable FastCGI Cache + Redis Object Cache
sudo site blogwp.ovh -wp -cache=on
[email protected]:~# sudo site blogwp.ovh -wp -cache=on
Downloading WordPress...
Nginx Helper Plugin has been installed!
Please, activate this plugin for a better experience with FastCgi Cache.
** IMPORTANT - Plugin Settings **
- The “Caching Method” should be set to “Nginx FastCgi Cache”.
- Support for purge/url method is a premium feature only included in NGINX Plus (not-free) and we recommend not to trust in solutions or tools that use third-party NGINX modules to offer this feature.
- The Purge Method should be set to “Delete local server cache file”.
Redis Object Cache Plugin has been installed!
Please, activate this plugin for a better experience with WordPress Object Cache.
** IMPORTANT - Plugin Settings **
- Go to “Menu > Settings > Redis” and be sure that Object Cache is enabled.
WordPress Cache successfully enabled!
Site blogwp.ovh has been successfully created!
Opcache has been enabled
Disable FastCgi Cache:
sudo site blogwp.ovh -cache=off
Enable FastCgi Cache for an existant site
sudo site blogwp.ovh -cache=on
Normally the NGINX FastCGI cache is configured by Webinoly to expire every 30 days, this is a recommended value for websites with very low traffic.
To modify the configuration and values of FastCGI in Webinoly we use the following command:
sudo webinoly -config-cache
such as:
sudo webinoly -config-cache=[1h, 20m, 10m]
This means We will configure times of 1 hour in cache, 20 minutes of inactivity and 10 minutes for redirects. This would be a configuration that could work very well in very high traffic sites.
To clean/purge the cache you can do it from the “Nginx Helper” plugin or from the command line.
sudo webinoly -clear-cache=fastcgi
Testing Webinoly Nginx fastcgi cache:
curl -Ik http://blogwp.ovh/sample-page/
[email protected]:~# curl -Ik http://blogwp.ovh/sample-page/
HTTP/1.1 302 Found
Server: nginx
Date: Fri, 16 Oct 2020 11:58:55 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
X-Redirect-By: WordPress
Location: http://blogwp.ovh/wp-admin/install.php
X-Cache-Status: MISS
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: public, no-cache
Referrer-Policy: no-referrer-when-downgrade
On the first request, Nginx returns X-Cache-Status: MISS
[email protected]:~# curl -Ik http://blogwp.ovh/sample-page/
HTTP/1.1 302 Found
Server: nginx
Date: Fri, 16 Oct 2020 11:59:36 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
X-Redirect-By: WordPress
Location: http://blogwp.ovh/wp-admin/install.php
X-Cache-Status: HIT
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: public, no-cache
Referrer-Policy: no-referrer-when-downgrade
On the next request, Nginx returns X-Cache-Status: HIT
Visit the domain name at this time, you will find that the page is protected by HTTP authentication method, the next step will create an HTTP-Auth user.

3、HTTP Authentication
The “HttpAuth” command allows us to manage users with permission to access pages protected by the HTTP authentication method.
Create user with limited permissions to access only one specific domain:
sudo httpauth blogwp.ovh -add
[email protected]:~# sudo httpauth blogwp.ovh -add
HTTP-Auth User: test3
HTTP-Auth Password: test12345
User 'test3' has been added successfully!
Please replace test3, test12345 with your own HTTP-Auth User and HTTP-Auth Password.
4、Complete the WordPress installation
Visit domain name blogwp.ovh again, HTTP authentication window will pop up , fill in the username test3 and password test12345. Then you will go directly to the wordpress installation interface and set the Username and Password:


5、Clear/Purge Cache
Clear FastCGI cache:
sudo webinoly -clear-cache=fastcgi
Clear redis cache:
sudo webinoly -clear-cache=redis
Clear memcached cache:
sudo webinoly -clear-cache=memcached
Clear opcache cache:
sudo webinoly -clear-cache=opcache
Clear all cache:
sudo webinoly -clear-cache=all
6、Access to server tools, default port is 22222
http://104.238.145.42:22222
HTTP authentication window will pop up , fill in the username test3 and password test12345
Whitelist IP, to add an IP to the secure list and don’t be asked for your credentials every time HTTP Authentication is required.
sudo httpauth -whitelist=51.xx.xxx.xxx
To list all the whitelisted IP’s
sudo httpauth -whitelist -list
Remove a previously added IP:
sudo httpauth -whitelist -purge
For more security, the default port should be changed.
sudo webinoly -tools-port=39516
[email protected]:~# sudo webinoly -tools-port=39516
Port 39516 has been enabled to access all your Tools!
Now you can use the following link to access server tools:
http://104.238.145.42:39516
It is also possible to define an existing domain for “only access” to these tools.
sudo webinoly -tools-site=blogwp.ovh
[email protected]:~# sudo webinoly -tools-site=blogwp.ovh
It's highly recommended having an SSL Cert enabled on this site.
Domain blogwp.ovh:39516 was successfully assigned to access your server tools!
Any request from another domain will be blocked. Now you can access server tools using: blogwp.ovh:39516
Disable Authentication in WordPress Login:
sudo httpauth blogwp.ovh -wp-admin=off
Enable Authentication in WordPress Login:
sudo httpauth blogwp.ovh -wp-admin=on
To delete a user use the following command:
sudo httpauth -delete
Remove user from a specific domain:
sudo httpauth blogwp.ovh -delete
Displays all users created with access to HTTP Authentication:
sudo httpauth -list
7、Install, Disable, Renew and Remove SSL
7.1: Install SSL
1) Install SSL Certificates with Let’s Encrypt
sudo site blogwp.ovh -ssl=on
[email protected]:~# sudo site blogwp.ovh -ssl=on
*************************************************************************************************
** Please, be careful with the number of intents or certificates you try to get. **
** Let’s Encrypt provides rate limits to ensure fair usage by as many people as possible. **
** **
** If you are getting errors or having issues when trying to get a new certificate **
** read about the Let's Encrypt rate limit - https://letsencrypt.org/docs/rate-limits/ **
*************************************************************************************************
Please, be sure that blogwp.ovh and www.blogwp.ovh are both currently pointing (DNS) to this server.
Please, enter an email to register your new certificate: [email protected]
Email address has been successfuly validated and saved!
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for blogwp.ovh
http-01 challenge for www.blogwp.ovh
Using the webroot path /var/www/blogwp.ovh/htdocs for all unmatched domains.
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/blogwp.ovh/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/blogwp.ovh/privkey.pem
Your cert will expire on 2021-01-15. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Tools-Site is already set to blogwp.ovh
SSL have been successfully enabled for your site - blogwp.ovh
HTTP/2 is also enabled
2) Install Wildcard Certificates with Let’s Encrypt
When we need a single certificate to cover all subdomains (* .blogwp.ovh). This is the kind of certificate we need in WordPress Multisite installations in sub-domain configuration.
sudo site blogwp.ovh -ssl=on -wildcard
During the creation of the Wildcard certificate, it will be necessary to create a DNS record to verify the ownership of the domain.
Verify that if the installed SSL certificate is correct:

7.2: Disable SSL on a site:
sudo site blogwp.ovh -ssl=off
7.3: Renewing certificates:
Although Webinoly has a redundant system for the automatic renewal process, we have an option to force it.
sudo site -ssl=renew
This command attempts to renew any previously-obtained certificates that expire in less than 30 days.
We can also force the renewal of all of the certs:
sudo site -ssl=force-renewal-all
We can also force the renewal of a specific certificate:
sudo site blogwp.ovh -ssl=force-renewal
7.4: Remove SSL
sudo site blogwp.ovh -delete=force -revoke=on
8、Allow SFTP access to www-data user, Very useful for uploading files through SFTP
sudo webinoly -login-www-data=on
[email protected]:~# sudo webinoly -login-www-data=on
SFTP access for www-data user has been successfuly enabled!
9、Forbid access to your host IP address (when a request that does not correspond to the website is sent, nothing will be returned)
sudo webinoly -default-site=blackhole
[email protected]:~# sudo webinoly -default-site=blackhole
Blackhole Nginx site was successfully assigned as default site!
Before

After

10、Block and deny IP address
If you want to block access to a specific IP or block of addresses, for example, a bot, service or unwanted visitor.
sudo webinoly -blockip=231.xxx.xx.xxx
list all the IP’s that have been blocked:
sudo webinoly -blockip -list
Remove IP from the list:
sudo webinoly -blockip -purge
11、Force WWW or non-WWW in a site
By default, Webinoly configures your site to accept both requests in your domain, that is, blogwp.ovh and www.blogwp.ovh will be both valid. You can force the use and redirect the requests to any of your preferences.
sudo site blogwp.ovh -force-redirect=root
[email protected]:~# sudo site blogwp.ovh -force-redirect=root
Force-Redirection to non-WWW has been successfully enabled!
12、Check Installation information, such as VPS operating system, ram, disk usage, nginx, php, mysql
sudo webinoly -info
[email protected]:~# sudo webinoly -info
[SYSTEM]
Operating System: Linux version 5.4.0-48-generic ([email protected]) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #52-Ubuntu SMP Thu Sep 10 10:58:49 UTC 2020
Description: Ubuntu 20.04.1 LTS
Codename: focal
Cores: 1
RAM: 1Gb
SWAP: 1Gb
File descriptors: 294300
[Disk Usage]
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 24G 4.4G 18G 20% /
[NGINX]
nginx branch: stable
nginx version: nginx/1.18.0
nginx file descriptors: 191295
worker_processes: auto
worker_connections: 20000
worker_rlimit_nofile: 191295
client_max_body_size: 50m
[CACHE]
FastCGI 200: 30d
FastCGI 3xx/4xx: 1m
FastCGI inactive: 7d
FastCGI max-size: 191m
open_file_cache_valid: 3m
open_file_cache max: 63765
open_file_cache inactive: 5m
[PHP]
PHP 7.4.11 (cli) (built: Oct 10 2020 19:45:09) ( NTS )
memory_limit: 192M
post_max_size: 50M
upload_max_filesize: 50M
max_file_uploads: 20
max_execution_time: 300
[MYSQL]
mysql Ver 15.1 Distrib 10.5.6-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
PhpMyAdmin: 5.0.4
[Raw Conf]
app-version:1.13.0
pre-packs:true
nginx-ppa:stable
nginx:true
swap-owner:webinoly
linux-optim:true
global-access-log-off:true
server-version:1.5
nginx-optim:true
nginx-tool:true
php-ver:7.4
php:true
php-v7.4:true
php-optim:true
php-tool:true
mysql-client:true
mysql-root:bnR6cHNKQlIwaDN4b1ZzUAo=
mysql-admin:VGtDdXlVSWRuWGZ6YWo2MAo=
mysql:true
mysql-tool:true
tools-port:39516
tools-site:blogwp.ovh
mail:[email protected]
login-www-data:true
default-site:blackhole
status-api:wys
13、Update Webinoly (Before updating Webinoly, please do not forget to back up the host)
sudo webinoly -update
[email protected]:~# sudo webinoly -update
You currently have the latest version!
It is important to note that this command only updates the Webinoly app, not the other packages installed in the server.
During the upgrade process, the conf file you have modified will be deleted. If you have modified it, please backup it first.
After upgrading or restarting the host, you can use commands to check the status of Webinoly and various services first.
sudo webinoly -verify
[email protected]:~# sudo webinoly -verify
Verifying integrity of the entire Webinoly system...
Integrity test passed!!
14、Recover MySQL username and password
You can always recover the password for the “root” and “admin” users by running the following command:
sudo webinoly -dbpass
[email protected]:~# sudo webinoly -dbpass
root: ntzpsJBR0h3xoVsP
admin: TkCuyUIdnXfzaj60
15、Change MySQL password
Can only modify the password of the “root” and “admin” users, they are the only ones that Webinoly saves and uses to work.
sudo webinoly -mysql-password
You can also use it in the following way:
sudo webinoly -mysql-password=[user,pass]
16、Backups
Webinoly has support for automated backups:
Export/Import server or site
Local WordPress database backup
Backups to S3 (AWS)
sudo webinoly -backup
You can manually configure any backup supported by Duply and Duplicity: Amazon S3, Backblaze B2, DropBox, FTP, GIO, Google Docs, Google Drive, HSI, Hubic, IMAP, local filesystem, Mega.co, Microsoft Azure, Microsoft Onedrive, par2, Rackspace Cloudfiles, rsync, Skylabel, ssh/scp, SwiftStack, Tahoe-LAFS, WebDAV.
Export server settings and sites:
sudo webinoly -backup=local -export
To export a specific site:
sudo webinoly -backup=local -export=blogwp.ovh
Options to import on a new server:
full – Configuration and sites.
stack – Only configuration.
sites – Only sites.
sudo webinoly -backup=local -import=full
When configuration is imported, all the packages will be installed and configured based on the exported configuration.
17、Server Reset
After any modification to the Webinoly configuration file, you should do a -server-reset to changes take effect. Run the following command:
sudo webinoly -server-reset
Or update the configuration of a specific package:
sudo webinoly -server-reset=nginx
sudo webinoly -server-reset=php
Also, the -server-reset option can be used in many different situations, For example, when you update your VPS hardware specs, more RAM was added, you can update your server configuration with server-reset to take the new values.
18、Install packages
Install PHP:
sudo stack -php
Install MySQL (MariaDB):
sudo stack -mysql
Install phpMyAdmin:
sudo stack -pma
Install LEMP:
sudo stack -lemp
19、Remove installed packages
The option -purge will allow you to remove any package installed by Webinoly, you can also use the option -purge=force to ignore any question. When you remove a package automatically all additional related tools will be deleted.
Remove Nginx:
sudo stack -nginx -purge
Remove PHP:
sudo stack -php -purge
Remove MySQL:
sudo stack -mysql -purge
When removing MySQL, PhpMyAdmin will be automatically deleted. Before removing MySQL, you should make a backup of your databases.
Remove PhpMyAdmin:
sudo stack -pma -purge
[email protected]:~# sudo stack -pma -purge
¡ C A U T I O N ! You are about to remove phpMyAdmin from your server!
Are you sure [y/N]?
phpMyAdmin has been deleted successfully!
Remove all packages installed by Webinoly:
sudo stack -purge-server-all=force
20、Website management
Activate or Deactivate a website:
sudo site blogwp.ovh -on
sudo site blogwp.ovh -off
Delete a website:
You should use this option with caution, as once a site is deleted it will not be possible to recover the files.
sudo site blogwp.ovh -delete
And at this time, the Let’s Encrypt certificate file applied for may be still left in the host. You can force these Let’s Encrypt certificates to be deleted by using the following command:
sudo site blogwp.ovh -delete=force -revoke=on
Site info:
sudo site blogwp.ovh -info
[email protected]:~# sudo site blogwp.ovh -info
Type: WordPress
Status: Enabled
SSL: true
Access Logs: false
Force Redirect: root
Size: 55M
Cache: true
Multisite: false
WP Auth: true
Debug: false
Database: localhost
DB Name: blogwp_ovh
DB User: blogwp_ovh
DB Prefix: wp_
List of your sites:
sudo site -list
[email protected]:~# sudo site -list
+ blogwp.ovh (WordPress)(Tools)
21、Uninstall Webinoly
The following command will completely remove Webinoly and all its files from the server.
sudo webinoly -uninstall
Notes:
This action will not delete your websites. The configuration of your server, as well as the installed packages will not be affected or uninstalled. The Webinoly commands to create and manage your server and websites will be removed and will no longer be available for use. If you want to reinstall Webinoly your previous configuration will be recovered, in case you don’t want to generate this recovery file during the uninstall process you can use the -no-recovery parameter.
Sources:
https://webinoly.com/en/
https://webinoly.com/en/documentation/webinolys/
https://webinoly.com/en/documentation/stacks/