Create a php project which retrieve records from AWS RDS Database instances running on AWS EC2 instances
	          EC2 Instance	         RDS Instance
----------------------------------------------------------------
Instance type	  t2.micro (Free tier)	 db.t2.micro (Free tier)
Availability zone us-east-1	         us-east-1
Security group	  DemoSG	         DemoSG
IAM role	  RDSfullaccess-role	 ----------
Root volume	  8 GB SSD	         8GB SSD
Public IP address Yes	                 Yes
VPC ID and Subnet Default	         Default 
--------------------------------------------------------------
Security Group (DemoSG):
--------------------------------------------------------------
inbound : open http (80), https (443), ssh (22) and
          MySQL/Aurora (3306)
Outbound: All traffic
IAM role: Attach AmazonRDSReadOnlyAccess policy 
--------------------------------------------------------------  
Test the RDS Database connection from the Linux/Ubuntu Terminal
---------------------------------------------------------------
Install the NETCAT software     
$sudo yum install nc
Test the RDS connection           
$nc -zv      (Syntax) 
---------------------------------------------------------------  
Steps to install Apache Webserver on Centos 7:
---------------------------------------------------------------
step1: Connect to your EC2 instance and install the Apache web server
       $ sudo yum -y install httpd
step2: About service.
       $ sudo systemctl start httpd  [start the apache server]
       $ sudo systemctl enable httpd [apche start at boot]
       $ sudo systemctl status httpd  	[check the status of httpd]
       $ sudo systemctl stop httpd   	 [stop the appache]
step3: Create a sample html file [index.html]
       $ vi /var/www/html/index.html
        
        Demo Page 
         Welcome to Apace Webserver! 
        
step4: Open a browser window and enter the URL to access the file 
(It is the public DNS name of the EC2 instance followed by the file name)
        http://EC2-instance-public-DNS
Step5:  Add the www group to your instance
	$sudo group add www
step7: Add your user (in our case centos) to the www group
	sudo usermod -a -G www centos
	Logout and connect the instance onces again
step8:Change the group ownership of /var/www and connects to the www group
	sudo chown -R root:www /var/www
step9: Recursively change the directory permissions of /var/www 
       and its subdirectories to add group
       Write permissions to set the group ID on future subdirectories
	sudo chmod 2775 /var/www
	$find /var/www -type d -exec sudo chmod 2775 {}\;
step10: Recursively change the file permissions of /var/www 
        and its subdirectories to add group write
        Permissions $find /var/www -type f -exec sudo chmod 0664 {}\;
----------------------------------------------------------------------
Install the PHP, extensions and configure the php.ini
-----------------------------------------------------------------------
step1: Connect to the EC2 Instance and install the PHP
	$sudo yum install php
Step2: Restart the httpd service 
        $sudo systemctl restart httpd.service
Step3: Install the PHP extensions or Modules
	$sudo yum search php-       
       (display all the php packages)
	$sudo yum install php-fpm  
       (PHP FastCGI Process Manager)
	$sudo yum install php-dba  
       (A database abstraction layer module for PHP applications)
	$sudo yum install php-mysqlnd .
       (A module for PHP applications that use MySQL databases)
	$sudo yum install php-pdo     
       (A database access abstraction module for PHP applications)
	$sudo yum install php-pgsql   
       (A PostgreSQL database module for PHP)
Step4: Add the extension in php.ini in same order and 
       restart httpd service (/etc/php.ini)
	extension pdo.so
	extension mysqlnd.so
	extension pdo_sqlite.so
	extension pdo_mysqlnd.so
	extension pdo_sqlite.so
	extension mysqlnd_mysql.so
step5:  Create files in /var/www/html 
-------------------------------------------------------------------------
        index.html
-------------------------------------------------------------------------
        
	
	Connect to the DataBase! 
	
	
	
-----------------------------------------------------------------
         dbinfo.inc
------------------------------------------------------------------
	
-----------------------------------------------------------------
        script.php
-----------------------------------------------------------------
	
	
	DATABASE TABLE 
	";
	}
  	// Free result set
  	mysqli_free_result($result);
 	 mysqli_close($con);
	?>
	
	
Step6:  To bind the address form our httpd web server with RDS instances, 
        we need to run the following Commands:
        $ausearch -c 'httpd' --raw | audit2allow -M my-httpd
        $semodule -X 300 -i my-httpd.pp
-------------------------------------------------------------------------
      Logs and Important files used for debugging
------------------------------------------------------------------------
httpd: 		/var/log/httpd/access_log 
		 /var/log/httpd/error_log
		 /etc/httpd/conf/httpd.conf 
		/etc/httpd/modules
PHP modules:   /usr/lib64/php/modules 
	       /etc/php.ini
Datadir  	/var/lib/mysql
Socket   	 /var/lib/mysql/mysql.sock
MySQL file      /etc/my.cnf
------------------------------------------------------------------------
RDS Database SQL Quieres:
-------------------------------------------------------------------------
Step1: MySQL workbench download url: 
       http://dev.mysql.com/downloads/workbench/
Step2: Install the MSI installer [windowns] 
       $sudo apt-get install mysql-server [ubuntu]
       $sudo yum install mysql-server      [linux] 
Step3: >mysql -h yourDatabaseEndpoint -P 3306 -u USERNAME -p
>show databases;    [Show the Databases]
>use database_name; [use the following database] 
>Create table Employee(
 ID integer(3),name varchar(20),desg varchar(20),sal integer(6));
>desc Employee;
Step4: >insert into Employee(ID,name,desg,sal)values(101,'fasi','CEO',80000);
       >insert into Employee(ID,name,desg,sal)values(102,'Raj','SSE',50000);
       >insert into Employee(ID,name,desg,sal)values(103,'suraj','SE',30650);
       >insert into Employee(ID,name,desg,sal)values(104,'prem','HW',18800);
Step5: > select * from Employee;
----------------------------------------------------------------------------------
IF you want to create Docker container
Convert your PHP application into Image by using Docker file below:
Note:  copy the /etc/php.ini file to your /var/www/html/
       where your Dockerfile is there
Dockerfile:
------------
FROM centos/httpd
RUN yum install -y php
RUN yum install -y php-mysqlnd php-fpm php-dba
COPY .  /var/www/html/
COPY php.ini /etc/php.ini
EXPOSE 80
Run these commands:
---------------------
docker build -t fasi/httpd .
docker run -d -p 80:80 fasi/httpd
docker exec -it  bash
Test in the browser:
http://yourEC2_public_IP_addresss
 
 
 
 
          
      
 
  
 
 
 
 
 
 
 
 
 
 
 
No comments:
Post a Comment