MySQL安装

卸载原来的mysql步骤

先查看mysql服务有没有启动:ps aux |grep mysql  如果启动把它关掉

先进入到src下删除mysql:

cd /usr/local/src/

删除目录:rm -rf /usr/local/mysql 

删除启动脚本:rm -rf /etc/init.d/mysqld

安装mysql

cd /usr/local/src

 1.下载wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 

 2.解压tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

 3.挪动目录并改名:mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql  (前提是之前没有创建过mysql目录,不然他不会改名为mysql,他会移动到这个目录下,所以要查看一下)

4. 进入到目录下:cd /usr/local/mysql

 创建一个mysql用户:useradd mysql

 创建一个data目录:mkdir /data/  (要是以前安装过musql的话他会有这个目录,需要把删掉)

 5.初始化:出现两个OK才对

./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

6.拷贝配置文件并改名

下面这一步,如果之前装过mysql并且拷贝编辑配置文件过就不用做了

cp support-files/my-default.cnf  /etc/my.cnf

vim /etc/my.cnf  把下边这两个地方的路径定义对

image.png

 7.拷贝一个启动脚本改名为mysqld

cp support-files/mysql.server /etc/init.d/mysqld

 编辑一下:vim /etc/init.d/mysqld 定义basedir和datadir

image.png

8.启动mysql

/etc/init.d/mysqld start

image.png

9.查看mysql服务有没有启动:ps aux |grep mysql

新(LNMP)_第1张图片

10.把mysqld服务加入到服务列表里:

chkconfig --add mysqld

11.设置开机启动:

chkconfig mysqld on

12.这时候就可以用service命令来开启关闭它了

service mysqld stop 关闭

service mysqld start 开启



PHP安装

它在lnmp架构里不需要依赖nginx,它是一个独立的服务

而在apache里边它是apache的一个服务模块必须依赖apache

和LAMP安装PHP方法有差别,需要开启php-fpm服务

 cd /usr/local/src/

假如说你已经安装过php了可以进行以下操作

进入到:cd php-5.6.30  (make clean可以吧以前的配置信息全部删掉,让他回到刚解压完的状态)

新(LNMP)_第2张图片

如果第一次安装则进行以下操作 

下载:wget http://cn2.php.net/distributions/php-5.6.30.tar.gz

解压:tar zxf php-5.6.30.tar.gz

添加php-fpm用户:useradd -s /sbin/nologin php-fpm

因为已经有php目录了,我们给它叫php-fpm

image.png

编译:./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl  --with-openssl

make && make install

拷贝配置文件:cp php.ini-production /usr/local/php-fpm/etc/php.ini  可以查看下etc下边是没有php.ni的

image.png

进入到cd /usr/local/php-fpm/etc/ 目录下

编辑配置文件:vi /usr/local/php-fpm/etc/php-fpm.conf //写入如下内容(参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/php-fpm.conf复制到下边)

新(LNMP)_第3张图片

再回到php目录里:cd /usr/local/src/php-5.6.30

拷贝启动脚本:cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

更改权限:chmod 755 /etc/init.d/php-fpm

加入到服务列表:chkconfig --add php-fpm

开机自启:chkconfig php-fpm on

启动php服务:service php-fpm start

image.png

可以检测一下配置文件有没有错误错误   -t

/usr/local/php-fpm/sbin/php-fpm -t

image.png

查看进程:ps aux |grep php-fpm

新(LNMP)_第4张图片


nginx介绍

Nginx官网 nginx.org,最新版1.15.0,最新稳定版1.14.0 

 Nginx应用场景:web服务、反向代理、负载均衡

 Nginx著名分支,淘宝基于Nginx开发的Tengine,使用上和Nginx一致,服务名,配置文件名都一样,和Nginx的最大区别在于Tenging增加了一些定制化模块,在安全限速方面表现突出,另外它支持对js,css合并

 Nginx核心+lua相关的组件和模块组成了一个支持lua的高性能web容器openresty,参考http://jinnianshilongnian.iteye.com/blog/2280928


Nginx安装

 cd /usr/local/src

 wget http://nginx.org/download/nginx-1.14.0.tar.gz

 tar zxf nginx-1.14.0.tar.gz

进到解压包内:cd /usr/local/src/nginx-1.14.0/

编译:./configure --prefix=/usr/local/nginx

 make &&  make install

 编辑启动脚本:vim /etc/init.d/nginx //复制如下内容(参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx复制到里边)

chmod 755 /etc/init.d/nginx

加入服务:chkconfig --add nginx 

开机自启:chkconfig nginx on 

配置它的配置文件:先进去,cd /usr/local/nginx/conf/

image.png

我们发现它里边已经有一个nginx.conf了,但是我们不用它我们用自己的

> /usr/local/nginx/conf/nginx.conf 重定向等于先清空

 vim nginx.conf //写入如下内容(参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf)

 检查一下有没有出错:/usr/local/nginx/sbin/nginx -t

image.png

 启动:/etc/init.d/nginx  start

service nginx start

image.png

ps aux |grep nginx  

image.png

 netstat -lntp |grep 80

测试一下curl localhost

新(LNMP)_第5张图片

测试php解析

创建一个测试文件:vi /usr/local/nginx/html/1.php //加入如下内容

 curl localhost/1.php   解析成功

image.png




Nginx默认虚拟主机

进到:/usr/local/nginx/conf

编辑vim /usr/local/nginx/conf/nginx.conf //把最后一段server删除

新(LNMP)_第6张图片

增加:include vhost/*.conf;          而vhost目录我们需要创建,看下边操作

image.png

创建conf子目录:mkdir /usr/local/nginx/conf/vhost

进到vhost下:cd vhost/

在创建一个比如aaa.com.conf,编辑

image.png

vim aaa.com.conf //加入如下内容

server
{
    listen 80 default_server;  // 有这个标记的就是默认虚拟主机
    server_name aaa.com;
    index index.html index.htm index.php;
    root /data/wwwroot/default;
}

新(LNMP)_第7张图片

创建目录(因为我们增加的配置文件内容里有这个目录):

mkdir /data/wwwroot/default

然后进到这个目录下:cd /data/wwwroot/default/

定义一个东西:vim index.html 在里边随便写一句:this is the default site.

image.png

或者用这种定向的方式写入:echo “This is a default site.”>/data/wwwroot/default/index.html

写完检查一下有没有错误/usr/local/nginx/sbin/nginx -t

image.png

重新加载(加上选项-s reload):/usr/local/nginx/sbin/nginx -s reload

测试一下看看是否显示刚才定义的那句话:curl localhost

image.png

测试一下指定域名,例如bbb.com:curl -x127.0.0.1:80 bbb.com

image.png



Nginx用户认证

针对整个站点来设置

在这个目录下做操作:cd /usr/local/nginx/conf/vhost

编辑配置文件:创建一个虚拟主机,比如说叫test.com.conf

vim /usr/local/nginx/conf/vhost/test.com.conf//写入如下内容

server
{
    listen 80;
    server_name test.com;
    index index.html index.htm index.php;
    root /data/wwwroot/test.com;
    
      location  /
    {
        auth_basic              "Auth";自定义用户认证的名字
        auth_basic_user_file   /usr/local/nginx/conf/htpasswd;用户名密码文件
      }
}

新(LNMP)_第8张图片

下面是生成密码文件:

如果你上边安装过Apache可以直接用这个命令

没有就安装一个yum install -y httpd 再用上边的命令

-c是生成的意思,你要创建第二用户个就不用加了,要不他就会重置前边设置的密码

后边这个awei是指定用户名字,可以随便定义

/usr/local/apache2.4/bin/htpasswd -c /usr/local/nginx/conf/htpasswd awei

image.png

创建第二个用户的话直接加用户名字就可以,不用-c指定了,假如在创建一个user1用户

image.png

查看一下密码文件:cat /usr/local/nginx/conf/htpasswd

image.png

检查语法错误:/usr/local/nginx/sbin/nginx -t

重新加载:/usr/local/nginx/sbin/nginx -s reload

测试

curl -x127.0.0.1:80 test.com 状态码为401说明需要用户认证

新(LNMP)_第9张图片

我们需要创建index.html目录(不然输入密码会显示404):

mkdir /data/wwwroot/test.com

在创建一个index.html测试文件,并写入内容:echo “test.com”>/data/wwwroot/test.com/index.html

测试指定密码用户,用-u用户加密码:假如用户为awei,密码为123456789

curl -uawei:123456789 -x127.0.0.1:80 test.com -I 访问状态码变为200

image.png

 编辑windows的hosts文件,然后在浏览器中访问test.com会有输入用户、密码的弹窗


针对指定目录的用户认证

条件:比如我们只在访问admin的时候认证

编辑配置文件:vim /usr/local/nginx/conf/vhost/test.com.conf

在后边加admin目录名字就行,这样的话只有访问他的时候才需要验证

新(LNMP)_第10张图片

检查语法错误:/usr/local/nginx/sbin/nginx -t

重新加载:/usr/local/nginx/sbin/nginx -s reload

创建一个测试环境

我们需要创建index.html目录

mkdir /data/wwwroot/test.com/admin

在创建一个index.html测试文件,并写入内容:echo “test.com admin dir”>/data/wwwroot/test.com/admin/index.html

新(LNMP)_第11张图片

假设用户名为awei,密码为123456789测试结果如下

curl -uawei:123456789 -x127.0.0.1:80 test.com/admin/

新(LNMP)_第12张图片


针对访问的一个URL

条件:假如说访问admin.php

编辑配置文件:vim /usr/local/nginx/conf/vhost/test.com.conf  //给它匹配就行了

新(LNMP)_第13张图片

检查语法错误:/usr/local/nginx/sbin/nginx -t

重新加载:/usr/local/nginx/sbin/nginx -s reload

我们需要创建index.html目录

mkdir /data/wwwroot/test.com/admin.php

在创建一个index.html测试文件,并写入内容:echo “test.com admin dir”>/data/wwwroot/test.com/admin.php/index.html

curl -x127.0.0.1:80 test.com/admin.php

新(LNMP)_第14张图片



Nginx域名重定向

条件:假如说test.com是主域名,而我们还有其他域名,例如test2.com;test3.com,等用户访问它们时让它自动跳转到test.com主域名上来

更改test.com.conf

在这个路径下:cd /usr/local/nginx/conf/vhost

server

{

    listen 80;

    server_name test.com test1.com test2.com; test3.com; 在后边在加上多个域名

    index index.html index.htm index.php;

    root /data/wwwroot/test.com;

    if ($host != 'test.com' ) {域名跳转,如果不是test.com

        rewrite  ^/(.*)$  http://test.com/$1  permanent;就让他它调转过来permanent是301的意思)

    }

}

新(LNMP)_第15张图片

测试配置文件:/usr/local/nginx/sbin/nginx -t

重新加载:/usr/local/nginx/sbin/nginx -s reload

测试

假如说我用test2.com去访问index.html。他会显示301并且下边显示他跳转到了test.com域名上边来

curl -x127.0.0.1:80 test2.com/index.html -I

新(LNMP)_第16张图片

 server_name后面支持写多个域名,这里要和httpd的做一个对比

 permanent为永久重定向,状态码为301,如果写redirect则为302



Nginx访问日志

日志格式

打开主配置文件:vim /usr/local/nginx/conf/nginx.conf //搜索log_format 这一段就是用来定义日志格式的

wKioL1mP-cPA-Q0JAABDfQYbdLQ154.png

combined_realip:这是日志个是的名字,可以随便定义,这里写成什么,后边引用他时就写成什么

nginx配置有个特点,他会认为什么时候有分号;,才会结束

日志格式解释:

image.png

 新(LNMP)_第17张图片

除了在主配置文件nginx.conf里定义日志格式外,还需要在虚拟主机配置文件中:

vi /usr/local/nginx/conf/vhost/test.com.conf

增加:access_log /tmp/test.com.log combined_reali;意思是把日志放到一个目录下

新(LNMP)_第18张图片

 这里的combined_realip就是在nginx.conf中定义的日志格式名字,我们没改就用的原来的名字

wKioL1mP-cPA-Q0JAABDfQYbdLQ154.png

测试配置文件:/usr/local/nginx/sbin/nginx -t

重新加载:/usr/local/nginx/sbin/nginx -s reload

访问一下:curl -x127.0.0.1:80 test2.com/index.html -I 

查看一下日志:cat /tmp/test.com.log



Nginx日志切割

自定义shell 脚本(比如说叫nginx_logrotate.sh)

 vim /usr/local/sbin/nginx_logrotate.sh//写入如下内容

#! /bin/bash

d=`date -d "-1 day" +%Y%m%d` #生成昨天的日期,格式为年月日

logdir="/data/logs"#日志的存放路径,假设nginx的日志存放路径为/data/logs/

nginx_pid="/usr/local/nginx/logs/nginx.pid"

cd $logdir#进入到logdir目录下

for log in `ls *.log`#进行一个for循环

do

    mv $log $log-$d

done

/bin/kill -HUP `cat $nginx_pid`生成新的日志文件

新(LNMP)_第19张图片

执行脚本内容:sh -x /usr/local/sbin/nginx_logrotate.sh

新(LNMP)_第20张图片

他现在已经生成了

image.png

写完脚本需要制定一个任务计划:每天凌晨零点执行这个脚本

crontab -e 把下边内容写进去

 0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh



静态日志不记录日志和过期时间

配置如下

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

    {

          expires      7d;

          access_log off;

    }

location ~ .*\.(js|css)$

    {

          expires      12h;#过期时间

          access_log off;

    }

新(LNMP)_第21张图片

模拟一下

先到这个目录下:cd /data/wwwroot/test.com/

编辑:vi 1.gif 随便写点东西

编辑:vi 2.js 随便写点东西

测试一下:

curl -x127.0.0.1:80 test.com/1.gif

curl -x127.0.0.1:80 test.com/2.js

curl -x127.0.0.1:80 test.com/index.html

访问完查看一下日志:

cat /tmp/test.com.log  你会发现他只记录了最后一条

image.png



Nginx防盗链

配置如下,可以和上面的配置结合起来

新(LNMP)_第22张图片

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$

{

    expires 7d;

    valid_referers none blocked server_names  *.test.com ; 定义白名单,我这里假设白名单是test.com,如果不匹配直接403

    if ($invalid_referer) {

        return 403;

    }

    access_log off;

}

测试:

curl -e "http://baidu.com/1.txt" -x127.0.0.1:80 -I test.com/1.gif 403

curl -e "http://test.com/1.txt" -x127.0.0.1:80 -I test.com/1.gif 200



Nginx访问控制

针对目录

需求:访问/admin/目录的请求,只允许某几个IP访问,例如:192.168.232.132和127.0.0.1,其他的不允许,配置如下:

location /admin/
{
    allow 192.168.232.132;
    allow 127.0.0.1;
    deny all;
}

测试 

mkdir /data/wwwroot/test.com/admin/

 echo “test,test”>/data/wwwroot/test.com/admin/1.html

 -t && -s reload

 curl -x127.0.0.1:80 test.com/admin/1.html -I

 curl -x192.168.133.130:80 test.com/admin/1.html -I

针对正则

可以匹配正则,禁止解析php

location ~ .*(upload|image)/.*\.php$  upload是自己定义的,只要是匹配upload的以.php结尾的
{
        deny all;
}

测试 php的文件被拒绝了 txt的文件可以访问

新(LNMP)_第23张图片

image.png

根据user_agent限制,不让任何人任何网站知道访问到你的IP

if ($http_user_agent ~* 'Spider/3.0|YoudaoBot|Tomato')#假如说限制这三家Spider/3.0|YoudaoBot|Tomato 这三家是访问不到你的 加了*匹配时就不分大小写了
{
      return 403;
}

新(LNMP)_第24张图片

 deny all和return 403效果一样



Nginx解析PHP相关配置

配置如下:

location ~ \.php$

    {

        include fastcgi_params;

        fastcgi_pass unix:/tmp/php-fcgi.sock;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;

    }

 fastcgi_pass 用来指定php-fpm监听的地址或者socket

编辑完配置文件先不要重新加载,等测试中在加载,直接测试

测试:

vi /data/wwwroot/test.com/3.php 把下面内容写进去:

phpinfo();

然后curl一下:curl -x127.0.0.1:80 test.com/3.php 这时他是解析不了的,直接把源码输出

image.png

然后重新加载一下配置文件:

/usr/local/nginx/sbin/nginx -s reload

在解析:

curl -x127.0.0.1:80 test.com/3.php




Nginx代理服务器

新(LNMP)_第25张图片

写一个新的配置文件:

cd /usr/local/nginx/conf/vhost

 vim proxy.conf //加入如下内容

server

{

    listen 80;

    server_name ask.apelearn.com;定义域名,要访问的域名


    location /

    {

        proxy_pass      http://121.201.9.155/;远程服务端web服务器的ip。

        proxy_set_header Host   $host;

        proxy_set_header X-Real-IP      $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

}

配置完就可以用linux虚拟机通过这个IPhttp://121.201.9.155来访问ask.apelearn.com论坛了

验证一下:curl ask.apelearn.com/robots.txt

新(LNMP)_第26张图片

为了测试代理是否成功,可以用虚拟机本机IP访问:curl -x127.0.0.1:80 ask.apelearn.com/robots.txt

新(LNMP)_第27张图片



Nginx负载均衡

vim /usr/local/nginx/conf/vhost/load.conf // 写入如下内容

upstream qq_com 这个名字代表着下边的两个IP

{

    ip_hash;

    server 61.135.157.156:80;

    server 125.39.240.113:80;

}

server

{

    listen 80;

    server_name www.qq.com;

    location /

    {

        proxy_pass      http://qq_com;写上边upstream的名字 

        proxy_set_header Host   $host;

        proxy_set_header X-Real-IP      $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

}

yum install -y bind-uitls

dig qq.com域名解析,可以反馈回来IP

新(LNMP)_第28张图片

upstream来指定多个web server


SSL工作原理

         新(LNMP)_第29张图片

1.浏览器发送一个https的请求给服务器;

2.服务器要有一套数字证书,可以自己制作(后面的操作就是阿铭自己制作的证书),也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出>提示页面,这套证书其实就是一对公钥和私钥;

3.服务器会把公钥传输给客户端;

4.客户端(浏览器)收到公钥后,会验证其是否合法有效,无效会有警告提醒,有效则会生成一串随机数,并用收到的公钥加密;

5.客户端把加密后的随机字符串传输给服务器;

6.服务器收到加密随机字符串后,先用私钥解密(公钥加密,私钥解密),获取到这一串随机数后,再用这串随机字符串加密传输的数据(该加密为对称加密,所谓对称加密,就是将数据和私钥也就是这个随机字符串>通过某种算法混合在一起,这样除非知道私钥,否则无法获取数据内容);

7.服务器把加密后的数据传输给客户端;

8.客户端收到数据后,再用自己的私钥也就是那个随机字符串解密;



生成SSL密钥对

先进入到这个目录下:cd /usr/local/nginx/conf

安装openssl这个包yum install -y openssl

生成一个私钥:openssl genrsa -des3 -out tmp.key 2048//key文件为私钥,输入密码:

新(LNMP)_第30张图片

为了方便给它取消密码:openssl rsa -in tmp.key -out aminglinux.key //转换key,取消密码 

删掉没用的这个:rm -f tmp.key

 openssl req -new -key aminglinux.key -out aminglinux.csr//生成证书请求文件,需要拿这个文件和私钥一起生产公钥文件

生成公钥文件:openssl x509 -req -days 365 -in aminglinux.csr -signkey aminglinux.key -out aminglinux.crt

 这里的aminglinux.crt为公钥,aminglinux.key是私钥



Nginx配置SSL

生成一个新的配置文件:vim /usr/local/nginx/conf/vhost/ssl.conf//加入如下内容

server

{

    listen 443;

    server_name aming.com;自己定义,比如叫aming.com

    index index.html index.php;

    root /data/wwwroot/aming.com;创建一下

    ssl on;

    ssl_certificate aminglinux.crt;

    ssl_certificate_key aminglinux.key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

}

创建一个路径:mkdir /data/wwwroot/aming.com 因为跑配置文件有这个路径

 -t && -s reload //若报错unknown directive “ssl” ,需要重新编译nginx,加上--with-http_ssl_module

方法:

进到这个目录下,cd /usr/local/src/nginx-1.12.1/

./configgure --help |grep -i ssl

添加一条正则表达式:

./configure --prefix=/usr/local/nginx --with-http_ssl_module

make && make install

用命令查看:/usr/local/nginx/sbin/nginx -V 会多一个参数

检查错误:/usr/local/nginx/sbin/nginx -t

重启一下:/etc/init.d/nginx restart

查一下他的监听端口:netstat -lntp 会发现多了一个443端口

新(LNMP)_第31张图片

创建一个测试文件

把这句话写入到配置文件去:

echo This is ssl.>/data/wwwroot/aming.com/index.html

要想直接访问IP就编辑hosts:

vi /etc/hosts 增加127.0.0.1 aming.com

curl https://aming.com/

再从你的电脑hosts里添加上你的虚拟机ip:192.168.232.132 aming

用电脑连网输入:https//aming.com 如果不能上查看防火墙

iptables -nvL

iptables -F


php-fpm的pool

vim /usr/local/php/etc/php-fpm.conf//在[global]部分增加

 include = etc/php-fpm.d/*.conf

 mkdir /usr/local/php/etc/php-fpm.d/

 cd /usr/local/php/etc/php-fpm.d/

 vim www.conf //内容如下

[www]

listen = /tmp/www.sock

listen.mode=666

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

继续编辑配置文件

 vim aming.conf //内容如下

[aming]

listen = /tmp/aming.sock

listen.mode=666

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

 检查:/usr/local/php/sbin/php-fpm –t

 重启:/etc/init.d/php-fpm restart


php-fpm慢执行日志

针对刚才上边编辑配置的www.conf进行一个配置

vim /usr/local/php-fpm/etc/php-fpm.d/www.conf//加入如下内容

request_slowlog_timeout = 1

slowlog = /usr/local/php-fpm/var/log/www-slow.log

新(LNMP)_第32张图片

模拟测试 

配置nginx的虚拟主机test.com.conf,把unix:/tmp/php-fcgi.sock改为unix:/tmp/www.sock

 重新加载nginx服务

 vim /data/wwwroot/test.com/sleep.php//写入如下内容,故意让它休眠两秒钟

 

新(LNMP)_第33张图片

 curl -x127.0.0.1:80 test.com/sleep.php 

 cat /usr/local/php-fpm/var/log/www-slow.log

新(LNMP)_第34张图片


php-fpm定义open_basedir

比如说我要在aming.com这个池子里边定义

vim /usr/local/php-fpm/etc/php-fpm.d/aming.conf//加入如下内容

php_admin_value[open_basedir]=/data/wwwroot/aming.com:/tmp/

新(LNMP)_第35张图片

 创建测试php脚本,进行测试

 再次更改aming.conf,修改路径,再次测试

 配置错误日志

 再次测试

 查看错误日志


php-fpm进程管理

 pm = dynamic  //动态进程管理,也可以是static,如果改成static下边的就不会生效了

 pm.max_children = 50 //最大子进程数,ps aux可以查看

 pm.start_servers = 20 //启动服务时会启动的进程数

 pm.min_spare_servers = 5 //定义在空闲时段,子进程数的最少数量,如果达到这个数值时,php-fpm服务会自动派生新的子进程。

 pm.max_spare_servers = 35 //定义在空闲时段,子进程数的最大值,如果高于这个数值就开始清理空闲的子进程。

 pm.max_requests = 500  //定义一个子进程最多处理的请求数,也就是说在一个php-fpm的子进程最多可以处理这么多请求,当达到这个数值时,它会自动退出。