Install Joomla! With the LSCache Plugin

Install Joomla! With the LSCache Plugin

What is Joomla?

Joomla! is another free and open source content-management system (CMS) based on the Model-View-Controller (MVC) design pattern for publishing web content. It is written in PHP, and uses Object-Oriented-Programming (OOP) techniques. It is responsive as well, as it can be used to write blogs or create websites according to the client’s needs. It is the second most used Content Management System on the internet after WordPress and comes with over 8,000 free or commercial plugins. Its features include but are not limited to page caching, RSS feeds, printable versions of pages, news flashes, blogs, search, and support for language internationalization.

LiteSpeed Technologies has recently developed a plugin which integrates Joomla! page caching into the OpenLiteSpeed web server! Meaning, while the stock page caching technique of Joomla! may provide a reverse proxy approach, OpenLiteSpeed’s cache plugin is exclusively created for OpenLiteSpeed web server and will provide performance enhancements and better resource utilization of your server.


In this article, we will be installing Joomla!’s latest version on our website hosted on CyberPanel and will set up the LSCache Plugin for Joomla!.

Step 1: Create Website

Before starting the tutorial, it is assumed that you have installed CyberPanel on your dedicated server or VPS. If not, please read the documentation on how to install it on CentOS 7. After installing CyberPanel, let’s create our website!

From the left panel, click on Websites then ‘Create Website’ and enter your domain name. After the website has been created, we are ready to install Joomla! on it.

Step 2: Install Joomla! on our Website

With CyberPanel, you can directly install Joomla! on your website, but before installing it, make sure you delete any content in the website or on the default ‘Website ready’ page before installing Joomla! from the CyberPanel or it will give errors.

To delete content, launch your website’s Control panel and go to the Web File Manager.

Go in to Website’s Settings

Opening File Manager of our Website!

Inside the File Manager, go to the public_html folder and delete the index.html file.

Deleting index.html file

After deleting it, leave the .well-known folder as it is because it is needed for future renewal of the Let’s Encrypt Certificates. If you do not use Let’s Encrypt or you like to use Reverse Proxy (CDN) or have your own certificates, you may delete this folder.

Now, to install Joomla!, close the File Manager and go back to our website’s settings. Under the File Manager section, you will see ‘Application Installer’ section. Head there and click on JOOMLA.

Click on JOOMLA to install Joomla! on your website!

After clicking on that button, it will ask for some details. Fill it according to your needs and click on ‘Install Jooma’. It will automatically create a database and install Joomla! on your website straight away!

Joomla! Installed! YAY!

Now, if you head to yourdomain.com it will show you the basic Joomla! page. We will now go to the administration page to install the LiteSpeed Cache plugin.

Step 3: Install LiteSpeed Cache.

To go to the administration panel, go to Best Website Builder | Create A Website & Go Online| Yoursite.com and login with your username and password which you had created while installing Joomla! on your website.

Joomla!’s Administration Panel

You will need to download the lscache_plugin.zip and com_lscache.zip. These are the Cache Plugin files for Joomla!

After downloading the plugin files, go to Extensions → Install Extensions on the left Sidebar of your administration Panel. Upload the files that you just downloaded one by one, and Joomla! will automatically install them.

Next, go to Extensions → Manage → Manage and search for “lite” and there will appear LiteSpeed Cache Plugin. Enable that plugin by hitting the Enable icon as shown in the screenshot below.

Enabling LiteSpeed Cache plugin!

Step 4: Change Rewrite Rules (.htaccess)

After enabling the Cache plugin, we need to add some rewrite rules for the LiteSpeed Cache plugin to work.

To change rewrite rules, go to your Website’s settings in CyberPanel and click on ‘Add Rewrite Rules’ option.

Append the following lines at the bottom and Save:

CacheLookup on

Step 5: Configure the LSCache Plugin

If you need to Purge cache in the future or fiddle with the Caching options, you can do it via the Joomla! panel itself. To do that, go to Joomla!’s admin panel, go to Components → LiteSpeed Cache, and it will open the Config options for you.

Joomla! will then open LSCache’s settings and you will be able to Purge ALL LiteSpeed Cache or make some other config changes according to your needs.


After this step, your Joomla! website will now start caching the pages for viewers from now on. To verify the caching, open your website in an Incognito Window and go to Inspect Element → Network Option and reload the page (F5).

Now, in your website’s headers, you will see the x-litespeed-cache: hit which will confirm that LiteSpeed Cache plugin is working for your site’s viewers!


Benchmarks!

With the above configuration, on a standard $5 DigitalOcean Droplet with CyberPanel installed, Joomla + LSCache configured, We tested with a number of 5000 requests with the concurrency level of 500 and were able to get these Benchmarks from an external Server with the tool “Apache Benchmark”.

Server Software:        LiteSpeed
Server Hostname:        talkshosting.com
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128

Document Path:          /
Document Length:        6401 bytes

Concurrency Level:      500
Time taken for tests:   14.616 seconds
Complete requests:      5000
Failed requests:        0
Total transferred:      34370000 bytes
HTML transferred:       32005000 bytes
Requests per second:    342.08 [#/sec] (mean)
Time per request:       1461.640 [ms] (mean)
Time per request:       2.923 [ms] (mean, across all concurrent requests)
Transfer rate:          2296.36 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      757 1079 422.8    947    4056
Processing:   250  313  94.8    276     736
Waiting:      250  313  94.8    275     736
Total:       1009 1392 439.7   1258    4340

Percentage of the requests served within a certain time (ms)
  50%   1258
  66%   1312
  75%   1396
  80%   1469
  90%   1768
  95%   2201
  98%   2730
  99%   3002
 100%   4340 (longest request)

As you can see, we are able to serve almost 342 Requests with our current configuration with the above settings compared to the following bechmarks on an Apache + NGINX reverse proxy setup on a second server with 10 vCores and 12 GB RAM :

Server Software:        nginx
Server Hostname:        talkshosting.com
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,4096,256

Document Path:          /
Document Length:        22655 bytes

Concurrency Level:      500
Time taken for tests:   110.065 seconds
Complete requests:      5000
Failed requests:        202
   (Connect: 0, Receive: 0, Length: 202, Exceptions: 0)
Non-2xx responses:      202
Total transferred:      111034882 bytes
HTML transferred:       108951190 bytes
Requests per second:    45.43 [#/sec] (mean)
Time per request:       11006.542 [ms] (mean)
Time per request:       22.013 [ms] (mean, across all concurrent requests)
Transfer rate:          985.16 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       11  572 1710.9     21    5979
Processing:   172 9012 17047.7   5435   90216
Waiting:      169 8963 17056.8   5379   90216
Total:        294 9583 18279.3   5508   96090

Percentage of the requests served within a certain time (ms)
  50%   5508
  66%   5889
  75%   6196
  80%   6450
  90%   8933
  95%  26279
  98%  96072
  99%  96080
 100%  96090 (longest request)

While Bench-marking, it was observed that in the Apache setup, all the Cores were being fried to 100% due to too high MySQL usage (see below). This can be explained with they theory that for each request, Apache queries the database for its information, while the OpenLiteSpeed webserver with LSCache serves the cached content to the user rather than hitting the database everytime saving the CPU usage.

Conclusion

As it is clearly seen on the benchmarks above, even the cheapest DigitalOcean droplet is able to hold almost 7.5 Times the requests with “OpenLiteSpeed + LSCache” than the standard “Apache+NGINX” webserver with Joomla! installed on our website.

After seeing the benchmarks above, you should be able to tell which one to choose for your next production content. As CyberPanel integrates OpenLiteSpeed webserver in it with other multiple packages for Website Hosting and Management, it makes it very efficient All-In-One free Control Panel for your website hosting needs.

Thanks for reading this Article, if you have any issues with any of the steps mentioned above, please ask in the comment section or hop on our Discord server for any support!

Discord server link : https://discord.gg/mcvXehH