LNMP
  L  指的 Linux
  N  指的 nginx
  M  指的 mariadb或者mysql
  P  指的 PHP,Python

搭建lnmp:装包配置启服务

  装包:(nginx需要的基本依赖包)gcc openssl-devel pcre-devel zlib-devel
             (mariadb的安装包)mariadb   mariadb-server   mariadb-devel
             (PHP需要的安装包)php   php-mysql   php-fpm-5.4.16-42.el7.x86_64.rpm(这个不在基本包中,需要额外下载)

  关闭SELinux和firewall

  修改nginx:
    原配置文件中的 65-71,有相关配置,解除其注销#

location ~ \.php$ {                # 可以理解成if或者case,他就是当匹配后面的正则表达式的时候执行下面语句
     root           html;            # documentroot,网站根目录的位置
     fastcgi_pass   127.0.0.1:9000;        # 这个的意思就是php文件给谁解释,一般php解释器是本机的9000端口
     fastcgi_index  index.php;            # 默认没有写文件的时候,打开的网页
     fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
     include        fastcgi_params;
     }

    但是这个配置文件是有问题的,需要修改最后两行,
   fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name; 代表php文件到 /scripts下找,而我们php文件一般放在了html等配置文件写的documentroot下了,所以这配置是错误的
     而include  fastcgi_params; 代表运行的时候读取哪个文件,这个文件也搞错了,所以最后改成

location ~ \.php$ {
     root           html;
     fastcgi_pass   127.0.0.1:9000;        
     fastcgi_index  index.php;
#     fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
     include        fastcgi.conf;
     }

  启动服务:systemctl start  mariadb
          systemctl enable mariadb
          systemctl start php-fpm
          systemctl enable php-fpm


php-fpm的配置文件:
/etc/php-fpm.d/www.conf

[www]
       listen = 127.0.0.1:9000            //PHP的IP和端口号
       pm.max_children = 32                //最大进程数量
       pm.start_servers = 15                //最小进程数量
       pm.min_spare_servers = 5            //最少需要几个空闲着的进程
       pm.max_spare_servers = 32            //最多允许几个进程处于空闲状态

lnmp的简单php文件的基本解释:

<?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);                    # 进行数据库命令操作
?>

LNMP的日志文件,用于派错

   nginx的默认访问日志文件为 /usr/local/nginx/logs/access.log
   nginx的默认错误日志文件为 /usr/local/nginx/logs/error.log
   PHP默认错误日志文件为 /var/log/php-fpm/www-error.log
    如果动态网站访问失败,可用参考错误日志,查找错误信息。


地址重写

   在需要做地址重写的虚拟主机中加入下面的配置,地址重写是顺序执行,重写完进行第二个,一个一个进行,除非选项中明确标出
    rewrite 旧地址 新地址 [选项] 

  选项

    last 不再读其他rewrite,作用是让地址重写,匹配即停止,使得下面的地址重新不影响上面一些已经完成的地址重新,但是只是停止自己所在的位置的rewrite,但是如果下在面的location中又有rewrite的话,还是执行
    break 不再读其他语句,结束请求,匹配rewrite后,下面所有的语句全部不执行,不管location等,所有命令都不阅读,也不执行
    redirect   临时重定向,实现跳转地址栏,就是会让客户端的地址栏中的地址也会变化,要注意,不能修改/地址的时候用这个选项会导致一个无线循环调转,因为新地址中也一定有/导致,根一直在循环调转
    permament 永久重定向


   如果要修改域名,则改成
    rewrite  ^/(.*)  新域名地址$1
   这样,保留子网页的信息,实现 www.a.com/1/2/3 调转后可以自动到 www.b.com/1/2/3上,首先域名重修后子网页不变

   如果要区分登陆的浏览器,使用一个内置变量:$http_user_agent

# 这里,~符号代表正则匹配,*符号代表不区分大小写

if ($http_user_agent ~* firefox) {             //识别客户端firefox浏览器
rewrite ^(.*)$ /firefox/$1;
}                                //如果是firefox浏览器,则进行地址重写

   不过还是要在documentroot下创建好相关的网页文件,上面做的是让网页识别并调转,但调转的目的地是
  
  补充curl的一个使用方法:
      curl -A 'firefox' 127.0.0.1/index.html    # 把自己的curl浏览器伪装成火狐浏览器,进行访问