Install Joomla! With the LSCache Plugin
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!.
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.
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
Inside the File Manager, go to the public_html folder and delete the 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.
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!
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.
To go to the administration panel, go to yourdomain.com/administrator and login with your username and password which you had created while installing Joomla! on your website.
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.
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:
<IfModule LiteSpeed> CacheLookup on </IfModule>
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!
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.
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