Sunday, 11 November 2012

Optimize a Linux VPS with Apache and PHP

Apache Optimization

 To start, open the Apache configuration file and finding the directives section. On a cPanel server, it will be located in /usr/local/apache/conf/. On a Plesk server, it will be in /etc/httpd/conf/. If you are using vi or vim: once you open the file, you can find the directives by scrolling through the file, or by typing forward-slash ‘/’ and typing the exact string that you are looking for (search is case specific).

[root@host /] vim /usr/local/apache/conf/httpd.conf
or
[root@host /] vim /etc/httpd/conf/httpd.conf
This list is a composite of the settings we will be reviewing from fresh install on a cPanel server:
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 0



Timeout
Timeout 300
Usually this value doesn’t require editing and a default of 300 is sufficient. Lowering the ‘Timeout’ value will cause a long running script to terminate earlier than expected.
On virtualized servers like VPS servers, lowering this value to 100 can help improve performance.

KeepAlive
KeepAlive On
This setting should be “On” unless the server is getting requests from hundreds of IPs at once.
High volume and/or load balanced servers should have this setting disabled (Off) to increase connection throughput.

MaxKeepAliveRequests
MaxKeepAliveRequests 100
This setting limits the number of requests allowed per persistent connection when KeepAlive is on. If it is set to 0, unlimited requests will be allowed.
It is recommended to keep this value at 100 for virtualized accounts like VPS accounts. On dedicated servers it is recommended that this value be modified to 150.

KeepAliveTimeout
KeepAliveTimeout 15
The number of seconds Apache will wait for another request before closing the connection. Setting this to a high value may cause performance problems in heavily loaded servers. The higher the timeout, the more server processes will be kept occupied waiting on connections with idle clients.
It is recommended that this value be lowered to 5 on all servers.

MinSpareServers
MinSpareServers 5
This directive sets the desired minimum number of idle child server processes. An idle process is one which is not handling a request. If there are fewer spareservers idle then specified by this value, then the parent process creates new children at a maximum rate of 1 per second. Setting this parameter to a large number is almost always a bad idea.
Liquidweb recommends adjusting the value for this setting to the following:
Virtualized server, ie VPS 5
Dedicated server with 1-2GB RAM 10
Dedicated server with 2-4GB RAM 20
Dedicated server with 4+ GB RAM 25
MaxSpareServers
MaxSpareServers 10
The MaxSpareServers directive sets the desired maximum number of idle child server processes. An idle process is one which is not handling a request. If there are more than MaxSpareServers idle, then the parent process will kill off the excess processes.
The MaxSpareServers value should be set as double the value that is set in MinSpareServers.

StartServers
StartServers 5
This directivesets the number of child server processes created on startup. This value should mirror what is set in MinSpareServers.

MaxClients
MaxClients 150
This directive sets the limit on the number of simultaneous requests that will be served. Any connection attempts over the specified limit will be queued. Once a process is freed at the end of a different request, the queued connection will then be served.
For virtualized servers such as VPS accounts, it is recommended to keep this value at 150. For all dedicated servers the recommended value for this setting is 250.
MaxRequestsPerChild
MaxRequestsPerChild 0
This directive sets the limit on the number of requests that an individual child server process will handle. After the number of requests reaches the value specified, the child process will die. When this value is set at 0, then the process will never expire.
Liquidweb recommends adjusting the value for this setting to the following:
Virtualized server, ie VPS 300
Dedicated server with 1-4GB RAM 500
Dedicated server with 4+GB RAM 1000

 you would need to run the distiller after editing the httpd.conf file:
/usr/local/cpanel/bin/apache_conf_distiller --update
=======================================================================================
 

cPanel PHP Optimization / Hardening


You can  start customizing the php configuration file, that’s php.ini.
or
 From cPanel WHM navigate to: Main >> Service Configuration >> PHP Configuration Editor
And click on “Switch to Advanced Mode”.
Now configure it as bellow:
# You should change the memory limit value with what suits your needs
memory_limit 64M
register_globals off
# You should change the uload max filesize value with what suits your needs
upload_max_filesize 64M
upload_tmp_dir /tmp
display_errors off
# This option may cause problems for badly written scripts
allow_url_fopen off
session.save_path /tmp
magic_quotes_gpc off
 
 Navigate to: Main >> Security Center >> PHP open_basedir Tweak
Make sure “Enable php open_basedir Protection.” is enabled and click “Save”.
 

 

 
 

Monday, 29 October 2012

Add Multiple shared IPs in WHM

First, you need to create a /var/cpanel/mainips/ directory, if it doesn’t exist:

mkdir /var/cpanel/mainips/
 
Then, create a /var/cpanel/mainips/root file, with the following content:

1.2.3.4
3.4.5.6
 
Basically, each line is an additional shared IP in WHM. That’s it!

Sunday, 28 October 2012

Change main shared IP of cpanel server

You can setup your main shared IP from

WHM >> Main >> Server Configuration >> Basic cPanel/WHM Setup >> Main Shared Virtual Host IP

and you can see your ip address usage from :

WHM >> Main >> IP Functions >> Show or Delete Current IP Addresses

Sunday, 21 October 2012

Invalid kernel, or some kernel modules are not loaded

#vzlist -a | grep IP
ID         -stopped   IP   servername

#vzctl start ID

Invalid kernel, or some kernel modules are not loaded
Container start failed (try to check kernel messages, e.g. “dmesg | tail”)

 The first thing you need to check is if vz service is functional OR not. To start, use command as below.

 /etc/init.d/vz start
All the containers/VPS will start one by one.
It might be that vz service is not set to On when server boots. You can check it with command as below.
chkconfig –list | grep vz
If it’s set to Off, you need to switch it On with command below.
chkconfig on vz

Sunday, 7 October 2012

Hide the Apache Version via httpd.conf

Open your httpd.conf file using text editor such as vi:
   
vi httpd.conf

 Append/modify config directive as follows:

ServerTokens ProductOnly
ServerSignature Off

 Save and close the file. Restart Apache web server:

 # /etc/init.d/httpd restart

Hiding Apache server versions and OS details via Webmin

These simple steps will help you if you use Webmin

1. Log into Webmin
2. From the navigation onthe left click on "Servers"

3. Click on "Apache Webserver" from expanded list
4. Click on "Global configuration" tab
5. Click on the "Miscellaneous" icon
6. From "Server HTTP header" option, select: Product only.

7. Click "Save"
8. Then from the top right corner of the next screen click "Apply Changes" to make the changes live.

Monday, 1 October 2012

How to Enable and Disable Website Maintenance Mode in plesk

If Maintenance mode is swich on, your site may offline. You may get error similar to code error like 'Calling LoadLibraryEx on ISAPI filter'  when view site through a browser.

You can view this error "Maintenance mode is swich on, your site may offline"  near the domain name under 'Websites and domain'  section on plesk contrl panel.


To switch on the maintenance mode for a website to suspend a site temporarly:
  1. Go to the Websites & Domains tab.
  2. Click Website Maintenance Mode (in the Advanced Operations group).
  3. If you have several websites, locate the site you want to temporarily suspend, and click the corresponding Manage link.
  4. Select the Switch on the maintenance mode for website checkbox.
  5. Click OK.
If the custom error documents option is switched on for the site, then you can edit the "503 Service Temporarily Unavailable" document to include your own text




To switch off the maintenance mode and put a site back online:
  1. Go to the Websites & Domains tab.
  2. In the list of your websites, locate the website you want to put back online. It should be accompanied by the Switched off for maintenance status indicator.
  3. Click the corresponding Change link.
  4. Clear the Switch on the maintenance mode for website checkbox.
  5. Click OK.