该实验分为四个部分,实验一为搭建LNMP平台,实验二为测试能否解析php的文件

  和连接数据库的效果,实验三为实现地址重写的功能,实验四为不同的浏览器,给出不同样式的页面

实验一:部署LNMP环境

   

一、目标

    安装部署Nginx、MariaDB、PHP环境

  • 安装部署Nginx、MariaDB、PHP、PHP-FPM;

  • 启动Nginx、MariaDB、FPM服务;

  • 并测试LNMP是否工作正常。



二、各软件的安装

     1、安装源码包安装时需要的依赖包

          yum -y install gcc openssl-devel pcre-devel zlib-devel

    2、源码安装nginx

         useradd -s /sbin/nologin nginx              //添加帐号和组

         tar -xf nginx-1.8.0.tar.gz                     //解压源码包

         cd nginx-1.8.0/                                  //进入解压后的目录         

              ./configure \

                 > -prefix=/usr/local/nginx \          //指定安装路径

                 > -user=nginx \                         //指定用户名

                 > -group=nginx \                      //指定用户组

                 > -with-http_ssl_module          //安装安全模块

       make  && make install                    //编译和安装

       ln -s /usr/local/nginx/sbin/nginx /usr/sbin/   //做软链接,方便服务启动

   3、安装mariadb

        yum –y install   mariadb   mariadb-server   mariadb-devel

        mariadb-devel     //指的是包含开发首要的文件和一些静态库

   4、安装php和php-fpm

        yum –y  install  php   php-mysql     //安装php解释器和连接mysql的工具

       rpm    -ivh php-fpm-5.4.16-36.el7_1.x86_64.rpm    //FastCGI进程管理器

   5、启动三个服务

       nginx                                  //启动nginx服务

       systemctl start mariadb      //启动mariadb数据库

      systemctl start php-fpm      //启动fastcgi进程管理器


实验二、构建LNMP平台

 

一、目标

    沿用实验一,通过调整Nginx服务端配置,实现以下目标:

  1. 配置Fast-CGI支持PHP网页

  2. 创建PHP测试页面,测试使用PHP连接数据库的效果


二、方案

       使用2台RHEL7虚拟机,其中一台作为LNMP服务器(192.168.4.103)、

 另外一台作为测试用的Linux客户机(192.168.4.101)

      Nginx结合FastCGI技术即可支持PHP页面架构,因此本案例,需要延续实验一的实验内容

通过修改Nginx及php-fpm配置文件实现对PHP页面的支持

三、实施步骤

   1、创建并修改php-fpm配置文件   

  1. [www]              

  2. listen = 127.0.0.1:9000                  //php的监听端口

  3. listen.allowed_clients = 127.0.0.1   //

  4. user = apache

  5. group = apache

  6. pm = dynamic                              //进程管理方式为动态

  7. pm.max_children = 50                  //最大进程数

  8. pm.start_servers = 5                   //最小进程数

  9. pm.min_spare_servers = 5           //最少需要几个空闲着的进程

  10. pm.max_spare_servers = 35         //最多允许几个进程处于空闲状态

    重启服务

 2、修改Nginx配置文件并启动服务

  1. location / {

  2.      root   html;

  3.      index  index.php  index.html   index.htm;

  4.    }

  5. location  ~  \.php$  {

  6.      root           html;

  7.      fastcgi_pass   127.0.0.1:9000;   //把找到的页面给php来解析

  8.      fastcgi_index  index.php;

  9.      include        fastcgi.conf;     //包含的文件,此处需修改

  10.    }

    重启服务

 3、创建PHP测试页面,来测试是否能解析成功

       

  1. [root@svr5 ~]# vim /usr/local/nginx/html/test1.php

  2. <?php

  3. $i="This is a test Page";

  4. echo $i;

  5. ?>


4、创建PHP测试页面,连接MariaDB数据库 

     

   <?php

         $links=mysql_connect("localhost","root","");

        if($links){

           echo "link mysqldb ok";

         }

     else{

          echo "link mysqldb no";

      }

  ?>

5、创建PHP测试页面,连接并查询MariaDB数据库

   

   <?php

         $mysqli = new mysqli('localhost','root','','mysql');

         if (mysqli_connect_errno()){

        die('Unable to connect!'). mysqli_connect_error();

       }

        $sql = "select * from user";

        $result = $mysqli->query($sql);

        while($row = $result->fetch_array()){

                  printf("Host:%s",$row[0]);

                  printf("</br>");

                  printf("Name:%s",$row[1]);

                  printf("</br>");

              }

   ?>

日志文件的两个地址:   /usr/local/nginx/logs/error.log       /var/log/php-fpm/error.log



实验三、地址重写


一、实验目标

    沿用实验一,通过调整Nginx服务端配置,实现以下目标:

  1. 所有访问a.html的请求,重定向到b.html;

  2. 所有访问192.168.4.103的请求重定向至www.baidu.com;

  3. 所有访问192.168.4.103/下面子页面,重定向至www.baidu.com/下相同的页面;

  4. 实现curl访问不同的页面。




二、方案

     关于Nginx服务器的地址重写,主要用到的配置参数是rewrite:

     rewrite  旧地址或文件(支持正则表达式)新地址或文件   [选项];


三、实施步骤

   步骤一:修改配置文件(访问a.html重定向到b.html)

         1、修改Nginx服务配置,只需要修改一行:

  1. server {

  2.    listen       80;

  3.    server_name  localhost;

  4. location / {

  5.     root   html;

  6.    index  index.html index.htm;

  7.    rewrite /a.html  /b.html;       //访问a.html页面时自动跳转到b.html      

  8. }

  9. }

           2、创建两个不同的页面文件

         3、重新加载服务,去客户端测试

  步骤二:修改配置文件(访问192.168.4.5的请求重定向至www.baidu.com)

          1、修改Nginx服务配置          

  1.   server {

  2.         listen       80;

  3.         server_name  www.test.com;

  4.         rewrite    ^/      http://www.baidu.com/;   //    ^/表示以/开头的所有,

  5.                                        即不管访问www.test.com网站都会跳转到www.baidu.com

  6.    location / {

  7.             root   html;

  8.            index  index.html index.htm;

  9. }

  10. }

       2、重新加载配置文件,去客户端测试

     

 步骤三:修改配置文件(访问www.test.com/下面子页面,重定向至www.baidu.com/下相同的页面)

    1、修改Nginx服务配置

       

  1.   server {

  2.         listen       80;

  3.         server_name  www.test.com;

  4.         rewrite ^/(.*) http://www.baidu.com/$1;   //前面括号里面的时正则表达式,$1复制前面的内容

  5.  location / {

  6.        root   html;

  7.      index  index.html index.htm;

  8. }

  9. }

   2、重新加载文件,去客户端测试


实验四、不同浏览器得到不同样式的页面

   其它同上,只需要在配置文件里面加一个判断语句

  

  if ($http_user_agent ~* firefox){     //如果里面有firefox字段,

          rewrite ^/(.*)   /curl/$1;             //跳转页面

     }

 其它浏览器走默认的