Saturday, February 1, 2014

LAMP Installation and Configuration form Source Code



About LAMP :

LAMP stack is a group of open source software used to get web servers up and running. The acronym stands for Linux, Apache, MySQL, and PHP (it can be either python or perl). LAMP represents a full featured stack containing the most popular web server known as Apache. The most popular database server MySQL and the most popular open-source web programming language known as PHP. In This Documentation I will show you how can we install the LAMP stack from the source code.

Step – 1 Basic Configuration Checking.
1. To check the System Architecture.

2. To Check the Network Information (IP).

3. To check the Hostname for the LAMP Server.

4. To stop the IPtables and Check the Rules.

5. To check  Selinux Enabled or Disabled.

Step – 2  LAMP Installations and Configuration.

Directory Structure of my Installation:

          /usr/local/src/                     =>      The Downloaded .tar file will be save here.
            /usr/local/lamp/                 =>      This where I compile install the source code.
            /usr/local/lamp/apache  =>       I will install Apache under this directory.
            /usr/local/lamp/mysql    =>       I will install MySQL under this directory.       
            /usr/local/lamp/php         =>       I will install PHP under this directory.

Check and Remove if already installed RPM’s.

Change the directory and download the source code from internet.

    [root@masterdns src]#  wget  http://in1.php.net/get/php-5.4.8.tar.gz/from/this/mirror
                    

Install Supported / Dependency packages. ( gcc, gcc-c++, make, cmake, ncurses, libxml2-delvel).

Compiling and Testing Apache-Server.

[root@masterdns src]# tar -xvf httpd-2.2.22.tar.gz
[root@masterdns src]# cd httpd-2.2.22
[root@masterdns httpd-2.2.22]# mkdir /usr/local/lamp
[root@masterdns httpd-2.2.22]# ./configure --prefix=/usr/local/lamp/apache --enable-so --enable-mods-shared="most"
[root@masterdns httpd-2.2.22]# make
[root@masterdns httpd-2.2.22]# make install

 Note: What is Configure Script , Make, Make install :

Configure: Configure script Checks some details about the machine on which the software is going to be installed. This script checks for lots of dependencies on your system. For the particular software to work properly, it may be requiring a lot of things to be existing on your machine already. If any of the major requirements are missing on your system, the configure script would exit and you cannot proceed with the installation, until you get those required things. if configure  fails we can not execute the make command.

 Make: Actual Compilation of the source code                 

 Make install: Install the compiled binaries to proper directories.

 --prefix : With prefix we specify the location where want to install the software (/usr/local/lamp/apache/).  Default location will be under (/usr/local/apache2) 

 --enable-so : This will enable DSO (Dynamic Shared Object ) capability so that we can add additional modules  to apache without recompiling  the entire apache.

 --enable-mods-shared="most" : List of modules we want to enable . Here I choose to enable most of the modules.

 Apache Directory structure.     


Starting and Testing Apache.     




    

       After installation, we need to configure the “ServerName” point to localhost in httpd.conf file.
            [root@masterdns apache]# vim conf/httpd.conf
                       ServerName masterdns.shyam.com:80
            [root@masterdns apache]# bin/apachectl start

                       httpd (pid 13198) already running
   
       Now open your Browser and type http://Yourip  or http://masterdns.shyam.com
       Note: The default index.html is locate inside the /usr/local/lamp/apache/htdocs/index.html

         






Compiling and Testing MySQL-Server.
    
       Before compiling the mysql we need to create a user called "mysql" so that we can run the mysql service  under his privilege.

   [root@masterdns src]# groupadd mysql
   [root@masterdns src]# useradd -g mysql mysql

        Extract the downloaded mysql source code and compile.

          [root@masterdns src]# tar -xvf mysql-5.5.28.tar.gz  
          [root@masterdns src]# cd mysql-5.5.28
          [root@masterdns mysql-5.5.28]# cmake --DCMAKE_INSTALL_PREFIX=/usr/local/lamp/mysql   --DMYSQL_DATADIR=/usr/local/lamp/mysql/data
          [root@masterdns mysql-5.5.28]# make
          [root@masterdns mysql-5.5.28]# make install

      Note: If you get any error while running the camke like any dependency error first you need to install the proper rpm  and before running the  cmake  again you should  remove CMakeCache.txt.

          [root@masterdns mysql-5.5.28]# rm  -rf  CMakeCache.txt

        If you installed mysql  rpm already using rpm then you should go through this steps.
          [root@masterdns mysql-5.5.28]# rm -rf /etc/my.cnf
          [root@masterdns mysql-5.5.28]# chkconfig --del mysqld

      Change the ownership for mysql directory.

            [root@masterdns src]# chown -R mysql:mysql /usr/local/lamp/mysql/

      Change to Mysql directory and see the directory content.

     
      Set the MySQL Base Directory and Database Directory using mysql script.


     Copy the MySQL configuration file to /etc/my.cnf

         [root@masterdns mysql]# cp /usr/local/lamp/mysql/support-files/my-medium.cnf  /etc/my.cnf

      To add the MySQL service script to /etc/init.d/ directory and enable prenatally.

         [root@masterdns mysql]# cp /usr/local/lamp/mysql/support-files/mysql.server /etc/init.d/mysqld
         [root@masterdns mysql]# chkconfig --add mysqld
         [root@masterdns mysql]# chkconfig --level 235 mysqld on
         [root@masterdns mysql]# chkconfig --list mysqld
mysqld            0:off    1:off    2:on    3:on    4:on    5:on    6:off
         [root@masterdns mysql]# service mysqld restart
Shutting down MySQL. SUCCESS!
Starting MySQL... SUCCESS!
         [root@masterdns mysql]# netstat -ntlp | grep mysql
tcp     0    0 0.0.0.0:3306     0.0.0.0:*   LISTEN    29421/mysqld        

      Now we need to install MySQL Client package, then only we can access MySQL Server.


      Now access MySQL Server using MySQL Client in terminal.

   
     Compiling and Testing PHP

      Compile the PHP source code with support with Apache and MySQL.

      [root@masterdns src]# tar -xvf php-5.4.8.tar.gz
      [root@masterdns src]# cd php-5.4.8
      [root@masterdns php-5.4.8]# ./configure --prefix=/usr/local/lamp/php --with-apxs2=/usr/local/lamp/apache/bin/apxs --with-mysql=/usr/local/lamp/mysql/
      [root@masterdns php-5.4.8]# make
      [root@masterdns php-5.4.8]# make install
      [root@masterdns php-5.4.8]# cp /usr/local/src/php-5.4.8/php.ini-production /usr/local/lamp/php/lib/php.ini

Checking php module is installed properly.

      [root@masterdns php-5.4.8]# /usr/local/lamp/apache/bin/apachectl -t -D DUMP_MODULES | grep php
              php5_module (shared)
              Syntax OK

       Tell apache to process file starting .php extension.

       Open up the file "/usr/local/lamp/apache/conf/httpd.conf "   then add  " AddHandler  application/x-httpd-php .php "  with in the  <IfModule mime_module> .......   </IfModule>

            [root@masterdns php-5.4.8]# vim /usr/local/lamp/apache/conf/httpd.conf
                        ........................
                        ........................
                        <IfModule mime_module>
                        ........................
                        AddType application/x-compress .Z  
                        AddType application/x-gzip .gz .tgz
                        AddHandler  application/x-httpd-php   .php    .html           
                        .........................               
                        .........................  
                        </IfModule>

       Check Everything works properly.

       Create an index.php under /usr/local/lamp/apache/htdocs/ with the following contents.

            [root@masterdns src]# vim /usr/local/lamp/apache/htdocs/phpinfo.php
                        <?php
                                    phpinfo();
                        ?>

       Now restart the all Services.

[root@masterdns src]# /usr/local/lamp/apache/bin/apachectl start
            httpd (pid 13198) already running
[root@masterdns src]# service mysqld restart
Shutting down MySQL.... SUCCESS!
Starting MySQL...... SUCCESS!

       Now open your Browser and type   http://Yourip/phpinfo.php  or http://masterdns.shyam.com/phpinfo.php
       You will get test page containing information about php, mysql, apache and all the libraries compiled with php.





                                                                        .………………………………………………….
                                                                        ….……………………………………………….
                                                                        …………………………………………………..

                                                                        …………………………………………………..

Making phpinfo.php as the default page.

Edit  the/usr/local/lamp/apache/conf/httpd.conf  as follows.
           
            <IfModule dir_module>
                        DirectoryIndex  index.html
            </IfModule> 

Change to…..

            <IfModule dir_module>
                        DirectoryIndex  phpinfo.php index.html
            </IfModule> 

Removing the Installed LAMP server.
You can simply uninstall the lamp server by removing the directories in which you have installed the source code but   before doing this you should properly stop the running services.

            [root@masterdns ~]# /usr/local/lamp/apache/bin/apachectl stop
            [root@masterdns ~]# service  mysqld stop
            [root@masterdns ~]# rm  -rf   /usr/local/lamp/apache
            [root@masterdns ~]# rm  -rf   /usr/local/lamp/mysql
            [root@masterdns ~]# rm  -rf   /usr/local/lamp/php