This is a complete working solution to build Apache (httpd-2.2.25), MySQL (MySQL-5.6.14) and PHP (PHP-5.5.5) from the sources. Article tested many times on CentOS 6.4 and you can directly copy & paste the commands below to build the lastest releases. We advise you to use a freshly installed OS as compiling may corrupt or delete your existing structure or data. The solution both tested on a clean dedicated server and a KVM virtualized VPS.
Before you begin your compilation you should need additional header files and libraries required, please use the following code to install pre-requisities, don’t delete them as you would definitely need them when you upgrade to new releases also:
yum install make gcc automake zlib-devel bison cmake libtool wget gcc-c++ unzip ncurses-devel openssl-devel pcre-devel libxml2-devel curl-devel gd-devel libxslt-devel
Building & Installing Apache prefork
download the latest release of Apache Web Server and unpack:
wget http://ftp.itu.edu.tr/Mirror/Apache//httpd/httpd-2.2.25.tar.gz tar zxvf httpd-2.2.25.tar.gz cd httpd-2.2.25
We advise you to configure with the options below as this form is widely used:
./configure \
"--prefix=/etc/httpd" \
"--exec-prefix=/etc/httpd" \
"--bindir=/usr/bin" \
"--sbindir=/usr/sbin" \
"--sysconfdir=/etc/httpd/conf" \
"--enable-so" \
"--enable-dav" \
"--enable-dav-fs" \
"--enable-dav-lock" \
"--enable-suexec" \
"--enable-deflate" \
"--enable-unique-id" \
"--enable-mods-static=most" \
"--enable-reqtimeout" \
"--with-mpm=prefork" \
"--with-suexec-caller=apache" \
"--with-suexec-docroot=/" \
"--with-suexec-gidmin=100" \
"--with-suexec-logfile=/var/log/httpd/suexec_log" \
"--with-suexec-uidmin=100" \
"--with-suexec-userdir=public_html" \
"--with-suexec-bin=/usr/sbin/suexec" \
"--with-included-apr" \
"--with-pcre=/usr" \
"--includedir=/usr/include/apache" \
"--libexecdir=/usr/lib/apache" \
"--datadir=/var/www" \
"--localstatedir=/var" \
"--enable-logio" \
"--enable-ssl" \
"--enable-rewrite" \
"--enable-proxy" \
"--enable-expires" \
"--with-ssl=/usr" \
"--enable-headers"
to build and install source distro, type:
make make install
Build & Install MySQL
Since we need headers and libraries of mysql for compiling PHP, we will first install MySQL server before PHP compilation.
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.14.tar.gz/from/http://cdn.mysql.com/ tar zxvf mysql-5.6.14.tar.gz cd mysql-5.6.14 groupadd mysql useradd -g mysql mysql cmake . -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock make make install
If you encounter problems while running cmake, you have to delete CmakeCache.txt before re-compiling with cmake
#log in to newly created mysql dir cd /usr/local/mysql/ #change owner and group chown -R mysql:mysql . scripts/mysql_install_db --user=mysql --datadir=/var/lib/mysql #add service command cp support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on #start mysql server service mysqld start
change your mysql password by typing:
./bin/mysqladmin -u root password 'new-password' ./bin/mysqladmin -u root -h change.this.hostname password 'new-password'
Build libmcrypt from the source
libmcypt repo is not included in the main yum repo, so better install it from the source:
wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download?use_mirror=garr tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8 ./configure make make install
Building PHP-5.5.5 from the source
PHP configuration is also given with the mostly used modules & functionality, download unpack & configure as stated below:
wget http://us2.php.net/get/php-5.5.5.tar.gz/from/this/mirror
tar zxvf php-5.5.5.tar.gz
cd php-5.5.5
./configure \
--with-apxs2 \
--with-curl=/usr \
--with-gd \
--with-gettext \
--with-jpeg-dir=/usr \
--with-freetype-dir=/usr \
--with-kerberos \
--with-openssl \
--with-mcrypt=/usr/local/lib \
--with-mhash \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pcre-regex \
--with-pear \
--with-png-dir=/usr \
--with-xsl \
--with-zlib \
--with-zlib-dir=/usr \
--with-iconv \
--enable-bcmath \
--enable-calendar \
--enable-exif \
--enable-ftp \
--enable-gd-native-ttf \
--enable-soap \
--enable-sockets \
--enable-mbstring \
--enable-zip \
--enable-wddx
make
make install
libtool --finish /root/php-5.5.5/libs
cp php.ini-production /usr/local/lib/php.ini
sed -i 's/;date.timezone =.*/ date.timezone \= "Europe\/Istanbul"/' /usr/local/lib/php.ini
Download phpMyAdmin and install it to webroot:
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.0.8/phpMyAdmin-4.0.8-all-languages.tar.gz tar zxvf phpMyAdmin-4.0.8-all-languages.tar.gz mv phpMyAdmin-4.0.8-all-languages /var/www/ mv /var/www/phpMyAdmin-4.0.8-all-languages/ /var/www/phpMyAdmin
create a test page to see if everything went well:
echo "<?PHP phpInfo();?>" > /var/www/index.php
If you cannot see a PHP info page, you need to add httpd directives to your httpd.conf:
echo "AddType application/x-httpd-php .php" >> /etc/httpd/conf/extra/httpd-php.conf echo "AddType application/x-httpd-php-source .phps" >> /etc/httpd/conf/extra/httpd-php.conf echo "Include conf/extra/httpd-php.conf" >> /etc/httpd/conf/httpd.conf
restart apache by typing: apachectl restart

