<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SupportSages &#187; Apache</title>
	<atom:link href="http://www.supportsages.com/blog/category/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.supportsages.com/blog</link>
	<description>Technical Support and Server Management : Musings in the fox hole.</description>
	<lastBuildDate>Thu, 05 Jan 2012 03:05:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Apache Performance Tuning (Part I/III) &#8211; Choosing the Best Platform for Apache</title>
		<link>http://www.supportsages.com/blog/2011/01/apache-performance-tuning-part-iiii-choosing-the-best-platform-for-apache/</link>
		<comments>http://www.supportsages.com/blog/2011/01/apache-performance-tuning-part-iiii-choosing-the-best-platform-for-apache/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 09:31:14 +0000</pubDate>
		<dc:creator>steve</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache performance]]></category>
		<category><![CDATA[tuning]]></category>
		<category><![CDATA[tuning apache]]></category>
		<category><![CDATA[tweaking]]></category>

		<guid isPermaLink="false">http://www.supportsages.com/blog/?p=1635</guid>
		<description><![CDATA[<!-- p { margin-bottom: 0.21cm; } --><span style="font-size: small;">Apache is a highly configurable software. Apache tuning can be learned effectively only by getting first hand experiences in live environments. But, all the knowledge in this world, before being put into practical usage, will need proper theoretical explanation and analysis. This is what this document intends to provide you with references from online articles and books on Apache.</span>

<span style="font-size: small;">Configuring Apache for maximum performance requires our interest in 2 areas:</span>

<span style="font-size: small;"><strong>i) Tuning Apache so that it exploits the maximum out of the system's available Hardware and Software.</strong> The term Hardware ...]]></description>
			<content:encoded><![CDATA[<p><!-- p { margin-bottom: 0.21cm; } --><span style="font-size: small;">Apache is a highly configurable software. Apache tuning can be learned effectively only by getting first hand experiences in live environments. But, all the knowledge in this world, before being put into practical usage, will need proper theoretical explanation and analysis. This is what this document intends to provide you with references from online articles and books on Apache.</span></p>
<p><span style="font-size: small;">Configuring Apache for maximum performance requires our interest in 2 areas:</span></p>
<p><span style="font-size: small;"><strong>i) Tuning Apache so that it exploits the maximum out of the system&#8217;s available Hardware and Software.</strong> The term Hardware signifies the system CPU, RAM and the disk I/O. Software signifies apache-modules and system OS. Be it software or hardware, I haveoverhead mentioned only those components which the apache software is in direct concern with.</span></p>
<p><span style="font-size: small;"><strong>ii)Tuning Apache so that it withstands attacks.</strong> Just imagine. All our above efforts in (i)would be in vain if the software is not properly configured to resist attacks such as DOS and even more undesirable, the DDOS. Web server administrators in trying to do so discovered that this itself was a vast area to study and explore and lead to a stream called as &#8216;Apache Security&#8217;. This is why I have placed apache tuning into 2 areas. </span></p>
<p><span style="font-size: small;">So we are now going to journey into the former part. Although, I will not be able to give you a comprehensive detail on each subject (which will require hundreds of pages!) I will try to throw light on some of the most important areas to cover. </span></p>
<p><span style="font-size: small;">The performance tuning of apache will be done in a few stages. These are:</span></p>
<p><span style="font-size: small;">1. Choosing the Best Platform for Apache</span></p>
<p><span style="font-size: small;">2. Editing the Apache Software for Performance</span></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		H3 { margin-bottom: 0.21cm } --><span style="font-size: small;">From Part I through Part III, I have references from:</span></p>
<p><span style="font-size: small;"><em>- FMC – The Apache Modelling Project</em></span></p>
<p><em><span style="font-size: small;">- Pro Apache by Peter Wainwright</span></em></p>
<p><em><span style="font-size: small;">- http://perl.apache.org/docs/1.0/guide/performance.html</span></em></p>
<p><span style="font-size: small;">Lets discuss the former part.</span></p>
<p><span style="font-size: small;">A fine performing and well tuned software is of no use unless it has a good foundation to work on. It must have the best suited combination of both the Hardware &amp; Software(primarily the OS). Below I attempt to discuss some points which should be kept in mind.</span></p>
<p><span style="font-size: small;"><strong>1.1 </strong><span style="text-decoration: underline;"><strong>Choosing the Right Operating System</strong></span> </span></p>
<p><span style="font-size: small;">This is one of the main key element required for proper functioning of the server software. The characteristics of this highly influences the Apache software. Search for the below points when choosing the OS for apache.</span></p>
<p><span style="font-size: small;">1.1.(i) mod_perl Support for the Operating System </span></p>
<p><span style="font-size: small;">This is to be considered seriously since the module mod_perl is a very handy tool which can help in extracting the maximum out Apache. I will be discussing its significance(not tuning with mod_perl) towards the end of this document.</span></p>
<p><span style="font-size: small;">1.1.(ii) Supports &#8216;sendfile&#8217; system call</span></p>
<p><span style="font-size: small;">This mainly benefits applications following the client-server arhitecture. A sendfile system call in general improves delivery of data from disk over to sockets. For retriveing a client requrested data, from disk, applications spends much time in transferring data from disk to many intermediate buffers and only then, to the socket. This induces much delay. With OS having kernel supporting sendfile, this can be achieved in a single operation.</span></p>
<p><span style="font-size: small;">1. 1.(iii) Good Memory Management </span></p>
<p><span style="font-size: small;">The reason why I mention this is because for the same script, some OS will tend to use the twice as much as memory used by another. Please consider from discarding such OS from your list immediately.</span></p>
<p><span style="font-size: small;">1.1.(iv) Avoiding Memory Leaks </span></p>
<p><span style="font-size: small;">A memory leak happens when some process occupies some blocks of memory and does not release it after it completes the execution of instructions which require those memory blocks. As a result, this part of the memory becomes unusable to other processes until the process that has occupied it has died. We certainly do not want that.</span></p>
<p><span style="font-size: small;">1.1.(iv) Memory-Sharing Capabilities </span></p>
<p><span style="font-size: small;">The new processes(children) that are spawned by apache should be able to share the features of the loaded modules of the parent apache process. This can save much memory and can be realized only if the OS supports memory sharing.</span></p>
<p><span style="font-size: small;">1.1.(v) The Support for OS</span></p>
<p><span style="font-size: small;">Good technical support must be available for the OS you implement and the support team remain vigilant about the holes and other aspects so that they do not give way for hackers. They should also be able to provide you personal support regarding the issues you have with your OS.</span></p>
<p><span style="font-size: small;">1.1.(vi) Discontinued Products</span></p>
<p><span style="font-size: small;">The company of your OS should not all of a sudden withdraw the release of new products and this can prove very bad in course of time even if you are satisfied with the functioning of the OS currently.</span></p>
<p><span style="font-size: small;">1.1.(vii) Regular OS releases</span></p>
<p><span style="font-size: small;">The OS needs to be kept up to date with the latest technology and kernel updates which are utmost necessary to keep the OS stable and free from security leaks.</span></p>
<p><span style="font-size: small;"><strong>1.2 <span style="text-decoration: underline;">Choosing the Right Hardware</span></strong></span></p>
<p><span style="font-size: small;">In concern with Hardware, there are no hard-set rules in calculating the appropriate number(the number specification of hardware. Eg: 128M RAM). This is because the number needed will be depend on the environment you place Apache in. A well functioning OS can be built on a good hardware and implementation such as:</span></p>
<p><span style="font-size: small;">1.2.(i) Random Access Memory (RAM)</span></p>
<p><span style="font-size: small;">Although you may see everywhere as the amount of installed RAM on the system, this is misleading. What actually counts is the RAM that is actually available to apache process. So we should actually calculate the amount of RAM usage on the system with all the process except apache started. This will be the available RAM for apache. The main goal while calculating the RAM for the server should be: the system never goes into a state to use the SWAP memory. When you need to write something into memory, and it is full, it swaps pages out of the memory that are less frequently used to the SWAP space. Only then you will be able to perform write operation to RAM memory. Thus delay is caused. </span></p>
<p><span style="font-size: small;">In the meantime if an other application supplementing the web server requests some pages and if it happens to be in one of the swapped pages, then the processor will have to load those pages again into main memory(RAM) swapping out some other data which might be needed in a short while. Let to repeat this, the state of the system can get worse. While configuring, you should also be aware that other essential system processes also need to be running smoothly. </span></p>
<p><span style="font-size: small;">1.2.(ii) CPU</span></p>
<p><span style="font-size: small;">This is the &#8216;Processor&#8217;. Using multicore processor with multi cache levels is a general and accepted implementation.</span></p>
<p><span style="font-size: small;">1.2.(iii) Disks with good I/O</span></p>
<p><span style="font-size: small;">Since apache is constant process of retrieval and writing data into disk, a good disk with high I/O capabilities is very much essential. This can also be achieved by implementing RAID.</span></p>
<p><span style="font-size: small;">1.2.(iv) Network Interface Card (NIC)</span></p>
<p><span style="font-size: small;">A hardware component that allows your machine to connect to the network. It sends and receives packets. NICs come in different speeds, varying from 10 MBps to 10 GBps and faster. The most widely used NIC type is the one that implements the Ethernet networking protocol.</span></p>
<p><span style="font-size: small;">1.2.(v) Cluster Implementation</span></p>
<p><span style="font-size: small;">As the name suggests, one or more interconnected machines working together to perform one big task is the core idea behind clustering. This is also implemented to provide backup during failure of one machine in the cluster. Similar to implementing RAID in disks to account for recovery from data loss due to disk failure.</span></p>
<p><span style="font-size: small;">1.2.(vi) Load balancing</span></p>
<p><span style="font-size: small;">This is a by product of clustering. If a web server is unable to handle load, it then dispatches the requests it receives to the web servers in it&#8217;s cluster to server the requests. In this mode of implementation, the http request will always reach first to the main server which is configured to hold the sites(or the as mentioned in the DNS). The server according to its load, will either server the request or dispatch the request to its&#8217;s load balancing server which handles the request from thereon.</span></p>
<div class="tweetthis" style="text-align:left;"><p> <a  class="tt" href="http://twitter.com/home/?status=Apache+Performance+Tuning+%28Part+I%2FIII%29+-+Choosing+the+Best+Platform+for+Apache++http%3A%2F%2Fwww.supportsages.com%2Fblog%2F1635" title="Post to Twitter"><img class="nothumb" src="http://www.supportsages.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter3.png" alt="Post to Twitter" /></a> <a  class="tt" href="http://twitter.com/home/?status=Apache+Performance+Tuning+%28Part+I%2FIII%29+-+Choosing+the+Best+Platform+for+Apache++http%3A%2F%2Fwww.supportsages.com%2Fblog%2F1635" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.supportsages.com/blog/2011/01/apache-performance-tuning-part-iiii-choosing-the-best-platform-for-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Issues that are encountered in web hosting</title>
		<link>http://www.supportsages.com/blog/2010/08/webhosting-issues/</link>
		<comments>http://www.supportsages.com/blog/2010/08/webhosting-issues/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 13:55:48 +0000</pubDate>
		<dc:creator>Gary</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[cPanel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.supportsages.com/blog/?p=1180</guid>
		<description><![CDATA[<strong>When tried to change passwd from WHM, the following error is displayed.</strong>

<strong>Error
The password for "user" could not be changed because:</strong>

Check the error in log file: /usr/local/cpanel/logs/error_log
You will find similar error as shown below.

=============================================================

Can't locate Crypt/PasswdMD5/XS.pm in @INC (@INC contains:
/scripts /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi
/usr/lib/perl5/5.8.8 .) at /scripts/cPScript/CheckPass/UNIX.pm line 6.
BEGIN failed--compilation aborted at /scripts/cPScript/CheckPass/UNIX.pm line 6.
Compilation failed in require at /scripts/cPScript/CheckPass.pm line 6.
BEGIN failed--compilation aborted at /scripts/cPScript/CheckPass.pm line 6.
Compilation failed in require at /scripts/realchpass line 16.
BEGIN failed--compilation aborted at /scripts/realchpass line 16.

=============================================================

<strong><em>Fix:</em></strong>

ssh into the server with root login credentials.
# /scripts/perlinstaller Crypt::PasswdMD5
Check if the issue still persists.

Then, let's try fixing the problem without rebuilding ...]]></description>
			<content:encoded><![CDATA[<p><strong>When tried to change passwd from WHM, the following error is displayed.</strong></p>
<p><strong>Error<br />
The password for &#8220;user&#8221; could not be changed because:</strong></p>
<p>Check the error in log file: /usr/local/cpanel/logs/error_log<br />
You will find similar error as shown below.</p>
<p>=============================================================</p>
<p>Can&#8217;t locate Crypt/PasswdMD5/XS.pm in @INC (@INC contains:<br />
/scripts /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi<br />
/usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl<br />
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi<br />
/usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl<br />
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi<br />
/usr/lib/perl5/5.8.8 .) at /scripts/cPScript/CheckPass/UNIX.pm line 6.<br />
BEGIN failed&#8211;compilation aborted at /scripts/cPScript/CheckPass/UNIX.pm line 6.<br />
Compilation failed in require at /scripts/cPScript/CheckPass.pm line 6.<br />
BEGIN failed&#8211;compilation aborted at /scripts/cPScript/CheckPass.pm line 6.<br />
Compilation failed in require at /scripts/realchpass line 16.<br />
BEGIN failed&#8211;compilation aborted at /scripts/realchpass line 16.</p>
<p>=============================================================</p>
<p><strong><em>Fix:</em></strong></p>
<p>ssh into the server with root login credentials.<br />
# /scripts/perlinstaller Crypt::PasswdMD5<br />
Check if the issue still persists.</p>
<p>Then, let&#8217;s try fixing the problem without rebuilding Perl or changing any system configuration files. Run:</p>
<p># /scripts/checkperlmodules<br />
# service cpanel restart</p>
<p>Try changing the password again. If you&#8217;re still getting the error, it&#8217;s likely that the cPanel Perl installation was overwritten by an updated Perl RPM either manually or by yum. Let&#8217;s make sure Perl is left up to cPanel and check if perl automatic perl update is disabled in cPanel and excluded from yum list.</p>
<p># grep allowperlupdates /var/cpanel/cpanel.config</p>
<p>If you see allowperlupdates=1 you&#8217;ve enabled &#8220;Allow Perl updates from RPM-based linux vendors&#8221; in WHM under Tweak Settings -&gt; System. Return to WHM and uncheck this option then click the &#8220;Save&#8221; button.</p>
<p>In /etc/yum.conf, check if perl is present in exclude and intall the pearl module.<br />
exclude=apache* bind-chroot courier* dovecot* exim* httpd* mod_ssl* mysql* nsd* perl* php*</p>
<p>Steps to install the pearl module.<br />
First check the current version of Perl<br />
# perl -v<br />
If the older version of Perl is running on server, you get an output something like,<br />
This is perl, v5.8.7 built for i686-linux<br />
Upgrade perl on the Cpanel server<br />
1) Download the latest perl installer from cPanel site.<br />
# wget http://layer1.cpanel.net/perl588installer.tar.gz</p>
<p>2) Untar the file.<br />
# tar -zxvf perl588installer.tar.gz</p>
<p>3) Change the directory to perl588installer.<br />
# cd perl588installer</p>
<p>4) Now run the installer file.<br />
# ./install</p>
<p>5) Check perl modules.<br />
# /scripts/checkperlmodules</p>
<p>6) Force a cPanel update.<br />
# /scripts/upcp –force</p>
<p>****************************************************************************************************************</p>
<p><strong>How to locate mysql log file in the server.</strong></p>
<p>* Check whether the mysql log file is present in /var/log such as /var/log/mysqld.log</p>
<p>* Usually, the mysql log file is present in /var/lib/mysql for cPanel servers. Kindly follow the steps to find the log file</p>
<p>======================================================================================================<br />
root@server1 [/var/lib/mysql]# top -c | grep mysql<br />
17545 mysql 15 0 427m 209m 5176 S 3.9 2.6 266:16.79 /usr/sbin/mysqld &#8211;basedir=/ &#8211;datadir=/var/lib/mysql &#8211;user=mysql &#8211;pid-file=/var/lib/mysql/server1.abc.com<br />
======================================================================================================</p>
<p>Find the hostname of the server.<br />
=======================<br />
root@server1 [~]# hostname<br />
server1.abc.com<br />
=======================</p>
<p>We need to find the presently running mysql log file in the server. Usually, mysql log file will be associated with the hostname.</p>
<p>=======================================================<br />
root@server1 [/var/lib/mysql]# ls -l | grep -i server1.abc.com<br />
-rw-rw&#8212;-   1 mysql mysql  48495912 Aug 19 16:46 server1.abc.com.err<br />
-rw-rw&#8212;-   1 mysql mysql     41720 May 18  2009 SERVER1.ABC.COM.err<br />
-rw-rw&#8212;-   1 mysql mysql         6 Aug 19 16:46 server1.abc.com.pid<br />
-rw-rw&#8212;-   1 mysql mysql         6 May 18  2009 SERVER1.ABC.COM.pid<br />
=======================================================</p>
<p>From the above code, we find that server1.abc.com.err is used recently (checking with date). Therefore, server1.abc.com.err is the log file. To confirm it further, kindly check the process ID of server1.abc.com.pid with that of mysql process ID.</p>
<p>==========================================<br />
root@server1 [/var/lib/mysql]# cat server1.abc.com.pid<br />
17545<br />
==========================================</p>
<p>The mysql log file displayed below.</p>
<p>==============================================================================<br />
root@server1 [/var/lib/mysql]# vi server1.abc.com.err</p>
<p>090503 04:31:43 mysqld started<br />
InnoDB: The first specified data file ./ibdata1 did not exist:<br />
InnoDB: a new database to be created!<br />
090503 4:31:43 InnoDB: Setting file ./ibdata1 size to 10 MB<br />
InnoDB: Database physically writes the file full: wait&#8230;<br />
090503 4:31:43 InnoDB: Log file ./ib_logfile0 did not exist: new to be created<br />
InnoDB: Setting log file ./ib_logfile0 size to 5 MB<br />
InnoDB: Database physically writes the file full: wait&#8230;<br />
090503 4:31:43 InnoDB: Log file ./ib_logfile1 did not exist: new to be created<br />
InnoDB: Setting log file ./ib_logfile1 size to 5 MB<br />
InnoDB: Database physically writes the file full: wait&#8230;<br />
InnoDB: Doublewrite buffer not found: creating new<br />
InnoDB: Doublewrite buffer created<br />
InnoDB: Creating foreign key constraint system tables<br />
InnoDB: Foreign key constraint system tables created<br />
090503 4:31:43 InnoDB: Started; log sequence number 0 0<br />
090503 4:31:43 [Note] /usr/sbin/mysqld: ready for connections.<br />
Version: &#8217;5.0.67-community&#8217; socket: &#8216;/var/lib/mysql/mysql.sock&#8217; port: 3306 MySQL Community Edition (GPL)<br />
090503 4:31:46 [Note] /usr/sbin/mysqld: Normal shutdown</p>
<p>090503 4:31:46 InnoDB: Starting shutdown&#8230;<br />
090503 4:31:47 InnoDB: Shutdown completed; log sequence number 0 43655<br />
090503 4:31:47 [Note] /usr/sbin/mysqld: Shutdown complete</p>
<p>090503 04:31:47 mysqld ended<br />
==============================================================================</p>
<p><span style="color: #333399;"><span style="color: #000000;">***********************************************************************************</span><br />
</span><br />
<strong>The &#8220;latest visitor&#8221; log in the stats of the cpanel is weird and not getting updated.</strong></p>
<p><strong>Error: Raw Access log contain only term &#8220;combined&#8221;, liked combined combined combined&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</strong></p>
<p><em><strong>Fix:</strong></em><br />
Check if the format provided below is correct in the apache configuration file where version is Apache/2.2.15.<br />
=======================================================================<br />
&lt;IfModule log_config_module&gt;<br />
LogFormat &#8220;%h %l %u %t \&#8221;%r\&#8221; %&gt;s %b \&#8221;%{Referer}i\&#8221; \&#8221;%{User-Agent}i\&#8221;" combined<br />
LogFormat &#8220;%h %l %u %t \&#8221;%r\&#8221; %&gt;s %b&#8221; common</p>
<p>CustomLog logs/access_log common</p>
<p>&lt;IfModule logio_module&gt;<br />
LogFormat &#8220;%h %l %u %t \&#8221;%r\&#8221; %&gt;s %b \&#8221;%{Referer}i\&#8221; \&#8221;%{User-Agent}i\&#8221; %I %O&#8221; combinedio</p>
<p>&lt;/IfModule&gt;</p>
<p>&lt;/IfModule&gt;<br />
=====================================================================</p>
<div class="tweetthis" style="text-align:left;"><p> <a  class="tt" href="http://twitter.com/home/?status=Issues+that+are+encountered+in+web+hosting+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F1180" title="Post to Twitter"><img class="nothumb" src="http://www.supportsages.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter3.png" alt="Post to Twitter" /></a> <a  class="tt" href="http://twitter.com/home/?status=Issues+that+are+encountered+in+web+hosting+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F1180" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.supportsages.com/blog/2010/08/webhosting-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mod_php explained</title>
		<link>http://www.supportsages.com/blog/2010/06/mod_php-explained/</link>
		<comments>http://www.supportsages.com/blog/2010/06/mod_php-explained/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 14:32:58 +0000</pubDate>
		<dc:creator>George</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Apache Handler Support]]></category>
		<category><![CDATA[level1]]></category>
		<category><![CDATA[mime type support]]></category>
		<category><![CDATA[mod_php]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.supportsages.com/blog/?p=895</guid>
		<description><![CDATA[<h3>Preface</h3>
Like in the case of all apache modules, you can either compile PHP as a  static module or compile it as a dynamic module.  In the case of static  module , you  can't perform any modification for the module without  recompiling the binary to which it is attached.  For eg.  you can't add  ssl support for the mod_php without re-compiling apache as a whole. And any failure in the compilation may cause downtime for the entire webserver also, including plain html support.

The advantage is that it provides a faster  performance, because the  module is initialized  ...]]></description>
			<content:encoded><![CDATA[<h3>Preface</h3>
<p>Like in the case of all apache modules, you can either compile PHP as a  static module or compile it as a dynamic module.  In the case of static  module , you  can&#8217;t perform any modification for the module without  recompiling the binary to which it is attached.  For eg.  you can&#8217;t add  ssl support for the mod_php without re-compiling apache as a whole. And any failure in the compilation may cause downtime for the entire webserver also, including plain html support.</p>
<p>The advantage is that it provides a faster  performance, because the  module is initialized  whenever the apache binary is started.</p>
<p>In the case of a dynamic mod_php installation, the necessary modifications or module additions can be  done by recompiling the module alone. There is no need to recompile the  Apache as the mod_php is not linked with the binary of apache.  But  since the webserver loads the module on the fly, it needs to load,  initialize and then execute the module.  So it can create some level of  slowness while processing php pages.</p>
<p><strong>How does mod_php work? </strong></p>
<p>When PHP  is loaded into Apache as a module (using  mod_php), each Apache process will contain an instance of mod_php or  PHP interpreter also.   The interpreter comes with a bundle of  libraries we enabled during compilation and each  process can make use  of these libraries to process the requests. This means that the  Apache process that just started  to load a simple HTML page  too will  contain a PHP interpreter with all assigned libraries which inturn means resource consumption.</p>
<p>When the webserver gets an HTTP request. The  request header   contains the path to the requested document</p>
<blockquote><p>e.g. access.log:    xx.xx.xx.xx &#8211; - [22/June/2010:21:14:53  -0700] &#8220;GET /info.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42  HTTP/1.1&#8243; 200 2146 &#8220;http://domain.com/info.php&#8221; &#8220;Mozilla/5.0 (X11; U;  Linux i686; en-US; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic)  Firefox/3.5.7&#8243;</p></blockquote>
<p>1. The request will be redirected to the document root of the domain  and then to the file &#8220;info.php&#8221; , if it fails then the corresponding  error message will be given.</p>
<p>2. The info.php file is to be processed. It follows the following  steps</p>
<p>Normally every httpd.conf file will have an entry like this</p>
<blockquote><p>AddType application/x-httpd-php .php5 .php4 .php</p></blockquote>
<p>It instructs the webserver that the files with extension .php  ,.php4,.ph5 are of PHP mime type  . The <strong>TypesConfig</strong> directive sets the location of the MIME     types configuration file.  This file controls what Internet media types are sent to the client for   given file extension(s).  Sending the correct media type to the client   is important so they know how to handle the content of the file.</p>
<blockquote><p>root@new [/usr/local/apache/conf]# cat mime.types | grep  x-httpd-php<br />
application/x-httpd-php-source          phps<br />
application/x-httpd-php          php php3 php4 php5 php6<br />
root@new [/usr/local/apache/conf]#</p></blockquote>
<p>Here we can see that the Mime type to be used for files with  extension .php  is application/x-httpd-php , while the file with .phps  is to be mapped to the php mime type application/x-httpd-php-source .</p>
<p>The webserver identifies that the requested file is of Mime type  x-httpd-php.</p>
<p>To handle or process it , the apache has to load the corresponding  module. Since it is a php type , the module mod_php will be loaded and  it will execute the file.</p>
<p>Since apache is a HTTP server. It gets the HTTP requests and answers  with the HTML code.  So the mod_php will execute the commands within  php flag and creates the HTML page dynamically and send it back to the  client &#8211; internet browser which sent HTTP request.</p>
<p><strong>Security concerns / Implications<br />
</strong></p>
<p>You can see that  every request or execution of a php file through  web is initiated by the webserver. So the webserver acts as the parent  of every php execution through web. It imposes a great security threat.  Since apache is being executed as an apache  user, all process will be  owned by that user. By default  it is &#8220;nobody&#8221; or &#8220;apache&#8221;.  Let me try  to explain.</p>
<p>If your  web application performs some operations in the  db, unless that database (eg: a flat text DB) has built-in access control, you will have to  make the database accessible to the &#8220;nobody&#8221; user. This means a  malicious script could access and modify the database, even without a  username and password.  Such can be the case with various configuration  files too.  Unless you protect these directories or applications with  necessary authorization techniques like .htaccess, session control etc.  There is a high possibility of attack through webapplication.</p>
<p>Another dangerous issue is of root escalation. If the webserver has a bug, by exploiting that bug, a malicious user can gain some root privileges or escalated to root. Its quite  alarming situation as an escalated apache user can do any sort of   actions without any level of authentication.</p>
<p>Also it is difficult to identify the script which performs the  malicious activity as all php scripts will be executed as &#8220;nobody&#8221;</p>
<p>Since PHP applications are executed as web server user, you need to  give access and write permissions for the directories wherever the  application  is supposed to be working. Sometimes you may be forced to  give 777 permissions and it invites lot of attacks.</p>
<p>The files created by php applications will be owned by user &#8220;nobody&#8221; .  So the user will not be able to delete the files unless it is done  through another php application. Otherwise he needs to contact the  server admin to get the same.</p>
<p>As a security measure, we may be forced to block mails from &#8220;nobody&#8221;  users . But it can create mails generated from php applications being  blocked in the server. Various php applications widely used for spamming  . So some servers are configured to block mails from nobody users. This  creates inconvenience to users.</p>
<div class="tweetthis" style="text-align:left;"><p> <a  class="tt" href="http://twitter.com/home/?status=mod_php+explained+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F895" title="Post to Twitter"><img class="nothumb" src="http://www.supportsages.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter3.png" alt="Post to Twitter" /></a> <a  class="tt" href="http://twitter.com/home/?status=mod_php+explained+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F895" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.supportsages.com/blog/2010/06/mod_php-explained/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The very basics of a PHP &#8211; Not for the developers or sysadmins but for a tech support engineer</title>
		<link>http://www.supportsages.com/blog/2010/06/php-basics/</link>
		<comments>http://www.supportsages.com/blog/2010/06/php-basics/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 14:30:46 +0000</pubDate>
		<dc:creator>George</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Howtos]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Specials]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[basics]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[interpreter]]></category>
		<category><![CDATA[parser]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php modes]]></category>
		<category><![CDATA[php-cgi]]></category>
		<category><![CDATA[sapi]]></category>
		<category><![CDATA[server side scripting]]></category>

		<guid isPermaLink="false">http://www.supportsages.com/blog/?p=890</guid>
		<description><![CDATA[<h3><strong>What is PHP?</strong></h3>
PHP is similar to many other scripting languages like perl,  python etc. But unlike perl and python what makes it stand apart is, its adaptability and power to be used as both <strong>command line</strong> and <strong>server side scripting</strong>.  I hear Yahoo's mail runs on PHP.

I shall try to explain you the difference by executing the same file  on different modes. Don't expect too much from this post.
<h3><strong>Command Line (CLI)
</strong></h3>
<strong>PHP Command Line Interface</strong> or PHP CLI  as the name implies,   is a way of using PHP in the system command line, like below.<span id="more-890"></span>

[php]
# php -i ...]]></description>
			<content:encoded><![CDATA[<h3><strong>What is PHP?</strong></h3>
<p>PHP is similar to many other scripting languages like perl,  python etc. But unlike perl and python what makes it stand apart is, its adaptability and power to be used as both <strong>command line</strong> and <strong>server side scripting</strong>.  I hear Yahoo&#8217;s mail runs on PHP.</p>
<p>I shall try to explain you the difference by executing the same file  on different modes. Don&#8217;t expect too much from this post.</p>
<h3><strong>Command Line (CLI)<br />
</strong></h3>
<p><strong>PHP Command Line Interface</strong> or PHP CLI  as the name implies,   is a way of using PHP in the system command line, like below.<span id="more-890"></span></p>
<pre class="brush: php; title: ; notranslate">
# php -i | more
phpinfo()
PHP Version =&gt; 5.2.10-2ubuntu6.3

System =&gt; Linux den 2.6.31-15-generic #50-Ubuntu SMP Tue Nov 10 14:54:29 UTC 200
9 i686
Build Date =&gt; Nov 26 2009 14:40:20
Server API =&gt; Command Line Interface
Virtual Directory Support =&gt; disabled
Configuration File (php.ini) Path =&gt; /etc/php5/cli
Loaded Configuration File =&gt; /etc/php5/cli/php.ini
</pre>
<p>In other words when the  SAPI ( Server API) is &#8220;Command Line Interface&#8221; as you see above php-cli acts as a connector between  underlying  php binary and the command / script which invokes php from  shell . This enables processing of the scripts which require php  functions and provide the result after execution of the script.   The  advantage is that it doesn&#8217;t require a browser or webserver  for the  execution. It simply requires a PHP parser ie PHP_CLI. This  type of usage is ideal for scripts regularly        executed using cron  (on *nix or Linux) or Task Scheduler (on        Windows). These scripts  can also be used for simple text        processing tasks. (Okay even image processing tasks <img src='http://www.supportsages.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> )</p>
<p>PHP CLI is available on all popular operating  systems.  The first step we need to ensure is that the CLI SAPI is installed. For this locate php binary path and execute the command as given below</p>
<pre class="brush: bash; title: ; notranslate">
[george@server3]$ type php
php is /usr/local/bin/php
[george@server3]$ /usr/local/bin/php -v | grep cli
PHP 5.2.9 (cli) (built: Jul 10 2009 19:22:08)
</pre>
<p>The result ensures that the php-cli module is installed. Now let us   see, how to make it work in a shell. The first thing is to identify the exact  path on which php  binary is present. I assume that its  /usr/local/bin/php.</p>
<p>Now create the test file info.php</p>
<p>vi info.php</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php
phpinfo();
?&gt;
</pre>
<p>Execute the  file from the shell using the command line or shell. If  you intent to use it in a cron specify the binary path (interpreter) as  the first entry of file .</p>
<p><strong>/usr/local/bin/php info.php</strong></p>
<p>Then the out put will be  of the following  format</p>
<pre class="brush: php; title: ; notranslate">

[geroge@server3]# php info.php | head
phpinfo()
PHP Version =&gt; 5.2.9

System =&gt; Linux server3.xxxxxx.xxx 2.6.18-128.7.1.el5 #1 SMP Mon  Aug 24 08:21:56 EDT 2009 x86_64
Build Date =&gt; Jul 10 2009 19:17:35
Configure Command =&gt;  './configure'  '--enable-bcmath'  '--enable-calendar' '--enable-dbase' '--enable-ftp'  '--enable-gd-native-ttf' '--enable-libxml' '--enable-magic-quotes'  '--enable-mbstring' '--enable-pdo=shared' '--enable-soap'  '--enable-sockets' '--enable-zend-multibyte' '--enable-zip'  '--prefix=/usr/local' '--with-curl=/opt/curlssl/'  '--with-tidy=/opt/tidy/' '--with-ttf' '--with-xmlrpc'  '--with-xpm-dir=/usr' '--with-zlib' '--with-zlib-dir=/usr'  '--with-litespeed'
Server API =&gt; Command Line Interface
Virtual Directory Support =&gt; disabled
Configuration File (php.ini) Path =&gt; /usr/local/lib
Loaded Configuration File =&gt; /usr/local/lib/php.ini
</pre>
<p>You can see the Application Programming Interface (API) for this  script by  checking the variable <strong>Server API. </strong>In the above test,  it is shown as <strong>Command Line Interface.</strong> The value gets changed  according to the mode of usage or execution.</p>
<p>As I mentioned above the php binary was  invoked  by the php-cli  interpreter. Once php binary executed the query , the result was  returned to the SAPI  ie php-cli, it then passed the results to the  command line.</p>
<p><strong>Why do we use it?</strong></p>
<p>Its a quite handy option to create cron jobs. Some times we may need  to perform some sort of updates or script execution periodically. If we  set  a cron job for this using php, the php-cli option is quite  useful.</p>
<h3><strong>Server-side scripting</strong></h3>
<p>PHP is extensively used for creating dynamic Web pages. You  create pages with PHP and HTML. When a visitor opens the page, the  server processes the PHP commands and then sends the results to the  visitor&#8217;s browser along with the static HTML pages. PHP code is  embedded into the HTML source document and interpreted by a web server  with a PHP processor module, which generates the web page document.</p>
<p>So the minimum requirement for here are the following ones</p>
<p>1.  Web browser ( client side)</p>
<p>2.  Web server</p>
<p>3.   The PHP parser :  which connects the webserver  with the underlying php installation.</p>
<h4>Illustration :</h4>
<p>Now lets us, take the same example. Here I am trying to access the  page through a web browser. Let us see how the result looks like</p>
<p><img title="info_php" src="http://tuxasa.com/blogs/wp-content/uploads/2010/03/info_php.png" alt="info_php" width="625" height="518" /></p>
<p>Here , you can see the difference. In the first case when I executed  the same file from shell  I got the output without any format. Now the  same result is shown as an HTML page.  So let us see  how the conversion  takes pace.</p>
<p>The webserver is  connected to the php with the help of &#8220;Server API&#8221; .  This is called PHP parser  it is either<strong> CGI or Server Module</strong> like apache, litespeed etc. You can see  it is &#8220;CGI&#8221; here, but it can  vary according the mod of installation and webserver it uses. Common values are FastCGI/CGI , Litespeed API, Apache etc</p>
<p>Once the HTTP  / Web server gets the request for the page with php ,  it calls PHP interpreter to generate HTML. Then this HTML is returned to  the client &#8211; internet browser which sent the HTTP request.</p>
<p>I believe you might got some ideas how it works or differs . I shall  try to give  the difference between CGI and a server module on another  post <img src='http://www.supportsages.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3><strong>Server API (SAPI)</strong></h3>
<p>PHP is meant  to work on all platforms. So it is essential that it  should work with different types of webservers as well.   Every version of  php  comes with a set of Binaries to connect php with various webservers and  it is known as SAPI.  During configuration of php, we  need to give  corresponding options for the webserver to which the interpreter is to be  enabled. Once the php is compiled and installed , the corresponding  SAPI  will be activated. So every communication between the webserver  and PHP will be interpreted  using the corresponding SAPI module enabled.</p>
<p>Apache may use &#8220;Apache Handler&#8221; while LiteSpeed webserver use &#8220;LiteSpeed API&#8221; as the SAPI.</p>
<h3><strong>Extensions </strong></h3>
<p>Being a powerful language which can perform various levels of  operation,  PHP needs to utilize various functions and libraries  installed on the server. For example GD libraries are required for a php  script which performs image manipulations. While a shopping cart or  such applications require db connectivity to be enabled.  Like in the  case of SAPI a lot of such connectors are shipped along with PHP.  To  extend the functionality of php, we enable the necessary libraries while  configuring the application using &#8220;&#8211;with&#8221;  option.</p>
<p>You can create your own php extensions and php modules and compile  them also.  Again, we will have a discussion about it later.</p>
<div class="tweetthis" style="text-align:left;"><p> <a  class="tt" href="http://twitter.com/home/?status=The+very+basics+of+a+PHP+-+Not+for+the+developers+or+sysadmins+but+for+a+tech+support+engineer+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F890" title="Post to Twitter"><img class="nothumb" src="http://www.supportsages.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter3.png" alt="Post to Twitter" /></a> <a  class="tt" href="http://twitter.com/home/?status=The+very+basics+of+a+PHP+-+Not+for+the+developers+or+sysadmins+but+for+a+tech+support+engineer+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F890" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.supportsages.com/blog/2010/06/php-basics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Source compilation of Apache</title>
		<link>http://www.supportsages.com/blog/2010/06/source-compilation-of-apache/</link>
		<comments>http://www.supportsages.com/blog/2010/06/source-compilation-of-apache/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 21:03:45 +0000</pubDate>
		<dc:creator>victor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Howtos]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[source]]></category>

		<guid isPermaLink="false">http://www.supportsages.com/blog/?p=871</guid>
		<description><![CDATA[<strong>﻿Basics of Compilation of Apache with PHP</strong>

Here we are going to install apache using the source only. The choice of Operating System here is Linux (distro: Centos). The procedure we follow here will lead to a simple apache installation for dynamic loading of php. PHP will be installed as a module to apache. With a little bit of patience and time, all the necessary modules can be installed with apache. I will be giving a brief idea about the installation of the other modules later.
The basics of installation from the source involves mainly three <em>simple</em> steps (assuming you are lucky):

[bash]
./configure
make
make ...]]></description>
			<content:encoded><![CDATA[<p><strong>﻿Basics of Compilation of Apache with PHP</strong></p>
<p>Here we are going to install apache using the source only. The choice of Operating System here is Linux (distro: Centos). The procedure we follow here will lead to a simple apache installation for dynamic loading of php. PHP will be installed as a module to apache. With a little bit of patience and time, all the necessary modules can be installed with apache. I will be giving a brief idea about the installation of the other modules later.<br />
The basics of installation from the source involves mainly three <em>simple</em> steps (assuming you are lucky):</p>
<pre class="brush: bash; title: ; notranslate">
./configure
make
make install</pre>
<p>./configure creates the MAKEFILE on the fly. We can provide the necessary options to configure. To list the available options in the configuring step use</p>
<pre class="brush: bash; title: ; notranslate">./configure --help</pre>
<p>&#8211;prefix=/path/&#8230; mentions where the executable and its files are installed. If not mentioned it takes the default values.<br />
&#8211;enable-[Feature] will enable the specified Feature in apache as it is being built. We are only interested in the DSO capability and hence we enable it with: &#8211;enable-so</p>
<p>As a convention we always keep the source code tar ball inside a directory in /usr/src/, thus source installation begins in this directory.</p>
<p><strong>Apache Compilation</strong></p>
<p>Download the required source tar ball of the apache you would like to compile. Here I am installing httpd-2.0.63 from http://httpd.apache.org/download.cgi#apache20. I save it in the /usr/src/ folder.</p>
<pre class="brush: bash; title: ; notranslate">
cd /usr/src/
wget http://www.bizdirusa.com/mirrors/apache/httpd/httpd-2.0.63.tar.gz</pre>
<p>This will result in the generation of the file httpd-2.0.63.tar.gz</p>
<pre class="brush: bash; title: ; notranslate">
tar -xzf httpd-2.0.63.tar.gz</pre>
<p>This will result in the creation of the directory httpd-2.0.63. Next enter inside this directory and execute the ./configure command.</p>
<pre class="brush: bash; title: ; notranslate">
cd httpd-2.0.63
./configure --prefix=/usr/local/webserver --enable-so</pre>
<p>We are installing apache inside /usr/local/webserver and enable DSO to run php as a module to apache. During this process we may get a lot of errors. We resolve these by manually installing the unresolved dependencies either by obtaining their rpms or by using yum. Normally the first dependency we will get to resolve are:</p>
<pre class="brush: bash; title: ; notranslate">
gcc
glibc
libxml and
their corresponding devel packages</pre>
<p>In the days where there were no package management tools like yum, pirut, apt-get etc. The old rpms served the installation of these packages with some effort. The task of determining the required rpm package for the required architecture and resolving the other dependencies which arise due to the installation of this rpm may be a tedious task. Some sites which helped in obtaining the necessary rpm suited for our installation and its other dependancies are:</p>
<pre class="brush: bash; title: ; notranslate">

http://rpm.pbone.net/

http://www.rpmfind.net/linux/RPM/

http://ftp.freshrpms.net/

http://dries.ulyssis.org/rpm/packages.html

http://apt.sw.be/

http://rpms.famillecollet.com/ (Remi RPM Repository)</pre>
<p>Once everything goes well (we do the ./configure step again to determine this), the make command is executed.</p>
<pre class="brush: bash; title: ; notranslate">
make</pre>
<p>If errors are encountered in this stage, We resolve them by installing the unresolved dependencies (Same as the previous step) and then do:</p>
<pre class="brush: bash; title: ; notranslate">
make clean</pre>
<p>After this we repeat the make command and then issue:</p>
<pre class="brush: bash; title: ; notranslate">
make install</pre>
<p>This process installs the package finally within the system. Modify the init script ( /etc/rc.d/init.d/httpd or /etc/init.d/httpd they are symbolic links) Or sometimes you may even have to create one from the apache site.</p>
<p>The following is the content of one such init script I have used. The line beginning with apachectl/some/path/here and httpd=/some/path/here have to replaced with the appropriate line we have used in the &#8211;prefix portion of ./configure.</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash
#
# Startup script for the Apache Web Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server.  It is used to serve \
#              HTML files and CGI.
# processname: httpd
# processname: httpd
# pidfile: /usr/local/apache2/logs/httpd.pid
# config: /usr/local/apache2/conf/httpd.conf
# Source function library.
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/httpd ]; then
. /etc/sysconfig/httpd
fi
# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=&quot;&quot;
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/webserver/bin/apachectl
httpd=/usr/local/webserver/bin/httpd
pid=$httpd/logs/httpd.pid
prog=httpd
RETVAL=0
# The semantics of these two functions differ from the way apachectl does
# things -- attempting to start while running is a failure, and shutdown
# when not running is also a failure.  So we just do it the way init scripts
# are expected to behave here.
start() {
echo -n $&quot;Starting $prog: &quot;
daemon $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] &amp;amp;&amp;amp; touch /var/lock/subsys/httpd
return $RETVAL
}
stop() {
echo -n $&quot;Stopping $prog: &quot;
killproc $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] &amp;amp;&amp;amp; rm -f /var/lock/subsys/httpd $pid
}
reload() {
echo -n $&quot;Reloading $prog: &quot;
killproc $httpd -HUP
RETVAL=$?
echo
}
# See how we were called.
case &quot;$1&quot; in
start)
start
;;
stop)
stop
;;
status)
status $httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f $pid ] ; then
stop
start
fi
;;
reload)
reload
;;
graceful|help|configtest|fullstatus)
$apachectl $@
RETVAL=$?
;;
*)
echo $&quot;Usage: $prog {start|stop|restart|condrestart|reload|status&quot;
echo $&quot;|fullstatus|graceful|help|configtest}&quot;
exit 1
esac
exit $RETVAL</pre>
<p>Next we add the daemon name to the list of services and run it. For this follow the below steps.</p>
<pre class="brush: bash; title: ; notranslate">
chkconfig --add httpd
chkconfig --level 2345 httpd on
chkconfig --list httpd
/etc/init.d/httpd start
lynx http://localhost/ will display the default apache page which means success.</pre>
<p><strong>PHP Compilation</strong><br />
Now we are going to install PHP 5.2.13 from source!<br />
Go to /usr/src/</p>
<pre class="brush: bash; title: ; notranslate">
cd /usr/src/</pre>
<p>Download the PHP source tarball and extract it</p>
<pre class="brush: bash; title: ; notranslate">
wget http://in3.php.net/get/php-5.2.13.tar.gz/from/in.php.net/mirror
tar -xzf php*
cd php*</pre>
<p>Just like in the previous apache installation, we are going to do the ./configure step with the required setting which are displayed using</p>
<pre class="brush: bash; title: ; notranslate">./configure --help</pre>
<p>We are only interested in enabling php as a module (&#8211;with-apxs2) support for mysql (&#8211;with-mysql) and prefix line. So we go for:</p>
<pre class="brush: bash; title: ; notranslate">
./configure --with-apxs2=/usr/local/webserver/bin/apxs --with-mysql --prefix=/usr/local/webserver/php</pre>
<p>The long command can be written in a shorter, more clearer format with:</p>
<pre class="brush: bash; title: ; notranslate">
./configure --with-apxs2=/usr/local/webserver/bin/apxs \
--with-mysql \
--prefix=/usr/local/webserver/php</pre>
<p>The same instructions go for the errors here.<br />
Once everything goes smooth:</p>
<pre class="brush: bash; title: ; notranslate">
make
make install</pre>
<p>We can provide the recommeneded php.ini setting in the path /usr/local/webserver/php/lib (what ever is the &#8211;prefix + /lib) or just copy the recommended settings to /usr/local/webserver/php/lib (This file may have the name php.ini-recommended or php.ini-production)<br />
cp php.ini-recommended /usr/local/webserver/php/lib/php.ini</p>
<p>From now on we can have php&#8217;s index page to be the default index page. For this in the apache&#8217;s config file append index.php to the directive &#8211; DirectoryIndex</p>
<p>The line would thus look like:</p>
<pre class="brush: bash; title: ; notranslate">
DirectoryIndex index.html index.html.var index.php</pre>
<p>To make make apache call modular php to execute the php script when encountered, add the following lines to the conf file.</p>
<pre class="brush: bash; title: ; notranslate">
AddType application/x-httpd-php .php
DirectoryIndex index.html index.html.var index.php</pre>
<p>Next to test your installation.<br />
In the default document root, create a phpinfo file with the file name index.php an d the contents as:</p>
<pre class="brush: bash; title: ; notranslate">
&amp;lt;?
phpinfo();
?&amp;gt;</pre>
<p>Now we will test the apache configuration for any syntax errors and then reload the apache webserver:</p>
<pre class="brush: bash; title: ; notranslate">
apachectl configtest (No errors should be reported)
/etc/init.d/httpd reload</pre>
<p>Open a browser window and load the localhost as URL, we will be viewing the phpinfo page in here. In the phpinfo page, the portion Configure Command shows the actual compilation time options used while ./configure is used. The row corresponding to Server API mentions how the php is loaded. &#8216;Apache 2.0 Handler&#8217; means that php was loaded as a module of apache. The rest of the values can be globally changed by making the required changes in php.ini or locally in .htaccess (which is possible only because it is loaded as an apache module).</p>
<p><strong>Tips on installing PHP as a CGI</strong></p>
<p>Here we do not require installing apache with the &#8211;enable-so option. A normal installation will do. The installation of php will not require the option &#8211;with-apxs2. However we will have to mention the location of apache source directory with &#8211;with-apache=../apache_1.3.14</p>
<p>In the httpd.conf file you will require adding:</p>
<pre class="brush: bash; title: ; notranslate">
ScriptAlias /php/ [path where your php folder is located]
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .phtml
Action application/x-httpd-php /php/php5</pre>
<div class="tweetthis" style="text-align:left;"><p> <a  class="tt" href="http://twitter.com/home/?status=Source+compilation+of+Apache+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F871" title="Post to Twitter"><img class="nothumb" src="http://www.supportsages.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter3.png" alt="Post to Twitter" /></a> <a  class="tt" href="http://twitter.com/home/?status=Source+compilation+of+Apache+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F871" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.supportsages.com/blog/2010/06/source-compilation-of-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enabling mod_rewrite in Apache 2.2</title>
		<link>http://www.supportsages.com/blog/2009/12/enabling-mod_rewrite-in-apache-2-2/</link>
		<comments>http://www.supportsages.com/blog/2009/12/enabling-mod_rewrite-in-apache-2-2/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 03:15:14 +0000</pubDate>
		<dc:creator>arnold</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Troubleshooting]]></category>

		<guid isPermaLink="false">http://www.supportsages.com/blog/?p=590</guid>
		<description><![CDATA[By default CentOS or RHEL flavours of Linux has Apache 2.2 installed. It often becomes a requirement to enable mod_rewrite on these servers. Techs who have been working with cPanel and server with control panels often finds it difficult to troubleshoot issues with a bare server. There are a few things to check or commands to execute in such case where mod_rewrite is shown enabled in the httpd.conf, but not working.


<blockquote>
[root@cave html]# httpd -V
Server version: Apache/2.2.3</blockquote>

<blockquote>[root@cave html]# httpd -M
Loaded Modules:
 core_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 auth_basic_module (shared)
 auth_digest_module (shared)
....
.......
....
rewrite_module (shared)
 proxy_module (shared)
 proxy_balancer_module (shared)
 proxy_ftp_module (shared)
 proxy_http_module ...]]></description>
			<content:encoded><![CDATA[<p>By default CentOS or RHEL flavours of Linux has Apache 2.2 installed. It often becomes a requirement to enable mod_rewrite on these servers. Techs who have been working with cPanel and server with control panels often finds it difficult to troubleshoot issues with a bare server. There are a few things to check or commands to execute in such case where mod_rewrite is shown enabled in the httpd.conf, but not working.</p>
<blockquote><p>
[root@cave html]# httpd -V<br />
Server version: Apache/2.2.3</p></blockquote>
<blockquote><p>[root@cave html]# httpd -M<br />
Loaded Modules:<br />
 core_module (static)<br />
 mpm_prefork_module (static)<br />
 http_module (static)<br />
 so_module (static)<br />
 auth_basic_module (shared)<br />
 auth_digest_module (shared)<br />
&#8230;.<br />
&#8230;&#8230;.<br />
&#8230;.<br />
rewrite_module (shared)<br />
 proxy_module (shared)<br />
 proxy_balancer_module (shared)<br />
 proxy_ftp_module (shared)<br />
 proxy_http_module (shared)<br />
 proxy_connect_module (shared)</p></blockquote>
<p><strong>[root@cave html]# a2enmod rewrite</strong></p>
<p>a2enmod is only to be used if the rewrite_module is not enabled in httpd.conf</p>
<p>Check for the &#8220;<strong>AllowOverride</strong>&#8221; settings. It should be set to &#8220;<strong>All</strong>&#8220;. By default it will be &#8220;<strong>None</strong>&#8221;</p>
<p>Things should work fine after this. Also I found a small good script to check at this URL to see whether mod_rewrite is enabled or not http://www.webune.com/forums/how-to-test-check-if-mod-rewrite-is-enabled-t40.html</p>
<p>Good Luck guys!</p>
<div class="tweetthis" style="text-align:left;"><p> <a  class="tt" href="http://twitter.com/home/?status=Enabling+mod_rewrite+in+Apache+2.2+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F590" title="Post to Twitter"><img class="nothumb" src="http://www.supportsages.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter3.png" alt="Post to Twitter" /></a> <a  class="tt" href="http://twitter.com/home/?status=Enabling+mod_rewrite+in+Apache+2.2+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F590" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.supportsages.com/blog/2009/12/enabling-mod_rewrite-in-apache-2-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recompile PHP for Litespeed webserver</title>
		<link>http://www.supportsages.com/blog/2009/10/recompile-php-for-litespeed-webserver/</link>
		<comments>http://www.supportsages.com/blog/2009/10/recompile-php-for-litespeed-webserver/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 12:05:58 +0000</pubDate>
		<dc:creator>George</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[cPanel]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Howtos]]></category>

		<guid isPermaLink="false">http://www.supportsages.com/blog/?p=570</guid>
		<description><![CDATA[LSAPI is LiteSpeed’s open-source <acronym title="Application Programming Interface">API</acronym> between external applications and LiteSpeed Web Server. This how-to is <span>for</span> compiling and installing <acronym title="Hypertext Preprocessor"><span>PHP</span></acronym> + LSAPI on Linux, <acronym title="Operating System">OS</acronym> X, FreeBSD, Solaris, and so on.  LiteSpeed  comes with PHP 4.4.x compiled with LSAPI. To change the LightSpeed php to the latest stable one, we need to recompile the php with the LSAPI for LiteSpeed.

I  am trying to provide some info for doing this task.

<strong>Instructions:</strong>

<strong>a)  Download the required php  from php.net</strong>

<em> wget  http://in2.php.net/get/php-5.2.11.tar.bz2/from/this/mirror</em>

<em> tar -xzvf  php-5.2.11.tar.bz2</em>

<em>cd php-5.2.11/sapi</em>

<strong>b) Download and  the  latest LSAPI <span>for</span> <acronym title="Hypertext Preprocessor"><span>PHP</span></acronym> from <a ...]]></description>
			<content:encoded><![CDATA[<p>LSAPI is LiteSpeed’s open-source <acronym title="Application Programming Interface">API</acronym> between external applications and LiteSpeed Web Server. This how-to is <span>for</span> compiling and installing <acronym title="Hypertext Preprocessor"><span>PHP</span></acronym> + LSAPI on Linux, <acronym title="Operating System">OS</acronym> X, FreeBSD, Solaris, and so on.  LiteSpeed  comes with PHP 4.4.x compiled with LSAPI. To change the LightSpeed php to the latest stable one, we need to recompile the php with the LSAPI for LiteSpeed.</p>
<p>I  am trying to provide some info for doing this task.</p>
<p><strong>Instructions:</strong></p>
<p><strong>a)  Download the required php  from php.net</strong></p>
<p><em> wget  http://in2.php.net/get/php-5.2.11.tar.bz2/from/this/mirror</em></p>
<p><em> tar -xzvf  php-5.2.11.tar.bz2</em></p>
<p><em>cd php-5.2.11/sapi</em></p>
<p><strong>b) Download and  the  latest LSAPI <span>for</span> <acronym title="Hypertext Preprocessor"><span>PHP</span></acronym> from <a  title="http://www.litespeedtech.com/products/lsapi/download/" rel="nofollow" href="http://www.litespeedtech.com/products/lsapi/download/">http://www.litespeedtech.com/</a> into the “sapi” folder of <span>php</span> source: </strong></p>
<p><em> wget http://www.litespeedtech.com/packages/lsapi/php-litespeed-4.10.tgz</em></p>
<p><em>tar  -xvf php-litespeed-4.10.tgz</em></p>
<p><strong>c) Change directory to root <acronym title="Hypertext Preprocessor"><span>PHP</span></acronym> source directory and run commands:</strong></p>
<p><em>cd ..</em></p>
<p><em> touch ac*</em></p>
<p><em> ./buldconf &#8211;force</em></p>
<p><strong>d) Configure/Compiling </strong></p>
<p>If you have an  apache compilation already , remove the part   option &#8220;&#8211;with-apxs&#8221; and use    &#8221; &#8211;with-litespeed&#8221;  . Also  you may need to change the &#8220;prefix&#8221; option too . So a basic  configure command would be like  this</p>
<p><em>./configure  &#8216;&#8211;prefix=/lsphp5&#8242; &#8216;&#8211;with-litespeed&#8217; &#8216;with-mysql&#8217;</em></p>
<p><em>make</em></p>
<p><em>make install </em></p>
<p>Note: You must compile PCRE support inorder for the default auto-index php script to work correctly</p>
<p><strong>Post Install Configurations </strong></p>
<p><strong>1. Replace the existing lsphp binary with the new one. </strong></p>
<p>Change the directory to the current installation of &#8220;lsws&#8221; ( it varies on different machines)</p>
<p><em> cd  /usr/local/lsws/fcgi-bin</em></p>
<p><em> mv lsphp lsphp.old</em></p>
<p><em>cp /php-5.2.11/sapi/litespeed/php lsphp-5.2.11</em></p>
<p><em>ln -sf lsphp5 lsphp-5.2.11</em></p>
<p><strong>Check Installation</strong></p>
<p><em>/usr/local/lsws/fcgi-bin/lsphp5 -v</em></p>
<p>It should return something like:</p>
<pre><span>PHP</span> 5.2.11 (litespeed) (built: Sep26 2008 14:09:09)
Copyright (c) 1997-2004 The <span>PHP</span> Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies</pre>
<p>Notice <strong>litespeed</strong> in parenthesis. This means that the <acronym title="Hypertext Preprocessor"><span>PHP</span></acronym> binary has litespeed (LSAPI) support builtin.</p>
<h4 style="text-align: justify;">2. php.ini</h4>
<p style="text-align: justify;">The php.ini file will be located at /usr/local/lsws/php/php.ini</p>
<p style="text-align: justify;">If we want to use the old PHP.ini just copy it here.</p>
<pre style="text-align: justify;"># cd /usr/local/lsws/php
# mv php.ini php.ini.old
# cp /usr/local/ZEND/etc/php.ini .</pre>
<h4 style="text-align: justify;">3. Restart Litespeed Webserver</h4>
<p style="text-align: justify;">Finally restart LSWS and use our new PHP binary.</p>
<pre style="text-align: justify;"><strong>/usr/local/lsws/bin/lswsctrl restart </strong></pre>
<pre>
<strong></strong></pre>
<div class="tweetthis" style="text-align:left;"><p> <a  class="tt" href="http://twitter.com/home/?status=Recompile+PHP+for+Litespeed+webserver++http%3A%2F%2Fwww.supportsages.com%2Fblog%2F570" title="Post to Twitter"><img class="nothumb" src="http://www.supportsages.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter3.png" alt="Post to Twitter" /></a> <a  class="tt" href="http://twitter.com/home/?status=Recompile+PHP+for+Litespeed+webserver++http%3A%2F%2Fwww.supportsages.com%2Fblog%2F570" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.supportsages.com/blog/2009/10/recompile-php-for-litespeed-webserver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>500 Internal Server due to low RLimitMem value</title>
		<link>http://www.supportsages.com/blog/2009/08/500-internal-server-due-to-low-rlimitmem-value/</link>
		<comments>http://www.supportsages.com/blog/2009/08/500-internal-server-due-to-low-rlimitmem-value/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 01:03:02 +0000</pubDate>
		<dc:creator>arnold</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[cPanel]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.supportsages.com/blog/?p=530</guid>
		<description><![CDATA[Website was causing 500 Internal Server error while loading the php pages. Error log was saying the error below
<blockquote>/usr/bin/php: error while loading shared libraries: libpthread.so.0: failed to map segment from shared object: Cannot allocate memory</blockquote>
Investigation led the issue to be <strong>RLimitMem</strong> directive enabled by the client being too low. RLimit directives of apache often gives a false feeling of limiting the user resources.

Commenting out<strong> RLimitMem</strong> value solved the issue. If that also didn't fix the issue, check out for the limit settings in <strong>/etc/security/limits.conf</strong>

I hope this helps a bit sometime in the future for my fellow SAGEs]]></description>
			<content:encoded><![CDATA[<p>Website was causing 500 Internal Server error while loading the php pages. Error log was saying the error below</p>
<blockquote><p>/usr/bin/php: error while loading shared libraries: libpthread.so.0: failed to map segment from shared object: Cannot allocate memory</p></blockquote>
<p>Investigation led the issue to be <strong>RLimitMem</strong> directive enabled by the client being too low. RLimit directives of apache often gives a false feeling of limiting the user resources.</p>
<p>Commenting out<strong> RLimitMem</strong> value solved the issue. If that also didn&#8217;t fix the issue, check out for the limit settings in <strong>/etc/security/limits.conf</strong></p>
<p>I hope this helps a bit sometime in the future for my fellow SAGEs</p>
<div class="tweetthis" style="text-align:left;"><p> <a  class="tt" href="http://twitter.com/home/?status=500+Internal+Server+due+to+low+RLimitMem+value+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F530" title="Post to Twitter"><img class="nothumb" src="http://www.supportsages.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter3.png" alt="Post to Twitter" /></a> <a  class="tt" href="http://twitter.com/home/?status=500+Internal+Server+due+to+low+RLimitMem+value+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F530" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.supportsages.com/blog/2009/08/500-internal-server-due-to-low-rlimitmem-value/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Win32 style directory indexing in apache &#8211; Date and Size along with the name</title>
		<link>http://www.supportsages.com/blog/2009/07/win32-style-directory-indexing-in-apache-date-and-size-along-with-the-name/</link>
		<comments>http://www.supportsages.com/blog/2009/07/win32-style-directory-indexing-in-apache-date-and-size-along-with-the-name/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 14:03:34 +0000</pubDate>
		<dc:creator>George</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Specials]]></category>
		<category><![CDATA[dat and size in indexing]]></category>
		<category><![CDATA[directory index]]></category>
		<category><![CDATA[fancy indexing]]></category>

		<guid isPermaLink="false">http://www.supportsages.com/blog/?p=453</guid>
		<description><![CDATA[Inorder to have win32 styled directory indexing in apache, you need to make sure that mod_autoindex module is installed and active in the server. In cPanel 11 servers, it will have the modules enabled in, /usr/local/apache/conf/extra/httpd-autoindex.conf

So for the client who want to have the fancy directory indexing to be enabled, just add the below lines to his .htaccess
<blockquote>Options +Indexes
IndexOptions FancyIndexing VersionSort</blockquote>
I hope this snippet will help someone!]]></description>
			<content:encoded><![CDATA[<p>Inorder to have win32 styled directory indexing in apache, you need to make sure that mod_autoindex module is installed and active in the server. In cPanel 11 servers, it will have the modules enabled in, /usr/local/apache/conf/extra/httpd-autoindex.conf</p>
<p>So for the client who want to have the fancy directory indexing to be enabled, just add the below lines to his .htaccess</p>
<blockquote><p>Options +Indexes<br />
IndexOptions FancyIndexing VersionSort</p></blockquote>
<p>I hope this snippet will help someone!</p>
<div class="tweetthis" style="text-align:left;"><p> <a  class="tt" href="http://twitter.com/home/?status=Win32+style+directory+indexing+in+apache+-+Date+and+Size+along+with+the+name+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F453" title="Post to Twitter"><img class="nothumb" src="http://www.supportsages.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter3.png" alt="Post to Twitter" /></a> <a  class="tt" href="http://twitter.com/home/?status=Win32+style+directory+indexing+in+apache+-+Date+and+Size+along+with+the+name+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F453" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.supportsages.com/blog/2009/07/win32-style-directory-indexing-in-apache-date-and-size-along-with-the-name/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How would I see the available versions of cPanel and Apache in a cPanel installed server ?</title>
		<link>http://www.supportsages.com/blog/2009/04/how-would-i-see-the-available-versions-of-cpanel-and-apache-in-a-cpanel-installed-server/</link>
		<comments>http://www.supportsages.com/blog/2009/04/how-would-i-see-the-available-versions-of-cpanel-and-apache-in-a-cpanel-installed-server/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 06:57:24 +0000</pubDate>
		<dc:creator>Fabian</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[cPanel]]></category>
		<category><![CDATA[changelog]]></category>
		<category><![CDATA[easyapache]]></category>

		<guid isPermaLink="false">http://www.supportsages.com/blog/?p=30</guid>
		<description><![CDATA[Solution #1 : Keep browsing http://changelog.cpanel.net/ every day :-)

Solution #2 :  /scripts/easyapache --latest-versions

Easy::Apache v3.2.0 Build 4660

[Apache]
1.3.41, 2.0.63, 2.2.11

[PHP 4]
4.4.6, 4.4.7, 4.4.8, 4.4.9

[PHP 5]
5.2.5, 5.2.6, 5.2.8, 5.2.9]]></description>
			<content:encoded><![CDATA[<p>Solution #1 : Keep browsing http://changelog.cpanel.net/ every day <img src='http://www.supportsages.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Solution #2 :  /scripts/easyapache &#8211;latest-versions</p>
<p>Easy::Apache v3.2.0 Build 4660</p>
<p>[Apache]<br />
1.3.41, 2.0.63, 2.2.11</p>
<p>[PHP 4]<br />
4.4.6, 4.4.7, 4.4.8, 4.4.9</p>
<p>[PHP 5]<br />
5.2.5, 5.2.6, 5.2.8, 5.2.9</p>
<div class="tweetthis" style="text-align:left;"><p> <a  class="tt" href="http://twitter.com/home/?status=How+would+I+see+the+available+versions+of+cPanel+and+Apache+in+a+cPanel+installed+server+%3F+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F30" title="Post to Twitter"><img class="nothumb" src="http://www.supportsages.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter3.png" alt="Post to Twitter" /></a> <a  class="tt" href="http://twitter.com/home/?status=How+would+I+see+the+available+versions+of+cPanel+and+Apache+in+a+cPanel+installed+server+%3F+http%3A%2F%2Fwww.supportsages.com%2Fblog%2F30" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.supportsages.com/blog/2009/04/how-would-i-see-the-available-versions-of-cpanel-and-apache-in-a-cpanel-installed-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

