[LNMP] Linux(centos6)中LNMP環境搭建,LNMP源碼安裝及LNMP架構原理詳解

本章blog主要介紹了[LNMP] Linux(Centos) LNMP環境搭建,(Linux+Nginx+mysql+php) 源碼安裝及LNMP架構原理詳解。php


LNMP Server html


  • LNMP簡介node

LNMP表明的就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構。mysql

GNU / Linux 操做系統: linux

Linux是一種相似Unix的計算機操做系統,Linux操做系統有不少個不一樣的發行版,如Red Hat 、SUSE 、FreeBSD、Debian、CentOS等。nginx

Nginx服務器:web

Nginx是一個小巧而高效的Linux下的Web服務器軟件和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器。是由 Igor Sysoev 爲俄羅斯訪問量第二的 Rambler 站點開發的,已經在一些俄羅斯的大型網站上運行多年,至關的穩定。Nginx性能穩定、功能豐富、運維簡單、處理靜態文件速度快且消耗系統資源極少。正則表達式

MySQL 類關係型數據庫(RDBMS):是一個小型關係型數據庫管理系統算法

php編程語言:服務器端執行的嵌入HTML文檔的腳本語言sql

  • LNMP架構原理

客戶端發送http request 請求 ,服務器(Nginx)接受web請求;

Nginx判斷客戶端請求的資源是否爲靜態請求。如果靜態請求,則Nginx直接將客戶端請求的靜態資源(.html, .htm  .shtml等文件),經過Http response的形式傳送給客戶端;

若爲php動態請求,則php腳本經過接口傳輸協議(網關協議)PHP-FCGI(fast-cgi)傳輸給PHP-FPM(進程管理程序)序,PHP-FPM不作處理,而後PHP-FPM調用PHP解析器進程,PHP解析器解析php腳本信息。

PHP在執行php請求時判斷是否會依賴mysql數據庫。若不依賴mysql數據庫,則PHP-FPM不作處理,而後PHP-FPM調用PHP解析器進程,服務器再經過Http response的形式傳送給瀏覽器,瀏覽器再進行解析與渲染而後進行呈現。

若依賴mysql數據庫,則php程序經過php-mysql 驅動與mysql進行關聯 ,獲取相關數據 ,而後將其返還給php解釋器 ,再次執行「不依賴mysql數據庫」的流程。

  • Fast-CGI 介紹

cgi是通用網關接口,是外部應用程序與Web服務器之間的接口標準,cgi是爲了保證web server傳遞過來的數據是標準格式的,方便cgi程序的編寫者。

Fast-cgi像是一個常駐(long-live)型的cgi,是用來提升cgi程序性能的。

fast-CGI是nginx和php之間的一個通訊接口,該接口實際處理過程經過啓動php-fpm進程來解析php腳本,即php-fpm至關於一個動態應用服務器,從而實現nginx動態解析php。所以,若是nginx服務器須要支持php解析,須要在nginx.conf中增長php的配置;將php腳本轉發到fastCGI進程監聽的IP地址和端口(php-fpm.conf中指定)。同時,php安裝的時候,須要開啓支持fastCGI選項,而且編譯安裝php-fpm補丁/擴展,同時,須要啓動php-fpm進程,才能夠解析nginx經過fastCGI轉發過來的php腳本。

  • Fast-CGI的工做原理

Web Server啓動時載入Fast-CGI進程管理器(IIS ISAPI或PHP-FPM)

FastCGI進程管理器自身初始化,啓動多個CGI解釋器進程(可見多個php-cgi)並等待來自Web Server的鏈接。

當客戶端請求到達Web Server時,Fast-CGI進程管理器選擇並鏈接到一個CGI解釋器。Web server將CGI環境變量和標準輸入發送到Fast-CGI子進程php-cgi。

Fast-CGI子進程完成處理後將標準輸出和錯誤信息從同一鏈接返回Web Server。當Fast-CGI子進程關閉鏈接時,請求便告處理完成。Fast-CGI子進程接着等待並處理來自Fast-CGI進程管理器(運行在Web Server中)的下一個鏈接。 在CGI模式中,php-cgi在此便退出了。


LNMP編譯安裝


LNMP部署環境:

    系統:Centos 6.6 

    軟件:nginx-1.8.1+ mysql-5.5.61 + php-5.6.38

    編譯環境:安裝LNMP相關依賴環境,包括「Server PlatForm Development」, 「Development tools」,關閉selinux 和 iptables 功能,並配置epel  yum源

    實驗目的:編譯安裝LAMP,經過php-fpm實現php與nginx連接  。

1、配置編譯環境 

[root@zabbix ~]# yum groupinstall "Development tools" -y    # 安裝包組開發工具

[root@zabbix ~]# yum groupinstall "Server Platform Development" -y    # 安裝包組服務開發環境

[root@zabbix ~]# vi /etc/selinux/config     # 修改配置文件,關閉selinux功能
SELINUX=disabled    # 設定爲disabled
#SELINUXTYPE=targeted  # 註釋該項,行首添加#

[root@zabbix ~]# getenforce     # 驗證selinux功能是否關閉
Disabled

[root@zabbix ~]# chkconfig iptables off    # 禁止開機自啓動iptables功能

[root@zabbix ~]# service iptables stop    # 中止iptables 功能

[root@zabbix ~]# vi /etc/yum.repos.d/CentOS-Base.repo     # 配置epel源,添加以下內容

[epel]
name=CentOS -$releasever - Epel
baseurl=https://mirrors.aliyun.com/epel/6Server/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-6Server

[root@zabbix ~]# yum clean all    # 清理yum緩存
Loaded plugins: fastestmirror, security
Cleaning repos: base epel extras updates
Cleaning up Everything
Cleaning up list of fastest mirrors

[root@zabbix ~]# yum repolist        # 查看yum源報告

     

2、編譯安裝Nginx(nginx-1.8.1)

  • 編譯安裝pcre(pcre-8.37)

PCRE是一個Perl庫,中文」Perl兼容的正則表達式庫」。安裝Nginx是爲了使Nginx支持具有URI重寫功能的rewrite模塊,若是不安裝pcre庫,則Nginx沒法使用rewrite模塊功能,Nginx的Rewrite模塊功能幾乎是企業應用必須;

下載地址:https://ftp.pcre.org/pub/pcre/pcre-8.37.tar.bz2    

[root@zabbix nginx]# tar xf pcre-8.37.tar.gz 

[root@zabbix nginx]# cd pcre-8.37

[root@zabbix pcre-8.37]# ./configure --prefix=/usr/local/pcre

[root@zabbix pcre-8.37]# make && make install
  • 編譯安裝zlib(zlib-1.2.11.tar.gz)

zlib 庫提供了不少種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ;

下載地址:  http://prdownloads.sourceforge.net/libpng/zlib-1.2.11.tar.gz?download 

[root@zabbix nginx]# tar -xf zlib-1.2.11.tar.gz 

[root@zabbix nginx]# cd zlib-1.2.11

[root@zabbix zlib-1.2.11]# ./configure --prefix=/usr/local/zlib

[root@zabbix zlib-1.2.11]# make && make install
  • 編譯安裝openssl(openssl-1.0.2p.tar.gz)

OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、經常使用的密鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程序供測試或其它目的使用。 nginx 不只支持 http 協議,還支持 https(即在ssl協議上傳輸http)。

下載地址:https://www.openssl.org/source/openssl-1.0.2p.tar.gz 

[root@zabbix nginx]# tar -xf openssl-1.0.2o.tar.gz 

[root@zabbix nginx]# cd openssl-1.0.2o

[root@zabbix openssl-1.0.2o]# ./config --prefix=/usr/local/openssl

[root@zabbix openssl-1.0.2o]# make && make install
  • 編譯安裝nginx

下載地址:https://nginx.org/download/nginx-1.8.1.tar.gz 

[root@zabbix nginx]# groupadd -r www    

[root@zabbix nginx]# useradd -g www -s /sbin/nologin www    # 添加www用戶

[root@zabbix nginx]# tar -xf nginx-1.8.1.tar.gz 

[root@zabbix nginx]# cd nginx-1.8.1

[root@zabbix nginx-1.8.1]# ./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_sub_module \
--with-http_gzip_static_module \
--with-http_ssl_module \
--with-pcre=/usr/local/src/nginx/pcre-8.37 \
--with-zlib=/usr/local/src/nginx/zlib-1.2.11 \
--with-openssl=/usr/local/src/nginx/openssl-1.0.2o 

[root@zabbix nginx-1.8.1]# make && make install

[root@zabbix nginx-1.8.1]# cd /usr/local/nginx/

[root@zabbix nginx]# ls
conf  html  logs  sbin

[root@zabbix nginx]# vi /etc/profile.d/nginx.sh     # 配置環境變量
export PATH=/usr/local/nginx/sbin:$PATH

[root@zabbix conf]# ln -sv /usr/local/nginx/conf /etc/nginx   # 連接nginx配置文件
`/etc/nginx' -> `/usr/local/nginx/conf/'

[root@zabbix nginx-1.8.1]# mkdir /var/run/nginx    # 建立 nginx pid 文件目錄

[root@zabbix nginx-1.8.1]# chown www.www /var/run/nginx    # 配置/var/run/nginx 文件屬性

[root@zabbix conf]# vi /etc/nginx/nginx.conf     # 調整nginx配置文件
user  www www;    #  Nginx運行使用的用戶爲www
pid        /var/run/nginx/nginx.pid;    # 配置nginx.pid文件路徑

[root@zabbix run]# nginx -t -c /etc/nginx/nginx.conf    # 確認配置文件格式及語法是否正確
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

  • 設置nginx服務啓動腳本,啓動Nginx服務並進行驗證

[root@zabbix conf]# scp root@192.168.23.100:/etc/rc.d/init.d/nginx /etc/init.d/    
# 從其餘yum 安裝nginx的服務器拷貝nginx 服務啓動腳本到/etc/init.d 目錄中

root@192.168.23.100's password: 
nginx                                100% 2795     2.7KB/s   00:00    

[root@zabbix conf]# vi /etc/init.d/nginx         # 修改nginx服務啓動腳本   
...
nginx="/usr/local/nginx/bin/nginx"    # 指定nginx命令路徑
lockfile="/var/lock/nginx"    # 指定nginx lockfile文件
pidfile="/var/run/nginx/${prog}.pid"    # 指定nginx 啓動pid文件路徑
NGINX_CONF_FILE="/etc/nginx/nginx.conf"    # 指定配置腳本nginx.conf 文件路徑

[root@zabbix nginx]# chkconfig --add nginx    # 設置添加到chkconfig 列表

[root@zabbix nginx]# chkconfig nginx on    # 設置開機自動啓動

[root@zabbix nginx]# service nginx start    # nginx服務啓動
Starting nginx:                                            [  OK  ]

[root@zabbix nginx]# ss -tunlp | grep nginx
tcp    LISTEN     0      128        *:80          *:*      users:(("nginx",11893,6),("nginx",11895,6))

[root@zabbix nginx]# ps aux | grep nginx    # 驗證nginx服務 ,root角色啓動主進程 ,www角色啓動worker proess進程
root     11893  0.0  0.0  17996   836 ?        Ss   13:32   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf
www      11895  0.0  0.0  18448  1812 ?        S    13:32   0:00 nginx: worker process                               
root     11915  0.0  0.0 103328   848 pts/0    S+   13:33   0:00 grep nginx

[root@zabbix nginx]# curl -I http://localhost    # 驗證nginx 運行狀態
HTTP/1.1 200 OK
Server: nginx/1.8.1

    image.png

3、編譯安裝Mysql (mysql-5.5.61)

  • 建議在硬raid中建立lvm並使用獨立的lvm磁盤做爲mysql 數據存儲目錄 ,便於備份mysql數據

[root@zabbix ~]# pvs    # 查看磁盤剩餘空間
  PV         VG   Fmt  Attr PSize   PFree 
  /dev/sda2  vg0  lvm2 a--u 439.45g 92.77g

[root@zabbix ~]# vgs    # 查看磁盤剩餘空間
  VG   #PV #LV #SN Attr   VSize   VFree 
  vg0    1   6   0 wz--n- 439.45g 92.77g

[root@zabbix ~]# lvcreate -n data -L 50G vg0    # 建立lvm分區data ,大小爲50G 
  Logical volume "data" created.

[root@zabbix ~]# lvs    # 查看建立的lvm分區
  LV    VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data  vg0  -wi-a-----  50.00g     
  
[root@zabbix ~]# mke2fs -t ext4 /dev/mapper/vg0-data    # 格式化分區/dev/sda4
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux    

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@zabbix ~]# mount /dev/mapper/vg0-data  /data/

[root@zabbix ~]# mkdir /data    # 建立目錄,作掛載目錄用途

[root@VM ~]# vi /etc/fstab 	# 配置開機自動掛載/dev/mapper/vg0-data 分區
/dev/mapper/vg0-data    /data                   ext4    defaults        1 2	

[root@VM ~]# mount -a    # 掛載全部分區
    
[root@zabbix ~]# mount  | grep data    # 查看驗證lvm分區掛載
/dev/mapper/vg0-data on /data type ext4 (rw)
  • 編譯安裝mysql

下載地址:https://mirrors.163.com/mysql/Downloads/MySQL-5.5/mysql-5.5.61.tar.gz  

[root@zabbix mysql]# groupadd mysql -r    # 添加mysql組

[root@zabbix mysql]# useradd -s /sbin/nologin -g mysql  mysql    # 添加系統用戶mysql

[root@zabbix mysql]# id mysql    # 查看mysql用戶
uid=498(mysql) gid=498(mysql) groups=498(mysql)
  
[root@zabbix mysql]# mkdir /data/sqldata /var/run/mysql /var/lock/mysql  # 建立mysql數據的目錄/data/sqldata,pid目錄/var/run/mysql ,lock目錄/var/lock/mysql 

[root@zabbix mysql]# chown mysql.mysql /var/run/mysql/ /var/lock/mysql/ /data/sqldata/   # 調整目錄權限屬主、屬組爲mysql

[root@zabbix mysql]# tar -xf mysql-5.5.61.tar.gz   # 解壓mysql源碼包

[root@zabbix mysql]# cd mysql-5.5.61    # 編譯安裝mysql

[root@zabbix mysql-5.5.61]# yum install cmake    # 安裝cmake命令功能

[root@zabbix mysql-5.5.61]# cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql  \
-DMYSQL_DATADIR=/data/sqldata   \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/var/lock/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DWITH_PARTITION_STORAGE_ENGINE=1  \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 

[root@zabbix mysql-5.5.61]# make && make install

[root@zabbix mysql-5.5.61]# vi /etc/profile.d/mysql.sh    # 配置mysql環境變量
export PATH=/usr/local/mysql/bin:$PATH

[root@zabbix mysql-5.5.61]# . /etc/profile.d/mysql.sh    # 使能環境變量

[root@zabbix mysql-5.5.61]# ln -sv /usr/local/mysql/include/ /usr/include/mysql    # 配置mysql include頭文件
`/usr/include/mysql' -> `/usr/local/mysql/include/'

[root@zabbix mysql-5.5.61]# vi /etc/man.config     # 配置mysql命令幫助文件
MANPATH /usr/local/mysql/man

[root@zabbix mysql-5.5.61]# vi /etc/ld.so.conf.d/mysql.conf    # 配置mysql lib庫,添加以下項
/usr/local/mysql/lib

[root@zabbix mysql-5.5.61]# ldconfig -v | grep mysql    # 驗證lib庫
/usr/local/mysql/lib:
	libmysqlclient.so.18 -> libmysqlclient_r.so.18.0.0
/usr/lib64/mysql:
	libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
	libmysqlclient.so.16 -> libmysqlclient.so.16.0.0
  • mysql初始化,啓動服務

[root@zabbix ~]# cd /usr/local/mysql/ 

[root@zabbix mysql]#./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/sqldata/   # 初始化mysql腳本

[root@zabbix mysql]# cp support-files/my-large.cnf /etc/my.cnf    # 複製啓動腳本配置文件
cp: overwrite `/etc/my.cnf'? y

  
[root@zabbix mysql]# vi /etc/my.cnf     # 調整mysql啓動配置文件

[client]
#password       = your_password
port            = 3306    # 指定端口
socket          = /var/lock/mysql/mysql.sock    # 指定sock文件路徑

# Here follows entries for some specific programs

# The MySQL server

[mysqld]
port            = 3306
socket          = /var/lock/mysql/mysql.sock    # 指定sock文件
pid-file        = /var/run/mysql/mysql.pid    # 指定pid目錄
datadir         = /data/sqldata/    # 指定數據存儲目錄

[root@zabbix mysql]# cp support-files/mysql.server /etc/init.d/mysqld    # 複製mysqld啓動腳本文件

[root@zabbix mysql]# vi /etc/init.d/mysqld     # 配置mysqld啓動腳本
basedir=/usr/local/mysql    # 指定mysql安裝目錄
datadir=/data/sqldata    # 指定數據存儲目錄


[root@zabbix mysql]# chkconfig --add mysqld    # 加入mysqld啓動服務

[root@zabbix mysql]# chkconfig mysqld on

[root@zabbix mysql]# service mysqld start    # 啓動mysqld服務
Starting MySQL SUCCESS! 

[root@zabbix mysql]# ss -tunl | grep 3306
tcp    LISTEN     0      50                     *:3306                  *:*
  • 對mysql數據庫進行管理,刪除匿名用戶,建立密碼 ,刪除test數據庫 等操做

[root@zabbix data]# mysql    #登陸mysql 數據庫
elcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.61-log Source distribution

mysql> drop database test;    # 刪除test數據庫
Query OK, 0 rows affected (0.03 sec)

mysql> show databases;    # 顯示數據庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

mysql> use mysql;    # 切換到mysql 數據庫
Database changed

mysql> select user,host,password from user;
+------+-----------+----------+
| user | host      | password |
+------+-----------+----------+
| root | localhost |          |
| root | zabbix    |          |
| root | 127.0.0.1 |          |
| root | ::1       |          |
|      | localhost |          |
|      | zabbix    |          |
+------+-----------+----------+
6 rows in set (0.00 sec)
mysql> drop user root@'::1';    # 清理匿名用戶
Query OK, 0 rows affected (0.00 sec)

mysql> drop user ''@'localhost';    
Query OK, 0 rows affected (0.00 sec)

mysql> drop user ''@'zabbix';
Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE user SET password=PASSWORD('Hello123abc.com') WHERE user='root';    # 定義root用戶密碼
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  • 對mysql 建立用戶及密碼、主機配置文件,能夠不使用密碼進行登陸

[root@VM mysql]# vi /root/.my.cnf    # 添加以下代碼,實現無需密碼進行登陸
[mysql]
user=root
host=localhost
password=Hello123abc.com

注:在啓動MySQL服務時,會按照必定次序搜索my.cnf。
尋找順序:/etc/my.cnf -->$MYSQL_Base/my.cnf --> --defaults-extra-file=/path/to/some_my.cnf -->.my.cnf


4、編譯安裝PHP(php-5.5.38

PHP 經過 PHP-FPM(FastCGI進程管理器)能夠很好地與 Nginx 協同工做。PHP-FPM 針對不一樣規模的網站功能和性能都很是優良,尤爲是高併發大型網站。

PHP-FPM是一個實現了Fastcgi的程序,PHP-FPM的管理對象是php-cgi。 後來PHP內核集成了PHP-FPM以後就方便多了,使用–enalbe-fpm這個編譯參數便可。

  • 編譯安裝php

下載地址:http://am1.php.net/get/php-5.5.38.tar.gz/from/this/mirror 

[root@zabbix php]# yum -y install libxml2-devel openssl-devel openssl bzip2-devel libmcrypt libmcrypt-devel mcrypt   
# 配置Epel yum源,安裝依賴環境


[root@zabbix php]# tar xf php-5.5.38.tar.gz 

[root@zabbix php]# cd php-5.5.38

[root@zabbix php-5.5.38]# ./configure \
--prefix=/usr/local/php   \
--with-mysql=/usr/local/mysql  \
--with-openssl  \
--with-mysqli=/usr/local/mysql/bin/mysql_config  \
--with-freetype-dir  \
--with-jpeg-dir  \
--with-png-dir   \
--with-zlib   \
--with-bz2   \
--with-mcrypt  \
--with-libxml-dir=/usr   \
--with-config-file-path=/etc  \
--with-config-file-scan-dir=/etc/php.d    \
--with-gd \
--with-gettext  \
--enable-sockets  \
--enable-xml \
--enable-fpm  \
--enable-bcmath \
--enable-mbstring 

[root@zabbix php-5.5.38]# make && make install

[root@zabbix php-5.5.38]# vi /etc/profile.d/php.sh     #添加環境變量
export PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH 
  
[root@VM ~]# ln -sv /usr/local/php/include/ /usr/include/php    # 添加php-fpm頭文件
`/usr/include/php' -> `/usr/local/php/include/'

[root@zabbix php-5.5.38]# cp php.ini-production /etc/php.ini   # 拷貝php.ini配置文件

[root@zabbix php-5.5.38]# cp sapi/fpm/php-fpm.conf /etc/php-fpm.conf    # 拷貝php-fpm 配置文件

[root@zabbix php-5.5.38]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm    # 拷貝php-fpm 啓動腳本文件

[root@zabbix php-5.5.38]# chmod 755 /etc/init.d/php-fpm     # 修改啓動腳本權限

[root@zabbix php-5.5.38]# vi /etc/php-fpm.conf     # 調整php-fpm.conf 配置文件
[global]
pid = /var/run/php-fpm/php-fpm.pid    # 指定pid 文件路徑
error_log = /var/log/php-fpm/php-fpm.log    # 指定錯誤日誌log 路徑

[root@zabbix php-5.5.38]# vi /etc/init.d/php-fpm     # 修改php-fpm啓動腳本文件
#! /bin/sh
php_fpm_CONF=/etc/php-fpm.conf    # 指定php-fpm conf 路徑
php_fpm_PID=/var/run/php-fpm/php-fpm.pid    # 指定php-fpm.pid 路徑

[root@zabbix php-5.5.38]# chkconfig --add php-fpm

[root@zabbix php-5.5.38]# chkconfig php-fpm on

[root@zabbix php-5.5.38]# service php-fpm start    
Starting php-fpm  done

[root@zabbix php-5.5.38]# ss -tunl |grep 9000
Netid State      Recv-Q Send-Q                        Local Address:Port                          Peer Address:Port 
tcp   LISTEN     0      128                               127.0.0.1:9000                                     *:*
  • 配置nginx支持php

[root@zabbix html]# vi /etc/nginx/nginx.conf
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm index.php;    # 該項添加index.php 
        }
    location ~ \.php$ {    #取消該段內容反向解析的註釋
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;    # 把$Scripts 調整成 $document_root
            include        fastcgi_params;
        }

[root@zabbix html]# service nginx restart
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]
 
[root@zabbix html]# vi /usr/local/nginx/html/index.php     # php 測試
<?php
        phpinfo ();
?>

[root@zabbix html]# curl -I http://localhost/index.php    # 驗證php啓動
HTTP/1.1 200 OK
Server: nginx/1.8.1
  • 驗證php功能與nginx ,php與mysql 鏈接

[root@VM ~]# vi /usr/local/apache/htdocs/index.php    # 測試apache 與 php 鏈接狀態腳本
<?php
        $link = mysql_connect('localhost','root','Hello123abc.com');
if ($link)
        echo "sucessful.";
else
        echo "failure.";
 
mysql_close();
phpinfo();
?>

    image.png

5、安裝php加速器xcache

  • 安裝xcache

下載地址:http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz 

[root@zabbix php]# tar xf xcache-3.2.0.tar.gz     

[root@zabbix php]# cd xcache-3.2.0

[root@zabbix xcache-3.2.0]# phpize      # 編譯php模塊
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226

[root@zabbix xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config  # 編譯安裝

[root@zabbix xcache-3.2.0]# make && make install    # 安裝,記錄生成的文件路徑
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/

[root@zabbix xcache-3.2.0]# cp xcache.ini /etc/php.d/
[root@zabbix xcache-3.2.0]# vi /etc/php.d/xcache.ini 

;; this is an example, it won't work unless properly configured into php.ini
[xcache-common]
;; non-Windows example:
extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/xcache.so    #修改該配置,變爲絕對路徑

[root@zabbix xcache-3.2.0]# service php-fpm restart    # 重啓php-fpm 相關服務
Gracefully shutting down php-fpm . done
Starting php-fpm  done
  • 驗證xcache 安裝

image.png

6、安裝phpMyAdmin-4.8.2 ,管理mysql

  • 安裝phpMyAdmin-4.8.2   ,支持php5.5- php 7.2  ,mysql-5.5 以上

下載地址:https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-all-languages.tar.xz 

[root@zabbix mysql]# wget https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-all-languages.tar.xz 

[root@zabbix mysql]# tar xf phpMyAdmin-4.8.2-all-languages.tar.xz 

[root@zabbix mysql]# cp phpMyAdmin-4.8.2-all-languages /usr/local/nginx/html/phpadm

    image.png

  • 錯誤故障解決

    image.png

1)配置文件如今須要一個短密碼:

解決辦法:設定 config.default.php 文件的108行 $cfg[‘blowfish_secret’] 參數,參數字符串長度必須在32位以上。

[root@VM pmyadmin]# vi libraries/config.default.php   # 在phpMyAdmin目錄下libraries文件下的config.default.php

$cfg['blowfish_secret'] = 'Itwish@itwish.cn@blog.51cto.com/itwish';

2)$cfg['TempDir'] (./tmp/) 讀取失敗且不能創建緩存, phpMyAdmin運行速度將受影響.

解決辦法:手動在phpmyadmin的根目錄創建tmp文件,並賦予777權限

[root@VM pmyadmin]# mkdir -m 777 tmp


至此,完成LNMP編譯安裝實驗,實現 php以php-fpm方式與nginx互連 。

轉載請註明出處https://blog.51cto.com/itwish/    

相關文章
相關標籤/搜索