22 Feb 2018

How to enable Varnish in cPanel server

Varnish is a caching technology. Varnish is a web accelerator and also referred as HTTP accelerator or reverse HTTP proxy, which will significantly enhance the performance of your website. Varnish cache is really fast thereby, speed up the delivery depending on your architecture.

Varnish enhance your website’s performance. Varnish stores a copy of the page which is served by the web server the first time a user visits the website. Next time, when the user requests for the same page, varnish will serve the copy instead of serving it from the web server. Thus, your webserver needs to handle only less traffic and there by increase the website performance and also reduce the server load.


Working of Varnish Cache

Once Varnish is installed in your server, it will listen in the port 80. Make Apache to listen in any other port other than 80. When a client requests for a page in your website, Varnish will try to serve the page from its cache memory. This is cache hit. If the page is not in its cache memory, then Varnish will request to HTTP (Apache) to serve the page and caches it for future reference.

Features of Varnish

1. Reduces the server load
2. High speed (cache + stored in RAM)
3. Useful to gain more visitors


1. Make Apache listen in any other port other than 80. Here I am making Apache to listen in port 8080. It can be done in two ways. Either editing the httpd.conf file or editing the Tweak settings in WHM

a) Editing httpd.conf file

# vi /usr/local/apache/conf/httpd.conf

Locate the following line in /usr/local/apache/conf/httpd.conf file and change the port from 80 to 8080


Once edited, the Apache config file for “Listen” should be as follows:

# grep -iw listen /usr/local/apache/conf/httpd.conf


b) Editing WHM – Tweak settings

WHM > Tweak Settings > Apache non-SSL IP/port

Set the port to 8080 and save the settings.

# grep VARNISH_LISTEN_PORT /etc/sysconfig/varnish

5. Edit Varnish config: /etc/varnish/default.vcl . Correct the IP address in this file to your IP address and port to 80

backend default {
  .host = "YOUR IP ADDRESS";
  .port = "80";

6. Start Varnish service on your server

# chkconfig varnish on
# service varnish start
# service varnish start
Starting Varnish Cache:                                    [  OK  ]

That’s it!!

You can check this by using the netstat command.

#netstat -plan | grep :80


# netstat -plan | grep :80
tcp        0      0        *                   LISTEN      15129/varnishd      
tcp        0      0      *                   LISTEN      12897/httpd        

Now, you can start monitor your Varnish with varnishstat


If you need to change your Varnish configuration file and you can test the configuration before restarting Varnish service by

# varnishd -C -f /etc/varnish/default.vcl

Note: While doing “yum install varnish” if you are getting libedit error, then follow the steps below:

varnish-3.0.5-1.el5.centos.x86_64 from varnish-3.0 has depsolving problems
  --> Missing Dependency: libedit.so.0()(64bit) is needed by package varnish-3.0.5-1.el5.centos.x86_64 (varnish-3.0)
Error: Missing Dependency: libedit.so.0()(64bit) is needed by package varnish-3.0.5-1.el5.centos.x86_64 (varnish-3.0)
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.

In this case, you need to install the libedit rpm which is suitable for your architecture. You can find the rpm from http://rpmfind.net/linux/rpm2html

# wget ftp://rpmfind.net/linux/dag/redhat/el5/en/x86_64/dag/RPMS/libedit-20090923-3.0_1.el5.rf.x86_64.rpm
# rpm -ivh libedit-20090923-3.0_1.el5.rf.x86_64.rpm


# rpm -ivh libedit-20090923-3.0_1.el5.rf.x86_64.rpm
warning: libedit-20090923-3.0_1.el5.rf.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing...                ########################################### [100%]
   1:libedit                ########################################### [100%]


Share this
21 Feb 2018

How to create MySQL database and user from command line

This is actually the base of MySQL command usage. By the help of a control panel we can simply create a database, create DB users, edit variables, set previeages etc. But in some situations it is necessary to manage these MySQL options via command line. Here I am explaining the commands for creating database and database user form command line.

Enter the mysql prompt by following the step below:

# mysql -u root -p

It then prompts for password. Enter the MySQL root password.


root@serversupportz[/]# mysql -u root -p
Enter password:

MySQL command to create a DB(Database).

mysql> CREATE DATABASE name_of_the_database;


mysql> CREATE DATABASE serversupportz_wp;
Query OK, 1 row affected (0.04 sec)

You can verify it by:


MySQL command to create a DB user.

mysql> CREATE USER name_of_the_database_user;


mysql> CREATE USER serversupportz_wp;
Query OK, 0 rows affected (0.07 sec)

You can find out the details of all users from mysql.user file:

mysql> select user from mysql.user;
mysql> select host, user, password from mysql.user;
mysql> select * from mysql.user;

Access the database

mysql> use name_of_the_database;


mysql> use serversupportz_wp
Database changed

That’s it 🙂

Share this
15 Feb 2018

How to Migrate Email from cPanel to cPanel

When transferring accounts between servers, transferring of email accounts is quite different. Transferring data from one server to another is technically called migration even if it is full website or email accounts or databases. When you perform a full website migration of a cPanel account, you do not need to migrate the emails manually. The cPanel transfer will migrate the email accounts also. As we know, there can be DNS propagation after a DNS change when you migrate your website. In the DNS propagation time, some of the emails coming to your email address may be directed to the old server and some of them to the new server. It should be ensured that you do not loss any valuable emails. This is what makes the email migration different from other migrations. Let’s see how the email account transfer is done for both cPanel and non-cPanel accounts.

Email Migration

Email migration can be performed in two ways. You can either utilize the cPanel interface or use the command line prompt.

In this article we are going to take a look on how to perform the migration in cPanel in order to navigate this process.

Follow the ensuing steps below:

Step 1: Backing up email directories

The first step in the email migration is to backup email directories present in the old server.

1) Login to cPanel interface for the account in question in the old server.

2) Open ‘File Manager’ under the section ‘Files’.



3) Go ‘Up One Level’ above public_html.



4) You can see the mail directory there. Enter into the directory.



5) Right click on the directory and click on the option available to compress the directory.

6) Now, download the compressed file to your computer.

Step 2: Restore email backups

1) Login to the cPanel interface of the new server.

2) Create the email accounts just as you did in the old server. You can create email accounts from the ‘Email Accounts’ section under the ‘Mail’ category.

3) Open ‘File Manager’ under the section ‘Files’.

4) Go ‘Up One Level’ above public_html and you can see the mail directory there. Enter into the directory.

5) Upload the email backup file to the directory.

6) Unzip the backup file and the delete the zip file.

7) Open Webmail and configure it to display the new email folders.

If you need any further assistance please contact our support department.

Share this
14 Feb 2018

Changing document root of website using .htaccess

By default the document root of your website on a cPanel based server is /home/$username/public_html . At the time anyone search your domain from there own end the site displays the index page from default location. That means from public_html folder. Here I’m explaining the way to change this default folder. That means you can customize the DNS fetching(Index page fetching) from your own folder.
This is possible via .htaccess. You will need to add the following code in your .htaccess file:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$ 
RewriteCond %{REQUEST_URI} !folder/
RewriteRule (.*) /folder/$1 [L]

Replace ‘domain.com’ with your domain name and ‘folder’ with your custom folder name where you kept the index

Thats it.

Share this
12 Feb 2018

MySQL script for Performance tuning

What is MySQL performance tuning and what does it mean ?

MySQL has a lot of variables in its configuration. We can edit and set/alter variables to our requirements on our server. We can improve the MySQL performance by varying those values in configuration file. A lot of methods and shell scripts are available for tuning your MySQL server. Here I am explaining the installation and usage of one shell script for tuning the MySQL.

This performance tuning shell script will help you to optimize your MySQL server on a huge traffic cPanel server.

Installation steps

The MySQL tuner has simple installation steps. You can download the latest version from HERE.

Step I : SSH to your server as root user.
Step II : wget the latest version.

wget https://launchpad.net/mysql-tuning-primer/trunk/1.6-r1/+download/tuning-primer.sh

Step III : Change the file permission as executable.

chmod 755 tuning-primer.sh

Step IV : Execute the script.


See the attached image which has a sample tuner output.



That’s it 🙂

Share this
08 Feb 2018

Cronjob to delete all emails older than one month

Before starting with the cronjob script, we must know the locations where the emails stored in the server. Then we can go to the steps to remove them  Exactly there are three folders in a cPanel based server for managing received emails.

Those are cur, new, tmp. The main differences between these three are listed below

new : This is the folder where all emails are first received.
cur : Is the folder having emails that are opened/read by mail client.
tmp : Is the folder contains processed emails for delivery purpose.

In most cases these emails in the server cause high disk space usage in the server. We can remove older email by using different ways. Here I’m explaining the steps to remove emails older than one month from the server by the help of cron.

To clear old emails from the server means, remove email related files from cur folder under mails directory and all other mail user directory. There are cur and new directories under the mail folder for cPanel default mail and also the same in each users domain directory. ie /home/username/mail/domain.com/***/cur Here *** represents each mail user folder. (admin/ for admin@domain.com)

Step 1 : Creating an executable file with command to remove emails

For simplicity, create an executable file under anywhere (here I selected the location under root) and place the script to remove older mails.

Here I’m using the find command to find and remove mails which are older than 30 days (-mtime switch for finding mails older than 30 days.

[root@serversupportz]# touch mailcleaner.sh

Edit the file using your favorite file editor

[root@serversupportz]# vim mailcleaner.sh

find /home/username/mail/yourdomain.com/*/cur -type f -mtime +30 -exec rm -f {} \;

Then change that file to an executable one. (ie file permission to 755)

[root@serversupportz]# chmod 755 /root/mailcleaner.sh

Step 2 : Creating CRON job

Next step is to set the cronjob under root (for setting a cronjob refer this link). Here I’m setting the cron job to run every 1 day of the month.

[root@serversupportz]# crontab -e
 0 0 1 * * /root/mailcleaner.sh > /dev/null 2>&1
[root@serversupportz]# crontab -l : To list all cronjobs.

In this case the file mailcleaner.sh will execute first day of every month and remove all emails older than 30days.
Thank you.

Share this
06 Feb 2018

Script for checking MySQL database connection from web-browser

It’s very simple and interesting to check the MySQL database connectivity from your account without login as a root. Here is a script to do the same.  For checking the database connectivity, you must know the database hostname, normally it is “localhost” then database-name, username and password.

PHP Code:

mysql_connect('db_host', 'db_username', 'password') or die('Could not connect the database : Username or password incorrect');
mysql_select_db('db_name') or die ('No database found');
echo 'Database Connected successfully';

It’s very simple concept, first the “mysql_connect” argument will check the database hostname, username and password. If the first argument is true, then PHP take the second line to execute else the script will die with an output given in the Die section. Similarly, mysql_select_db check the database on the server. If both of the arguments are true then you will get an output given after the echo command.


1, If all of the input data(db_name, username, password, hostname) are right, then the output is like;

Database Connected successfully

2, If any of the entry in ‘mysql_connect’ secion is wrong, then the output is;

Could not connect the database : Username or password incorrect

3, If the database entry is wrong;

No database found

That’s it 🙂

Share this

©2018 Serversupportz Limited. All Rights Reserved.

Click Me