Kakoune: A Better Code Editor Heavily Inspired by Vim

Kakoune is a free, open source, powerful, interactive, fast, scriptable and very customizable code editor with a client/server architecture. It runs on Unix-like systems such as Linux, FreeBSD, MacOS, and Cygwin. It is a Vi/Vim like modal editor which aims to improve Vi’s underlying editing model for more interactivity.

Read Also: 18 Best IDEs for Programmers and Developers

It comes with numerous text editing/writing tools such as contextual help, syntax highlighting, auto-completion while typing, and supports many different programming languages. It also implements multiple selections as an essential procedure for interacting with your text.

In addition, Kakoune’s client/server architecture allows for multiple clients to connect to the same editing session.

Kakoune Screenshots

Kokoune Code Editor

Kokoune Code Editor

Kokoune Code Editor Features

Kokoune Code Editor Features

Kakoune Features:

  • It is interactive, predictible, and fast.
  • Supports multiple selections.
  • Supports syntax highlighting.
  • It operates in two modes: normal and insertion.
  • Uses less keystrokes making it fast.
  • Supports auto-information display.
  • Also supports extensive auto-completion.
  • Offers multiple text editing tools.
  • It supports working with external programs.
  • Supports advanced text manipulation primitives.
  • Uses powerful handling primitives such as regex matches, filtering, splitting, aligning, text objects and more.


  • GCC >= 5 or clang >= 3.9 (with associated C++ standard library (libstdc++ or libc++)
  • libncursesw >= 5.3
  • asciidoc for creating man pages

How to Install Kakoune Code Editor in Linux

On major Linux distributions such as CentOS/RHEL and Debian/Ubuntu, you need to build and install it from sources. Before that first you need to install development tools and other dependencies on your system and then clone the sources code, build and install it with the following commands.

Install Kakoune Code Editor in CentOS/RHEL

# yum group install 'Development Tools' ncurses-devel asciidoc
# cd Downloads/
# git clone http://github.com/mawww/kakoune.git
# cd kakoune/src
# make
# make man
# make install

Install Kakoune Code Editor in Debian/Ubuntu

$sudo apt update && sudo apt install build-essential libncurses5-dev libncursesw5-dev asciidoc
$ cd Downloads/
$ git clone http://github.com/mawww/kakoune.git
$ cd kakoune/src
$ make
$ make man
$ sudo make install

On Fedora, you can install it from the copr repository using following command.

# dnf copr enable jkonecny/kakoune
# dnf install kakoune

On openSUSE, you can install it from the default repository by running the following command. Make sure to specify the repository for your openSUSE version (Tumbleweed in this example).

$ sudo zypper addrepo http://download.opensuse.org/repositories/editors/openSUSE_Factory/editors.repo
$ sudo zypper refresh
$ sudo zypper install kakoune

On Arch Linux, install it from the AUR by running the following command.

# yaourt -Sy kakoune-git

How to Use Kakoune Code Editor in Linux

Once you have installed kakoune, simply launch it by running the following command with script filename (example getpubip.sh) that you want to code.

$ kak getpubip.sh 
Starting Kakoune Code Editor

Starting Kakoune Code Editor

Because of kakoune’s client/server architecture, the above command will open a new session, with a client on the local terminal.

To enter in insert mode, press i. After making changes to your source code, use :w to write changes. And to get back to the normal mode, press <Esc>, to quit, use :q. If you want to quit without writing changes, use :q!. As you can see, most of the keys are similar to those in Vi/Vim editor.

Kakoune Normal Mode

Kakoune Normal Mode

You can get a list of all accepted command line options by typing.

$ kak -help

For a comprehensive documentation including keystrokes to use in the insertion mode, check out the Kakoune Github repository: https://github.com/mawww/kakoune

Kakoune is a Vi/Vim like modal editor; built to enhance Vi’s editing model making writing/editing code both faster, and more fun. Share your thoughts about it via the feedback form below.

How to Add JS Files Without Breaking Your WordPress Site (functions.php, template or plugin)

View Comments

Add Javascript to WordPress

WordPress is so extensible that it allows you to easily add new features and functionalities to your website without actually having to redesign your entire theme. Rather you can add the functionality by simply adding plugins. And if the functionality you would like to add is too small to create a plugin (which comprises just a few lines of code), you can use the functions.php file rather than creating a separate plugin.

(Special note: Are you looking for a list of tweaks/tricks you can easily make on your WordPress site without using a plugin? You may refer our guide here:101 WordPress tricks every serious blogger must know.)

The best thing about the functions.php file is that it acts like a plugin, which can be used to add features and extend the functionality of both the theme as well as WordPress installation.

That said, often times while enhancing your website with new features you’ll require adding additional javascript files to your WordPress theme especially if you’re looking to provide a friendlier user experience to your website visitors or if you’re verifying your site with third-party services.

Though you can easily add Javascript code directly to your header.php file, the problem with this method is that it can even cause conflicts with other plugins when they load their own JS scripts.

In this article by CollectiveRay, we take a look at the right way to add javascript to WordPress themes. As WordPress developers, this is one of the things which we will have to do very often.

If you’re not confident of tweaking the code yourself, you might want to look at this article to learn how to recruit the best WordPress developer for your business: https://www.collectiveray.com/wordpress/wordpress-tips-and-tricks/wordpress-developers-for-hire.html

JavaScript in Your Template 

To use JavaScript repeatedly within your site, maybe you have created a script or need to add a 3rd party script in all your pages, you can  set the call for the JavaScript, or the script itself, in the head of your header.php template file. This should be added between the meta tags and the style sheet link. This is exactly the same as if you were adding JavaScript in any HTML page.

To “add” the JavaScript file into your site, in the head, you can use the following code:

<script type="text/javascript" src="https://cdn.collectiveray.com/scripts/myscript.js"></script>

Make sure that you have defined the type correctly, otherwise your site will not be valid.

You can then add any reference to functions used within the file you just added to the HTML where you need to use it. 

For example, this is an example of using the function you just added.

<h3 class="heading3">
<a href="/<?php the_permalink() ?>" >
Heading goes here</a></h3>
<script type="text/javascript">

Adding Javascript to WordPress: The right way

The recommended method to add a javascript file to your WordPress theme is by using functions.php file with wp_enqueue_script.

Here’s how to do it.

Just open your functions.php file and copy the below code snippet to it. Make sure you replace the template URL with yours before saving.

function my_theme_scripts_function() {

  wp_enqueue_script( ‘myscript’, get_template_directory_uri() . ‘/js/myscript.js’);



If you’re using a child theme, you’ll need to use get_stylesheet_directory_uri() instead of get_template_directory_uri()

Adding Javascript to WordPress using plugins

If you would like to simply use a plugin for uploading a javascript to the theme’s header or footer file, ‘Insert Headers and Footers’ plugin could be the right choice for you. As the name says it allows you to add scripts to the header and footer files by hooking into wp_head and wp_footer.

You can download Insert Headers and Footers here.

This plugin is perfect because it allows you to add any script without running any risk of breaking stuff, you don’t have to change any code yourself. (Of course, you need to make sure that the actual script is valid). 

Instead of modfiying theme files with the custom Javascript, the plugin allows you to insert the code in either the header or the footer of your site.

After you need to download and install the plugin:

  • Log in to your site’s backend or admin.
  • Go to Plugins > Add new
  • Search for “Header and Footer” plugin and click on Install Now.
  • Once it has installed, click on Activate
Headers and footers

Upload a custom Javascript file

  • First you need to prepare the file for inclusion
  • Save your JavaScript code or file into a new test file with the .js extension.
  • Upload it into your site to the following folder: wp-content/themes/<theme-you-are-using>/js/
  • Go to Settings > Insert Headers and Footers.

We now have a couple of choice to load our file:

  1. Scripts in header (load inside head tag)
  2. Scripts in footer (load before closing </body> tag)

Use the location that matches best your specific needs using the following as an example:

<script src="http://www.website.com/wp-content/themes/<theme-you-are-using>/js/file.js"></script>
Insert script in head
  • Click on the “Save” button to finish and save.

Load custom JavaScript without a file

The 2nd option you can use us to the code directly into WordPress without the need of using a specific file. This can be used when you are using a 3rd party service, such as Google Analytics, Drip, or other tool which needs some script added to your site.

add script / code directly
  • Once again, click “Save” to finish.

Reload the front-end, and check your website’s source to make sure that the code is now showing.

It’s also a good idea to browse a few pages to confirm that everything still looks like it is working ok.

A full WPEngine Review with the real, honest truth. Should you use this hosting? (2018)

View Comments

At CollectiveRay, we’re always trying out new hosting servers – for one reason, we like our websites to be fast. So when we came across the opportunity to write a WPEngine review – we jumped on it.

Because who hasn’t heard of WPEngine? This company has built itself a reputation around WordPress hosting – it’s even built right into their name – so they’ve set themselves a great standard to live up to, they are the engine that powers your WordPress.

As experts who have dealt with numerous hosting services, too many to mention, we can review a hosting service and say it like it us. And that’s what we will do with this article – give you all of the nitty gritty details of hosting your site on WP Engine. 

WPEngine review

WPEngine Review Summary

Our overall rating: (4.9 out of 5) – Excellent – highly recommended

What we Liked

While the features list is huge, there are a few key things worth recommending about this service:

Blazing fast speed.

Great User Experience and Dashboard.

Easy, flawless, automatic migration from one host to another.

Built-in CDN (at no extra cost).

Daily checkpoints (backups) done automatically, ready for easy recovery and restore.

Built-in GIT Push for soruce control of your development.

What We Didn’t like

Some plugins are simply not allowed on the service.

CPanel and other common functions are not available.

 Go to our Plans and Pricing thoughts

Who is WP Engine?

WPEngine is one of the biggest names in managed WordPress hosting.

Founded in 2010, they are not one of the early entrants into this market, but they’ve certainly carved themselves a top position in this niche industry.WPEngine


Unlike other hosting companies, WPEngine focuses on one thing and one thing alone: 


Essentially, they focus all of their resources and energy on the WP framework, hence their name.

This company is powered by an award-winning team of WordPress experts, these days, the company employs more than 250 people, headquartered out of Austin Texas, but with offices in San Francisco, San Antonio, London and Limerick (Ireland).

One of the ways in which we gauge the stability of a company is actually based on what funding the company gets if any. 

With nearly $290 million being raised over the years, and the latest round being a whopping $250 million raised in January 2018, from venture capital firm Silver Lake, you can be assured that this company is going places.

The reasons for being to be able to raise so much funding are various:

  • it is one of the largest WordPress hosts
  • it has an extremely successful productized platform – the Digital Experience Platform
  • it’s estimated the company has $100million in annual recurring revenue, 70,000+ customers (up 30 percent from the previous year) and a valuation of about $500 million at least
  • it powers around 5% of internet visits – a hugely significant portion of the internet

So yeah, the numbers definitely are able to do this company justice. 

While there is more competition in the managed hosting business than in any other niche, it’s clear that WPEngine is a market leader here, with excellent brand recognition, cutting-edge features, and a leading platform for all kinds businesses, including the enterprise sector.

Check out current prices and plans (20% OFF until )

(or get 4 months off on annual plans)

How we structured this review

We’re not basing this review on anecdotal experience, we are basing it specifically on our own technical expertise when it comes to hosting companies.

Let’s get down to the nitty-gritty.

The WP Engine Platform

When it comes to the actual service, this company offers a platform, an experience – the Digital Experience Platform. But what is this exactly? Does it live up to the hype?

Let’s dig deep to find out.

The Dashboard

When you log in to the administration console, you first hit the Dashboard, where you’ll find a number of current important notices and a quick summary of what’s going on with your account.

At the very top, I had a couple of messages which I dismissed before I took the screenshot below, but let’s have a look at the Dashboard and some of the features it has, some of which offer a real difference already when it comes to comparing to other hosts.

WP Engine Dashboard

WP Engine Dashboard

Summary of installations and important stats: the dashboard starts with a quick summary of all of the installations of WP which you have in place and some statistics about them, including the Total Visits and a 10-day average, together with bandwidth and storage use. This quick glance at these essential details can show you if you are experiencing any anomalies, such as traffic or bandwidth spikes.

Live Chat + waiting time: the availability of getting in touch with the Live Chat support directly from the Dashboard is sweet. But what is even cooler is that by hovering on the chat feature, you can immediately see the expected wait time before you get ahold of a support representative.

Knowledge Center + System Status: also available in the sidebar are quick links to essential pieces of information to help you build your site effectively. System Status is also available right there on the sidebar too. This is absolutely great transparency. Rather than hiding any issues which are currently affecting the service who knows where, you can see exactly what is going on in terms of status and resolutions of any recent incidents.

That’s more than enough information than you need as soon as you log into your website’s Dashboard.

Onwards and upwards, let’s have a look at the Installs Dashboard.

Check out the WPE Dashboard 

The Installs Dashboard

This is where you start having a look at the real details of each specific website you have hosted.

Once again, we can see that a lot of thought has gone into organizing this view in a manner which presents all of the necessary information immediately, with everything else accessible through menus as necessary. Clearly, a lot of thought has gone into the User Experience – making it as smooth and as simple as possible.

Installs dashboard

Installs dashboard

At a glance we can see most of the important details about our website, with such stuff as the CNAME of the website (something you’ll need if you want to do DNS changes to your domain), the IP address, the region where it is hosted, the PHP version, your direct technical contact and the current version of WordPress your website is running.

You’ve also got a set of statistics about the current trends of visitors to your site.

The left-hand menu, is where you can access a bunch of other stuff related to the setup of your website.

Domains: the Domains function is what you use to point your existing domain to your hosting on WP Engine. It provides you with all the details you need to redirect your DNS settings to WPEngine. You’ll find the CNAME and A record which you’ll need to perform the required changes and a direct link to a Knowledge Base article of what you need to do to enable the settings above with your Domain Registrar.

domains - where you can enable your existing domain to point to this hosting

domains - where you can enable your existing domain to point to this hosting

CDN: So if you’ve been around our site for a while, you know we think CDN’s are a great idea for faster website – especially if they come for free! If you’re not familiar with what a CDN does, in a nutshell, a CDN is a geographically distributed network of servers which will serve your heavy website resources from a location which is physically close to your visitors – making your website that much faster to load.

So when we came across this feature, we were really positively surprised.

As you might know (or not), a CDN service plan typically starts at not less than $10/month for the lowest plans. So the fact that this service is bundled right into the hosting plan, means you’re getting the speed benefits of a CDN, without having to fork out extra money for it.

*thumbs up*

CDN included with service

CDN included with service

Redirect rules: redirect rules essentially instruct your website to forward visitors to a specific web page to a new (different) address of that page, or another page you prefer sending those visitors too. 

This is especially useful when you’ve done a site reorganization and want to make sure you don’t lose any traffic to broken pages. Most especially, redirects make sure you don’t lose the value of any links you might have acquired.

Typically, redirects can be done via a WordPress plugin, but having these accessible at server level is better, because doing this at server level removes the load from your WP site.

Access Logs: while this is not a feature which everybody will be interested in, it’s good that this is available. These are complete logs directly from the web servers hosting your site i.e. both Apache and Nginx. In essence server access logs record all requests processed by the server and can be useful for understanding how your site’s caching is affecting it’s performance.

Apache access logs contain the hits to your website that are uncached and need to be processed by the server.

Nginx access logs contain all hits to your website including requests for static, cached, and uncached content.

Error logs: again, a fairly common feature, this is so that if your website is throwing any errors, you should be able to quickly troubleshoot any problems by looking directly at the errors coming straight from the web server.

SFTP Users: If you don’t have direct access to the files on your server, the next best thing is to access the file directory using Secure File Transfer Protocol or SFTP. In this section, you can set up credentials to access the Secure FTP functionality.

adding sftp users

adding sftp users

GIT Push: This is another great key differentiator to most hosts. If you’ve got plenty of customizations going on with your website, you’ll need to store them safely in a cloud-hosted source control service. GIT is the protocol typically used to communicate with a source control service. As you can see, the GIT Push function allows you to push the source code by your developers onto the hosted and secure environment of WPEngine.

Again, the fact the source control is directly integrated with the hosting makes it that bit of a touch which makes all the difference when you’re in a live environment. Rather than having to use a separate source control repository such as GitHub, then having to deploy to your hosting, this is all done, in-place as part of your plan.

Backup Points

This is such a great feature, that we have to dedicate a section all to it.

You probably already know that backups are essential and lifesavers when stuff goes wrong, especially in cases of catastrophic failures.

Like we always say, if you’re not taking any backups, you’re really living on the edge.

Yet, doing good backups is hard work. Most non-technical people will find that creating backups is quite a bit of a headache. So yes, most people take the easy way out … and just hope nothing goes wrong.

But when something does go wrong…the consequences are not pretty. You don’t want to be in that position, I can assure you. We’ve had clients who lost a lot of money due to not having good backups in place.

So yeah, you need to have backups.

Well, the service you get from this host means that backups are fully handled – you really have to do absolutely nothing.

Backup points are exactly what they sound like, points at which a full backup of your website has been performed.

By default, you’ll get what is called a Daily Checkpoint, essentially this means that you have, at the very least a daily backup of your site.

backup points and daily checkpoint listing

backup points and daily checkpoint listing

You can then choose to perform more manual backups by clicking on Back up now, should you be planning to perform a drastic (risky) change – and want to make sure you have a working version to revert to.

Or you could opt to Download a ZIP of the backup so you can restore it at another location.

Or the easiest thing to do if things go belly up, simply Restore your website to a previous version.

Seriously, this feature alone, sets this company apart from the rest.

Loved the backup and restore points? Start a trial with 20% OFF until

SSL Certificates

A few months back, and even more recently, setting your website to be deployed over secure certificates is much more important than ever. 

The latest versions of Chrome have been labeling sites which are not on HTTPS:// as NOT SECURE.

Besides the security implications associated with non-HTTPS websites, this is a negative user experience which impacts on the trust and reputation of your website.

Simply put, these days, HTTPS is a must.

Have a look at the below Enhanced Security Certificate for Medium.com:

Medium Secure Certificate

Medium Secure Certificate

Which means, of course, that your host should make the implementation of secure certificates on your website as easy and as fully-featured as possible. 

Once again, the service delivers on this 100%, with all of the options you might require for deploying HTTPS. 

1. Free Let’s Encrypt Certificates

Enabling HTTPS using Let’s Encrypt, is the easiest, cheapest and most convenient way these days. These are free certificates deployed directly through your hosting service which are still fully secured as their paid counterparts. As can be seen from the screenshot below, you simply need to go through the easy steps to “Request SSL Certificate” and your website will be good to go with a secure certificate.

Requesting a free Lets Encrypt certificate

Requesting a free Lets Encrypt certificate

2. RapidSSL Wildcard Certificates

The 2nd option when it comes to SSL is a low-cost solution from RapidSSL. A wildcard certificate means that HTTPS can be deployed on any sub-domain your website(s) will be deployed on. The price for a RapidSSL wildcard certificate is $199/year, which is the standard price in the industry for such a certificate.

3. Import a new certificate

The 3rd option you have is if you are about to purchase a new certificate or get it created somewhere else. To be able to do this, you need to generate what is called a Certificate Signing Request or (CSR). Essentially, this is a manual form, which shows the Certificate Signing Authority who will issue the certificate for you, that you actually have administrative access to the domain where the certificate will be installed.

The process is fairly simple in nature, you just need to fill in a form with details which will be eventually shown on the certificate you will purchase.

Once you complete the form, a .CSR file will be created, which you will then need to send to the company where you will purchase the certificate from.

Generate csr

Generate csr

Once this is done, you can take the information and send it over to the authority. Your SSL certificate will then be generated and you can use the next form to upload this to your domain, through the next form. The certificate will actually be installed by the support staff, so in essence this form is notifying support that your certificate is ready to be installed and attached the appropriate information.

4. Import an existing certificate

The final method of installing a certificate can be done if you’ve already acquired and have the details of the certificate and wish to install this in your domain.

In this case, this option helps you get in touch with support staff so that they can use this information to install the certifcate for you.

Production vs Staging

This is another feature which I find to be a significant differentiator between this service and others. Whilst quite a lot of services mention that you can create a staging or testing environment, it’s only WPEngine who are doing this the right way.

Let’s have a quick discussion about creating a staging environment.

A staging environment is a replica of your environment which is used to test the impact of changes to your website, before actually performing those changes on your live environment (production).

This is web development concept, which is typically deployed in the Enterprise space, where releases to production need to be thoroughly tested before they are released. So a staging environment is created, such that if the “change” passes the tests on the testing or staging environment, then the changes can be rolled out to the live (or production) instance.

This staging vs production environment is built right into the platform at WPEngine. 

What this means, is that by default, as soon as you setup a website, you ALREADY have these two environments set up for you. 

Rather than having to actually create this setup yourself, this is part and parcel of the actual service – you will have a staging and a production environment by definition.

Setting up a staging environment is a technically challenging endeavor, you need to get it right. Most of all, it’s important that your staging is an exact replica of your production instance, otherwise, it’s a waste of time.

With WPEngine, this is all done for you, out of the box.

WordPress Loading Speed

One of the main concerns of website owners comes if their website is loading slowly. This is typically a severe problem for people who are not technical. So there are two aspects to website speed:

  1. Having a website which is fast by default
  2. Troubleshooting website loading speed problems

Let’s run a few tests and see how an install on WPE performs. We’ll start first with a brand new WordPress install and see how that performs:

Website loading blank install - less than 191ms

Website loading blank install - less than 191ms

Wow – that’s excellent – and this is with a test run at peak hours. Blazing fast! Note that the TTFB (Time To First Byte) or what search engines use to determine how fast your site is, comes in at 191ms, which is fantastic.

You can see the full report here: https://gtmetrix.com/reports/dattard.wpengine.com/jb8ZrzbI

We’ll run another test on Pingdom tools:

website loading blank intall pingdom

website loading blank intall pingdom

We can see that the load time, is 392ms, less than 400ms! It’s safe to say that a blank website is as fast it can get – no complaints there.

We’ll now run a few tests on a fully setup site.

But before we do that, we’re actually going to try to perform a website migration from another host to WPE. To do this, we’re first going to try using the Migration tool which comes directly from the company.

We first installed the plugin on the site we’d like to migrate and activated the plugin.

We then entered the information required from our own Dashboard:

Migration settings

Migration settings

This is actually a service powered by BlogVault – a WordPress Backup and Security Service. As the migration was happening, we could see the tables and information being migrated from one site to another.

Migration of website from one host to WPE

Migration of website from one host to WPE

Once we installed the plugin and gave it the details of the new host and clicked migrate, absolutely no other intervention was required from our side. As soon as the wizard finished our site had been migrated, lock stock and barrel. We just logged in to the new URL and found an exact replica of our site on the old host – the smoothest, fastest, cleanest migration of a WordPress website we ever did.

Truly, this is an epic service.

The site is now a portfolio site for a fictitious agency, based on a popular Themeforest theme. Let’s run a few more tests on the site, now hosted on our Live server.

zebre test agency site speed test - 2.2 seconds

zebre test agency site speed test - 2.2 seconds

Again, an amazing result. As you can see, a site which is more than 7MB in size loads fully in 2.2 seconds, which is faster than the recommended 3 second loading time.

Let’s check whether this is a fluke or not and run a test on Pingdom tools.

The results are actually faster on Pingdom tools, 1.7 seconds, an increase of more than 0.5 seconds against GTMetrix.

I think we can safely say there are no issues with website loading speed on WPE.

Zebre test agency speed test pingdom - 1.7 seconds

Zebre test agency speed test pingdom - 1.7 seconds

It’s clear that the infrastructure powering the website at WPE have been highly customized with extremely aggressive caching and a very advanced “stack” (software required to host sites) than a typical web host. The trained support staff are able to zone in to your WordPress install and identify exact performance bottlenecks to get your site running nicely.

The site is so aggressive with their speed setup that they don’t even allow caching plugins on their installs because these can interfere with the setup which as we can see is working flawlessly.

The great thing is that even unoptimized WordPress installs (like most users would have) still perform very fast, because the platform is doing all the heavy lifting.

This is a significant advantage as compared to other companies.

Given that the service also includes a built-in CDN, you can rest assured that your site is always going to be fast – very fast. 

Try this blazingly fast service today (with 20% OFF until )

Customer Support

Another differentiator when evaluating where to setup your site is customer support. This has always been a core to WP Engine’s mantra, from their early days. As this is a company which is offering managed WP as a service, rather than as a hosting product, it is understandable that there is a strong emphasis on support.

Here’s a screenshot of getting in touch with them – during peak hours.

Support response time

Support response time

Given that the company has been growing fast over the years and given that there have been stretches of time when there was a lot of criticism – we were a bit hesitant about the response we would be expecting. 

The problem with support stories is that a most people will relate their own experience and it is unlikely that absolutely every body will feel that they have been excellently served – this also depends a lot on the actual experience that the user has, and yes, even the mood they are in when they interact with the company. The question is typically the percentage of good reviews as compared to the criticism a company gets.

So rather than just looking at individual reviews, we like to look at a company holistically. 

  1. Does the company have the knowledge required to provide adequate support?
  2. Are there good systems in place to enable a customer to understand the current state of support?
  3. How good is the access to support staff when necessary?

All of these are requiring a significant investment in terms of time, money and expertise.

Our experience with the company have shown as that the company is very well-equipped in all of these three areas.

Knowledge – as we were working with our installs we kept coming across articles and knowledge base articles which covered what we needed to know from every angle. Articles are written in a manner which is easy to follow but completely actionable. It is quite easy to resolve problems you encounter by finding solutions in the knowledge-base which is kept updated and maintained.

Systems – there is a number of support channels available, including Live Chat support, Phone support and a ticketing system – besides the actual knowledge base.

Access – we were always pleasantly surprised when it came to the responsiveness of the support team. Whether through the Live Chat, email or actually getting on the phone with the WPE team, we believe the support you get from this company is truly top-notch. All problems and requests we gave were always met with a helpful response or a resolution, including trivial stuff such as resetting passwords, to more complex queries such as how to deal with a complex migration. 


Websites powered by WP today power a significant part of the entire internet, with the latest statistics quoting more than 30% of the web – which makes it quite the lucrative targets for hackers and malware actors.

As with all software, WordPress is not insecure as a software, but it has to be kept updated, such that when any vulnerabilities are discovered, they are closed immediately, especially being the open-source community where there are a lot of players, testers and contributors.

The bigger problem comes from plugins and themes. If these become unsupported, you’ll find that these can become serious problems for the website they are hosted on, because any issues remain vulnerabilities.

We’ve discussed how to secure your WordPress from hackers on other articles on this site, but let’s review the top points, the basics really:

  • Always keep your core install, all plugins, and themes updated to the latest versions
  • Only install files from trusted sources and reputable vendors  (stay away from cracked or pirated sources)
  • Make sure you have a security plugin installed to harden your installation against the most common attacks
  • Make sure you have backups just in case things go wrong

Even if the basics of security are straightforward, the responsibility of securing the website remains mostly on the owner of the site. That means people who are not too technical, or just simply don’t have to time to look after their website are at a general disadvantage, because they wouldn’t know all of this security stuff.

Of course, once again, this service comes to the rescue. Because it is designed exactly for this purpose – WP Engine’s managed hosting premise is to do what website owners do not know, do not want to do, or do not how to do. Whatever the reason, the idea is that WPE will do all of the security necessary for your website to function nicely, without any risk of suffering any losses in the fight against hackers.

Just like we mentioned a few paragraphs up, not only do they secure your website, but you’ve also got daily restore points, such that even if something happens, you can get your site back up and running in minutes.

The host works with the concept of installs, rather than an instance. What this means from a technical perspective that most of the security issues are tackled at a server level, with the end result being a much more secure environment for everybody.

As a firm with a reputation which needs to be maintained, they partner with top security firms to perform code reviews on their platform, besides having their own internal security team. With the guarantee that if you’re hacked, they will take care of it for free – you can rest easy knowing your website is as protected as it can be.

This is as good as it gets. Recovering a hacked site is a tedious and expensive exercise, and the fact that you don’t have to worry about this is another huge positive checkmark for this service.

Plans and Pricing

Is it good value?

Let’s make one thing clear. This service is not your typical hosting service. It is a managed service, so you can’t expect this to compete with the cheaper pricing packages offered by the more popular companies.

Plans start at $35/month, but let’s break this down a little bit, to understand the value that this price brings with it.

  • The typical cost of a separate CDN typically starts at $10/month.
  • A backup service such as BlogVault costs about $8/month.
  • A security service such as Sucuri starts from $16/month.
  • An aggressive caching plugin costs about $40 per year. 

Can you see how quickly it all adds up? The pricing you see above includes all of the above. You’ll also want to note that as your site grows in traffic, all of the above prices will go up – together with the complexity of maintaining the site.

Truth be told, the prices above are giving you the assurance of a website running nicely, without requiring any intervention from your end.

In an environment where your email subscription costs several tens to hundreds of dollars a month, should you be worried at paying $35/month for the peace of mind of your website, which is probably bringing in a significant part of your revenue?

We think not. Because really and truly, this is what it all boils down to.

What does your time cost? What is the cost of your website being down for a few hours? If it costs you upwards of $35 if your site is down, then you already have an ROI on the cost of hosting your site with WPE.

For the sake of comparison, a VPS from InMotion costs roughly the same, but you don’t get the same level of service as this. Infact, you’ll have to go it alone with most of the stuff mentioned up here. Shared hosting services start at a couple of bucks a month, but if you care about your website, you’d do yourself a favour to steer away from such cheap services.

If you had to compare feature by feature, you might discover a few areas where this service does not come out on top – but like we said, the fact that this is all done-for-you, hands-off service, this price is a fantastic deal.

Your own, your developer or designer’s time, even for just one or two hours per month, will cost much more than the above-quoted pricing – seeing as your time is probably worth more than $50/hour and you’ll be hard-pressed to find designers and/or developers working for less than $50.

You’ll find that other similar services such as Kinsta are similarly priced, but having worked with both services, we can safely say that WP Engine is much more mature as a service.

Even the cost of losing a few milliseconds on your website’s loading time could cost your business a significant amount over a period of time. It has been studied over and over again that web pages that load in more than 3 seconds significantly affect conversion – negatively. This service speed and performance tools alone are worth the price you’re paying let alone the rest of the add-ons available.

Simply put – for the service you’re getting – this is excellent value and will surely give you a good ROI.

Visit plans page (get 4 months FREE on annual plans until )

WPE pricing and plans

WPE pricing and plans

Who is the ideal customer of WPE?

If you’re just starting out with a website and are not much income from it – this service is probably not for you. However, there are a few niches which WP Engine serves very nicely with its features and tools.

Like I said at the beginning, WP Engine isn’t for everyone. There are 3 types of customers that WP Engine seems to be a fit for. For those 3 types of customers, WP Engine has a strong focus with plenty of tools & focus for each.

1. WordPress Developers and Designers

Given the sheer amount of features which are focused towards developers, one can easily see that this focus is ideal for developers, designers and agencies working with WP, who need a solid reliable service which they can use during their development and which they can then hand over cleanly to their customers.

Features which we mentioned above such as the Git Push, staging environments and easily transferable setups save a lot of time (and money) for this niche of customers.

Such customers typically have clients who can pay for a maintenance fee, which the developer can mark up to their client – whilst not having to do any work at all, because it is all handled by the service – the hosting, the security, the speed is all done.

2. Non-technical growing business / website owners

When you’re a business owner who has a website which is generating a bunch of revenue, dealing with technical issues, or just maintaining the site, is simply waste of time. That’s beside the fact that running your business should be your area of expertise rather than caring for your website.

These customers are those who sites are already successful, beyond the capabilities of shared website hosting and need a better, more reliable service.

Budget is not really an issue here, because the site is a money-maker. Infact, downtime is much more of an issue than paying for reliability and uptime.

If you are a growing entrepreneur, you know that you can rely on WPE. When there are problems, excellent customer support is only a phone call away.

3. Budding Companies looking for a long-term platform

The third type of customer who this service is a great fit for are those companies who are looking for a reliable long-term partner for their website / platform that they are building. They know that shifting from one host to another is a headache, whilst the WPE backend and platform is a much better option than having to shop around once the site is launched and growing.

WP Engine has the scalability these customers require to get these businesses on track – with plenty of time and cost-savings for them.

Try now (60-day money back guarantee + 20% OFF)

Potential problems with the service

Just like any service, there are going to be potential problems with any environment and platform. These are not issues we’ve encountered personally so far, but it would be a disservice if we did not point out any potential drawbacks of using this service.

You’ll find that many complaints you come across are anecdotal. The truth is always somewhere in between all of the greatness the sales pitch comes with, and the full of complaints reviews you might come across.

After all, as soon as somebody decides that this service is not to their liking, you’re bound to start hating it. So, always view bad reviews with a pinch of salt.

A service is not always a good fit for everyone – especially if you’ve already been accustomed to another different service.

Custom Backend

To push the envelope in terms of performance, security and scalability, a custom environment had to be built from the ground up – and things are done differently from most services.

Given that most hosts provide access to standard functions such as access to CPanel or WHM and all of the standard functions that go with them, if you are specifically looking for these features – you won’t find them.

If you’re used to these features, and want them – they are simply not available to you. While that may be done for very good reasons mentioned above, and the custom backend brings a whole slew of advantages – it is not the environment you might be used to.

While we had absolutely no issues setting up our environment, we wouldn’t be surprised if other people had problems onboarding this service.

The mitigating factor in all of this is the amazing support you get – you’ll find that you will never have to go through this experience alone.

In fact, we highly recommend that you don’t go it alone. It’s best to discuss your onboarding experience with your technical representative or support agent, so that you can be sure to get things up and running nicely as quickly as possible – shortening your learning curve as much as possible.

Imposed Limitations

A custom environment and platform and the way that servers are set up means that WPE cannot afford to have customers who can roam around freely, testing and tearing things apart as suits their needs. One rogue plugin or setup could, in theory, affect the whole server – so the service takes a drastic approach to this.

It imposes limitations on what is permissible on the service.

For example, certain plugins are disallowed on their platform. You’ll notice that caching plugins, backup plugins, some security plugins, heavy plugins such as Related Posts and a few others are banned.

Now, once again, we do believe most of these functions have already been catered for by the service. And it is a good idea for plugins will kill performance to be outright banned – after all, an uninformed user could potentially create serious bottlenecks which could kill performance for a whole set up.

Again, we do believe that the overall effect of this is positive for ALL the customers of WPE.

Yet, if your website has a specific dependency on one of the plugins, you’ll need to find ways and means to go around this or find a different resolution.

Disallowed plugins

Disallowed plugins

Other limitations coming in the form of the following:

  • Limited bulk mailing – a fair limitation given that you don’t want one customer getting the server’s IP on a spam list.
  • Only available for hosting WordPress – given the name of the service, we think this is an acceptable limitation
  • Number of visits – as your traffic grows you’ll have to shift from one plan to the other. Granted for most users, growing traffic means growing revenue, so this shouldn’t be much of an issue for most customers.

Why should you choose managed WordPress hosting?

With the growth of the internet in general, came the huge huge growth of WordPress as a framework but powering websites.

And success, of course, brings along plenty of people who are ready to jump on the band-wagon and piggy-back on the success of others.

As the CMS platform of choice grew, host companies evolved from offering a generic environment giving you the components you need to power a website, such as a LAMP stack (Linux, Apache, MySQL, PHP), to offering WordPress specific hosting.

In general, what this means is that, the environment is tuned specifically to cater for the CMS. So rather than having a one size fits all environment, companies have all now started to offer specialized server environments which are particularly tuned and optimized to cater for WP.

Not only that, but you also have companies developing an expertise in WordPress in general, such that you, as the owner of a website, will handle the content per se, but you don’t need to worry about the underlying platform, or any other technical issues which are outside of your expertise.

Speed, support, tuning, optimizations, caching, upgrades and updates are all handled by the company where the website is being hosted.

This takes away a lot of the burden from the owner, at a price which is slightly higher than regular hosting places.

But there’s plenty of confusion in the marketplace too.

All hosts are now actually offering WP-specific hosting, making it very difficult to make a decision between good hosts, and ones which are in it for the opportunity. Both the smaller brands and the bigger brands such as GoDaddy, HostGator, SiteGround, InMotion and other large companies now offer their own flavor of “WordPress hosting”.

WP Engine is one of the few companies who is dedicated WordPress-only. This, by definition, makes them much more specialized than any of the others competing in this niche.

All of the hosts will vary in the services provided by them. Some will just provide training in the framework to their tech support. Some will go deeply technical and offer stuff such as server-side features and testing environments for your websites and applications.

But the real managed WordPress Hosting is where you are not only buying the server space to host your site – but rather you have the services associated with keeping the actual site online and working optimally.

Essentially, a Managed hosting services means the company offers specific services tailored to WP at a higher price point, so that the owner can stay focused on the website content / functionality, rather than on the technical aspects of the site.

We are making this clear for a very simple reason – you cannot compare a generic hosting plan with a plan such as that provided by a managed host.

Rather than aggregating user-generated WP Engine reviews based on personal positive and negative one-off experiences, we take a different approach. We look at the good things and not so good things about WPEngine and see where and for whom this hosting is suitable.

Final thoughts

If you’ve been around CollectiveRay for a while, you’ll know that we are obsessed with speed. Simply put, you never notice the performance of a website, because good websites are fast – full stop. It’s just one of those things (besides design) which makes a website feel reliable, a pleasure to browse around and visit again and again.

And that is the price and beauty of performance – your fast website will earn you more revenue in the long run. In this WP Engine review, we’ve showed you how this service is primed for making your website blazingly fast, WITHOUT the technical costs and time typically associated with this. While we feel that the service might have a few drawbacks when compared to apples to apples to other hosts, doing this kind of comparison is really and truly a mistake.

If you want a fast, reliable, hosting service where you just want to handle the “content” of the website, not the technical nitty gritty of running the engine, then you will be well and truly served with WPE. You have a 60-day, full money back guarantee, so if you don’t find them to your liking, you’ve lost absolutely nothing, but in all probability, you’ve got MUCH to gain when you experience this platform!

Migrate your website to WP Engine and enjoy (20% OFF until )

jm-shell – A Highly Informative and Customized Bash Shell

jm-shell is a free open source, small, highly informative and customized Bash shell, that gives you a great wealth of information about your shell activity as well as certain useful system information such as system load average, battery status of laptops/computers and much more.

Importantly, unlike Bash which only stores unique commands in a history file, for searching previously run commands – jm-shell records each and every shell activity in a log file.

Read Also: The Power of Linux “History Command” in Bash Shell

In addition, if your current directory is a code repository for any version control systems such as Git, Subversion, or Mercurial, it will provide information about your repositories (such as active branch).

jm-shell Preview

jm-shell Preview

Jm-shell Features

  • Has a status line (divider) to separate commands.
  • Displays the number of items in current directory.
  • Shows current location in the filesystem.
  • It maintains a shell log file – full history of your shell activity.
  • Displays current system load average if higher than, in red if critical (higher than 2).
  • Shows the time last command finished.
  • It prints an error code of last command, if any.
  • Displays total time of last command if higher than 4 seconds.
  • Has a prompt in the form; [email protected]:path.
  • Supports multiple prompt styles.
  • Supports background jobs.
  • It also displays laptop battery charge status, in case it’s not full and many other features.

How to Install jm-shell in Linux Systems

To install most recent version of jm-shell, you need to clone git repository of jm-shell sources to your system and move into the local repository using following commands.

$ git clone https://github.com/jmcclare/jm-shell.git
$ cd jm-shell

Next, configure Bash to use jm-shell by creating or copying a symlink from ps1, colors.sh, and color_unset.sh to the directory ~/.local/lib/bash (you need to create this directory if it doesn’t exist) as shown.

$ mkdir ~/.local/lib/bash #create the directory if it doesn’t exist $ cp -v colors.sh colors_unset.sh ps1 -t ~/.local/lib/bash/
Configure Bash to Use jm-shell

Configure Bash to Use jm-shell

Then source the ps1 file by adding the following line in your ~/.bashrc shell initialization file.

source ~/.local/lib/bash/ps1

Then use the prompt_style variable in your ~/.bashrc to set your prompt styles (available styles include standard, tweaked, extensive, minimal or kirby) as shown.

Source PS1 and Set Prompt Style

Source PS1 and Set Prompt Style

Save and close ~/bashrc file, then source it to see the changes.

$ source ~/.bashrc
jm-shell for Linux

jm-shell for Linux

To change the shell log file location (default is ~/.local/share/bash/shell.log), use the BASHSHELLLOGFILE variable in ~/.bashrc file.


For more information, go to the jm-shell Github Repository: https://github.com/jmcclare/jm-shell

jm-shell is a highly informative tool that includes set of scripts for customizing your Bash shell, with numerous practical and informative features for daily usage. Try it out and give us your feedback via the comment section below.

Linux Fun – Play Old Classic Snake Game in Linux Terminal

enableHover: false,
enableTracking: true,
buttons: { twitter: {via: ‘tecmint’}},
click: function(api, options){
share: {
facebook: true
template: ‘{total}’,
enableHover: false,
enableTracking: true,
click: function(api, options){
share: {
googlePlus: true
template: ‘{total}’,
enableHover: false,
enableTracking: true,
urlCurl: ‘https://www.tecmint.com/wp-content/themes/tecmint/js/sharrre.php’,
click: function(api, options){
share: {
linkedin: true
template: ‘{total}’,
enableHover: false,
enableTracking: true,
buttons: {
linkedin: {
description: ‘Linux Fun – Play Old Classic Snake Game in Linux Terminal’,media: ‘https://www.tecmint.com/wp-content/uploads/2018/05/Play-Snake-Game-in-Linux-Terminal.png’ }
click: function(api, options){
// Scrollable sharrre bar, contributed by Erik Frye. Awesome!
var shareContainer = jQuery(“.sharrre-container”),
header = jQuery(‘#header’),
postEntry = jQuery(‘.entry’),
$window = jQuery(window),
distanceFromTop = 20,
startSharePosition = shareContainer.offset(),
contentBottom = postEntry.offset().top + postEntry.outerHeight(),
topOfTemplate = header.offset().top;
shareScroll = function(){
if($window.width() > 719){ var scrollTop = $window.scrollTop() + topOfTemplate,
stopLocation = contentBottom – (shareContainer.outerHeight() + topSpacing);
if(scrollTop > stopLocation){
shareContainer.offset({top: contentBottom – shareContainer.outerHeight(),left: startSharePosition.left});
else if(scrollTop >= postEntry.offset().top-topSpacing){
shareContainer.offset({top: scrollTop + topSpacing, left: startSharePosition.left});
}else if(scrollTop 1024)
topSpacing = distanceFromTop + jQuery(‘.nav-wrap’).outerHeight();
topSpacing = distanceFromTop;

Fedora 28 Workstation Install Guide

This is guide with screenshots, howto install Fedora 28 (F28) using Live DVD or Live USB. Fedora 28 Installation can be done also with using Fedora NetInstall (Net Install) with gPXE and BFO (boot.fedoraproject.org).

1. Before Fedora 28 Installation

1.1 Download Fedora 28 Live DVD/USB Image

Download Fedora 28 here.

Select your version, Fedora 28 Workstation, (Fedora 28 Server). On this guide I use Fedora 28 Workstation 64-bit.

1.2 Burn Fedora 28 Image to DVD, Create Live USB or use image directly and Boot Computer Using Fedora 28 Installation Media

Remember to check Fedora 28 image MD5 sum and then burn image to DVD, create Live USB example with liveusb-creator, dd or use directly on virtual environment. And boot computer using Fedora 28 Installation Media.

2. Fedora 28 Installation

2.1 Fedora 28 Boot Option Menu

Fedora 28 Install Grub

2.2 Start Fedora 28 Installation Click Install to Hard Drive

Fedora 28 Install To Hard Drive

2.3 Select Language

Fedora 28 Install Welcome to Fedora 28

2.4 Fedora 28 Workstation Installation Summary Window

Fedora 28 Install Installation Summary

2.5 Setup Date and Time

Fedora 28 Install Setup Date and Time

2.6 Setup/check NTP Servers

Fedora 28 Install NTP Servers

2.7 Setup Keyboard Layout

Fedora 28 Install Keyboard Layout

2.8 Select Installation Destination and Storage Configuration

Fedora 28 Install Installation Destination

2.9 Full Disk Summary and Bootloader Configuration

Fedora 28 Install Full Disk Summary

2.10 Modify Partitions Manually

Fedora 28 Install Manual Partitioning

Fedora 28 Install Manual Partitioning 2

2.11 Accept Changes

Fedora 28 Install Manual Partitioning Summary of Changes

2.12 Begin Fedora 28 installation

Fedora 28 Install All Done Begin Install

2.13 Package Installation

Fedora 28 Install Installer installing 1

2.14 Installing Software

Fedora 28 Install Installer Installing 2

2.15 Fedora 28 Installation Done

Then simply reboot/restart computer and remove installation media
Fedora 28 Install Installer Succesfully Installed

Fedora 28 Install Restart to Finish Installation

3. Finishing Fedora 28 Installation

3.1 Fedora 28 Boot Menu (Grub 2)

Fedora 28 Install Grub Boot to Installed System

3.2 Fedora 28 Install Welcome

Fedora 28 Install Welcome

3.3 Fedora 28 Install Online Accounts

Fedora 28 Install Online Accounts

3.4 Fedora 28 Install Privacy

Fedora 28 Install Privacy

3.5 Fedora 28 Install About You / Create User

Fedora 28 Install About You Create User

3.6 Fedora 28 Install Set a Password

Fedora 28 Install Set a Password

3.7 Fedora 28 Install Ready to Go

Fedora 28 Install Ready to Go

3.8 Fedora 28 GDM Login Window

Fedora 28 Install GDM Login Screen

3.9 Fedora 28 Getting Started

Fedora 28 Install Getting Started

3.10 Fedora 28 Desktop Screenshots

Fedora 28 Gnome Shell 3.28.1 Plain

Fedora 28 Install Plain Desktop

Fedora 28 Gnome 3.28.1 Details

Fedora 28 Install Desktop Details

What to do next?

Install nVidia Drivers on Fedora 28

Install Google Chrome on Fedora 28

Install LAMP (Linux, Apache, MySQL/MariaDB, PHP) on Fedora 28

Install LEMP (Linux, Nginx, MySQL/MariaDB, PHP) on Fedora 28

Install Adobe Flash Player on Fedora 28

Install Oracle Java (JDK, JRE) 8 on Fedora 28

Install VirtualBox (with yum) on Fedora 28

Install PostgreSQL 10.0 on Fedora 28

Install MariaDB 10.2 on Fedora 28

Install Memcached on Fedora 28

How to Install and Use Yaourt in Arch Linux

Yaourt (Yet Another User Repository Tool) is an advanced command line tool for installing packages on Arch Linux. It is a powerful wrapper for Pacman, the standard package management utility for Arch Linux with extended features and remarkable AUR (Arch Linux User Repository) support.

It is used to search, install and upgrade packages from AUR interactively, supports checking conflicts and dependency resolution. It can display colored output, show information about available packages, allows you to query packages based on different options, supports building packages directly from AUR or ABS (Arch Build System) source.

Yaourt is also used to manage backup files (typically .pac* files), query directly from a backup file; it can save and restore alpm databases, test local databases and also search orphaned packages. In addition, it supports splitting packages, and can sort packages by installation date and so much more.

Unfortunately, Yaourt doesn’t exist in the official package repository of Arch Linux Installation. You need to manually install Yaourt on Arch Linux using following two different ways.

Method 1: Install Yaourt in Arch Linux Using AUR

This method is a little longer, if you want a quick way of installing Yaourt, then check out the second method. Here, you need to start by installing all required packages as shown.

$ sudo pacman -S --needed base-devel git wget yajl
$ cd /tmp
$ git clone https://aur.archlinux.org/package-query.git
$ cd package-query/
$ makepkg -si && cd /tmp/
$ git clone https://aur.archlinux.org/yaourt.git
$ cd yaourt/
$ makepkg -si

Method 2: Install Yaourt in Arch Linux Using Custom Repository

Begin by adding the custom repository to the pacman package manager repository list.

$ sudo /etc/pacman.conf

Copy and paste the following custom repository configuration in the file.

SigLevel = Never
Server = http://repo.archlinux.fr/$arch

Save the changes and exit the file. Then issue the following command to install yaourt.

$ sudo pacman -Sy yaourt

How to Use Yaourt Package Manger in Arch Linux

1. To install or update a package, for example glances, use the -S as shown.

$ sudo yaourt -S glances

2. To remove the package, use the -R flag as shown.

$ sudo yaourt -R glances

3. You can upgrade installed packages with the -U option as shown.

$ sudo yaourt -U target_here

4. To query the local database of packages, use the -Q flag.

$ sudo yaourt -Q | less

5. The next command is used to gather and show info about installed packages as well as configured repositories on a Arch Linux system.

$ yaourt --stats

6. You can sync the pacman package databases with the following command.

$ sudo yaourt -Sy

For more information, refer to the yaourt man page.

$ man yaourt

That’s it! In this article, we have explained two ways of installing Yaourt package management tool in Arch Linux. Use the comment form below to share any queries or thoughts with us.

Introducing mod_cpanel

As of the second cPanel & WHM Targeted Security Release of 2018 (TSR-2018-0002), the Optimize .htaccess feature was removed from all supported cPanel & WHM versions. This difficult decision was the result of some security concerns with its implementation. In its place, we have released the mod_cpanel Apache module. This module will begin to improve upon the features that Optimize .htaccess provided.

What is Optimize .htaccess and why is cPanel replacing it?

When we released it, Optimize .htaccess was a function that was intended to boost server performanceIt accomplished that using the AllowOverride directive to reduce the number of paths that Apache checks for .htaccess files. Unfortunately, the functionality was not safe enough for shared hosting customers. There was a possibility of breaking rewrite/redirects, PHP inheritance, among many other things.

We’ve been working to replace the Optimize .htaccess feature with an Apache module (mod_cpanel).

What does mod_cPanel give me as a hosting provider?

mod_cpanel provides a speed boost in two ways. Like Optimize .htaccess, it skips directory paths (/.htaccess, /home/.htaccess, /home/$user/.htaccess, etc) that have already been checked by Apache. New to cPanel is Negative Stat Caching. The mod_cpanel module will perform caching of .htaccess files that do not exist.

Based on our testing, the new style of .htaccess caching enabled by mod_cpanel provides a small performance improvement of about 2-4% faster response times in serving static content.

In mod_cpanel’s current iteration, newly created .htaccess files may not get picked up immediately. The cache is refreshed when any of the Apache child processes are restarted. If Apache has already read from that directory, it may be necessary to perform a graceful restart of the Apache service. Once that has been done, Apache will process this newly added file. Future releases of mod_cpanel will improve that integration, preventing the need to restart Apache.

How do I take advantage of mod_cpanel?

To install mod_cpanel, simply add ‘ea-apache24-mod_cpanel’ to your EasyApache 4 profiles. You can do this by installing the module via the WHM EasyApache 4 interface, or via yum. There are further instructions and explanations included in the mod_cpanel Apache module documentation.

If you have any questions leave a comment below or reach out to us via the cPanel Forum, or open a support ticket with our technical support team!

If you’d rather talk in-person, you can join us at this year’s cPanel Conference, from October 1st – 3rd in Houston, Texas.

How to Password Protect Single User Mode in CentOS 7

In one of our earlier articles, we described how to boot into single user mode on CentOS 7. It is also known as “maintenance mode”, where Linux only starts a handful of services for basic functionality to allow a single user (typically a superuser) perform certain administrative tasks such as using fsck to repair corrupted filesystems.

In single user mode, the system executes a single-user shell where you can run commands without any login credentials (username and password), you land straight in a limited shell with access to the entire filesystem.

This is a massive security hole since it gives intruders direct access to a shell (and possible access to the the entire filesystem). Therefore, it’s important to password protect the single user mode on CentOS 7 as explained below.

In CentOS/RHEL 7, the rescue and emergency targets (which are also single-user modes) are password protected by default.

For example when you try to change the target (runlevel) via systemd to rescue.target (also emergency.target), you will be asked for a root password as shown in the following screenshot.

# systemctl isolate rescue.target
# systemctl isolate emergency.target
Single User Mode in CentOS 7

Single User Mode in CentOS 7

However, if an intruder has physical access to a server, he or she can select a kernel to boot from the grub menu item by pressing e key to edit the first boot option.

On the the kernel line that starts with “linux16“, he/she can change the argument ro to “rw init=/sysroot/bin/sh” and boot into single user mode on CentOS 7 without the system asking for a root password, even if the line SINGLE=/sbin/sushell is changed to SINGLE=/sbin/sulogin in the file /etc/sysconfig/init.

Change CentOS Boot Options

Change CentOS Boot Options

So, the only way to password protect single user mode in CentOS 7 is to protect GRUB with password using the following instructions.

How to Password Protect Grub in CentOS 7

First create a strong encrypted password using grub2-setpassword utility as shown.

# grub2-setpassword
Create Encrypted Password for GRUB

Create Encrypted Password for GRUB

The Hash for the password is stored in /boot/grub2/user.cfg & user i.e.”root” is defined in /boot/grub2/grub.cfg file, you can view the password using cat command as shown.

# cat /boot/grub2/user.cfg
GRUB Password

GRUB Password

Now open /boot/grub2/grub.cfg file and search for the boot entry that you want to password protect, it starts with menuentry. Once the entry is located, remove the --unrestricted parameter from it.

Password Protect Grub in CentOS 7

Password Protect Grub in CentOS 7

Save the file and close, now try to reboot the CentOS 7 system and modify the boot entries by pressing e key, you will be asked to provide the credentials as shown.

Password Protected Grub

Password Protected Grub

CentOS 7 Boot Configuration

CentOS 7 Boot Configuration

That’s it. You have successfully password protected your CentOS 7 GRUB-menu.

Are you coming to cPConf 2018?

The Annual cPanel Conference is a staple in the webhosting community. Last year’s conference was such a blast! We met so many new people and got to catch up with all our old friends. The details of this year’s cPanel Conference (October 1-3, in Houston, Texas) are falling into place, and we’re looking forward to having you join us!

Who will be there?

Companies and disciplines from every corner of the hosting industry will be represented. WHMCS, SiteLock, CloudLinux, LiteSpeed, and BoldGrid have all returned to support the conference for another year.

Last year we saw nearly 300 attendees and, though it’s still quite early in the registration window, this year we’re on track to exceed last year’s numbers! We already have registered attendees from seven different countries, and we don’t even have a list of speakers!

Being in our backyard, this conference will also have one of the strongest contingents of cPanel employees ever. Technical Analysts, Developers, Quality Assurance, Documentation, and much more!

Speak at cPanel Conference 2018!

Once again this year we’re opening up the call for talks to the entire world. If you haven’t yet, take a look at the format we’re using this year. We’re accepting both 20-minute and 50-minute submissions, giving our speakers more flexibility and helping our attendees get even more value.

We’re only accepting talk submissions until May 31st, so get yours in today!

Get in early, and stay for the parties.

The cPanel Conference wouldn’t be complete without the amazing evening networking events. We’re kicking off the conference with Monday night at Chapman & Kirby. If you stay with us at the Westin Galleria (the best room rates will expire September 9th), you’ll get free door-to-door service in our stylish and comfortable chartered busses.

Have questions? Let’s chat!

Since we’re building out the cPanel Community team so well, we’ve decided to open up the avenues of communication a bit! For the next day or so you can join us on Slack or Discord with any questions you’ve got!

See you in October!