新(LNMP)

MySQL安裝php

卸載原來的mysql步驟css

先查看mysql服務有沒有啓動:ps aux |grep mysql  若是啓動把它關掉html

先進入到src下刪除mysql:mysql

cd /usr/local/src/
linux

刪除目錄:rm -rf /usr/local/mysql nginx

刪除啓動腳本:rm -rf /etc/init.d/mysqldgit

安裝mysqlweb

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

image.png

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能夠吧之前的配置信息所有刪掉,讓他回到剛解壓完的狀態)

image.png

若是第一次安裝則進行如下操做 

下載: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複製到下邊)

image.png

再回到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

image.png


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

image.png

測試php解析

建立一個測試文件:vi /usr/local/nginx/html/1.php //加入以下內容

<?php
echo "this is nginx test page.";
?>

 curl localhost/1.php   解析成功

image.png




Nginx默認虛擬主機

進到:/usr/local/nginx/conf

編輯vim /usr/local/nginx/conf/nginx.conf //把最後一段server刪除

U5GLZN$%3LFPESYSW_TVCWF.png

增長: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;
}

image.png

建立目錄(由於咱們增長的配置文件內容裏有這個目錄):

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;用戶名密碼文件
      }
}

image.png

下面是生成密碼文件:

若是你上邊安裝過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說明須要用戶認證

image.png

咱們須要建立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目錄名字就行,這樣的話只有訪問他的時候才須要驗證

image.png

檢查語法錯誤:/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

wKiom1mNv4iS1TwwAAHSbEjLKBw574.png

假設用戶名爲awei,密碼爲123456789測試結果以下

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

image.png


針對訪問的一個URL

條件:假如說訪問admin.php

編輯配置文件:vim /usr/local/nginx/conf/vhost/test.com.conf  //給它匹配就好了

image.png

檢查語法錯誤:/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

image.png



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的意思)

    }

}

K8Z_7Y3UDR{P1PDM4IY@6C6.png

測試配置文件:/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

image.png

 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

 wKioL1mP8M3xiv5LAAEVt9Ch8Wc689.png

除了在主配置文件nginx.conf裏定義日誌格式外,還須要在虛擬主機配置文件中:

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

增長:access_log /tmp/test.com.log combined_reali;意思是把日誌放到一個目錄下

image.png

 這裏的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`生成新的日誌文件

image.png

執行腳本內容:sh -x /usr/local/sbin/nginx_logrotate.sh

image.png

他如今已經生成了

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;

    }

image.png

模擬一下

先到這個目錄下: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防盜鏈

配置以下,能夠和上面的配置結合起來

image.png

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的文件能夠訪問

image.png

image.png

根據user_agent限制,不讓任何人任何網站知道訪問到你的IP

if ($http_user_agent ~* 'Spider/3.0|YoudaoBot|Tomato')#假如說限制這三家Spider/3.0|YoudaoBot|Tomato 這三家是訪問不到你的 加了*匹配時就不分大小寫了
{
      return 403;
}

image.png

 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 把下面內容寫進去:

<?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代理服務器

wKioL1mQK6njNVsSAAB1THUMbAw580.png

寫一個新的配置文件:

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

image.png

爲了測試代理是否成功,能夠用虛擬機本機IP訪問:curl -x127.0.0.1:80 ask.apelearn.com/robots.txt

image.png



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

image.png

upstream來指定多個web server


SSL工做原理

         wKioL1mRFErx3kL8AAI9IwRIAN4327.png

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文件爲私鑰,輸入密碼:

image.png

爲了方便給它取消密碼: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端口

image.png

建立一個測試文件

把這句話寫入到配置文件去:

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

image.png

模擬測試 

配置nginx的虛擬主機test.com.conf,把unix:/tmp/php-fcgi.sock改成unix:/tmp/www.sock

 從新加載nginx服務

 vim /data/wwwroot/test.com/sleep.php//寫入以下內容,故意讓它休眠兩秒鐘

 <?php echo 「test slow log」;sleep(2);echo 「done」;?>

image.png

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

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

image.png


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/

image.png

 建立測試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的子進程最多能夠處理這麼多請求,當達到這個數值時,它會自動退出。

相關文章
相關標籤/搜索