本章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
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(); ?>
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 安裝
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
phpMyadmin 登陸http://172.16.10.5/phpadm 驗證
錯誤故障解決
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/