1. 程式人生 > >CentOS7.2 上 Nginx PHP Mariadb 環境搭建

CentOS7.2 上 Nginx PHP Mariadb 環境搭建

lnmp centos7.2

最近有個ERP+PHP-web 測試頁面環境部署需求,需要部署nginx+php的cgi+socket的模式、mysql環境。查看服務端口是否起來,我們習慣使用netstat指令查看,所以如果你的系統裏尚未安裝netstat,可直接安裝 yum install -y net-tools即可


實驗環境:

Linux版本:CentOS 7.2

nginx版本:nginx-1.10.1

PHP版本:php-5.6.5

mysql版本:MariaDB-5.5.52


一、首先部署nginx

把相關依賴包安裝完畢

openssl-devel 、zlib-devel `pcre-devel

程序默認是使用 nobody 身份運行的,我們使用 nginx 用戶來運行,首先添加Nginx組和用戶,不創建家目錄,不允許登陸系統

#groupadd nginx

#useradd -M -s /sbin/nologin -g nginx nginx


安裝nginx採取的是nginx-1.10.1.tar.gz

# tar xf nginx-1.10.1.tar.gz

# cd nginx-1.10.1


指定安裝目錄和運行時用的屬主和屬組,並啟用狀態監控模塊等

# ./configure \

--prefix=/usr/local/nginx \

--pid-path=/usr/local/nginx/logs/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--user=nginx \

--group=nginx \

--with-http_ssl_module \

--with-http_flv_module \

--with-http_stub_status_module \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/tmp/nginx/client/ \

--http-proxy-temp-path=/var/tmp/nginx/proxy/ \

--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \

--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \

--http-scgi-temp-path=/var/tmp/nginx/scgi \

--with-pcre


大致的配置結果

Configuration summary

+ using system PCRE library

+ using system OpenSSL library

+ md5: using OpenSSL library

+ sha1: using OpenSSL library

+ using system zlib library


nginx path prefix: "/usr/local/nginx"

nginx binary file: "/usr/local/nginx/sbin/nginx"

nginx modules path: "/usr/local/nginx/modules"

nginx configuration prefix: "/usr/local/nginx/conf"

nginx configuration file: "/usr/local/nginx/conf/nginx.conf"

nginx pid file: "/var/run/nginx/nginx.pid"

nginx error log file: "/usr/local/nginx/logs/error.log"

nginx http access log file: "/usr/local/nginx/logs/access.log"

nginx http client request body temporary files: "/var/tmp/nginx/client/"

nginx http proxy temporary files: "/var/tmp/nginx/proxy/"

nginx http fastcgi temporary files: "/var/tmp/nginx/fcgi/"

nginx http uwsgi temporary files: "/var/tmp/nginx/uwsgi"

nginx http scgi temporary files: "/var/tmp/nginx/scgi"


上述配置完,就進行編譯安裝

#make && make install

#mkdir /var/tmp/nginx/client/ -pv


等編譯安裝完成後在 /usr/local 下就會出現 nginx 這個目錄了,進入這個目錄後發現目錄非常簡單。

它的配置文件存放在 conf 目錄中,網頁文件存放在 html 中,日誌文件存放在 logs 中,

sbin 目錄下只有一個可執行程序 "nginx"


二、部署php環境

a. FastCGI是一個可伸縮地、高速地在HTTP server和動態腳本語言間通信的接口

b. Nginx是個輕量級的HTTP server,必須借助第三方的FastCGI處理器才可以對PHP進行解析

c. PHP-FPM是一個第三方的FastCGI進程管理器,它是作為PHP的一個補丁來開發的,在安裝的時候也需要和PHP源碼一起編譯,

也就是說PHP-FPM被編譯到PHP內核中,因此在處理性能方面更加優秀;同時它在處理高並發方面也比spawn-fcgi引擎好很多,

因此,推薦Nginx+PHP/PHP-FPM這個組合對PHP進行解析。


首先安裝php的一些依賴包

gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel


然後解壓下載好的tar包

# tar -xvzf php-5.6.5.tar.gz


進入到解壓後的php-5.6.5中

# cd php-5.6.5

# ./configure --prefix=/usr/local/php –enable-fpm –enable-mbstring –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd

# make && make install


查看php版本

# php -v

PHP 5.6.5 (cli) (built: Jan 10 2017 03:53:13)

Copyright (c) 1997-2014 The PHP Group

Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies


如果不行,則直接在php的執行文件做個軟鏈接到/usr/bin/php或者復制一份至/usr/bin/下面即可查看PHP版本啦


#ln -s /usr/local/php/bin/php /usr/bin/php

或者

#cp -raf /usr/local/php/bin/php /usr/bin/php


php的配置文件php.ini,復制一份安裝目錄下的php.ini-development這個配置文件模板到php的目錄

# cp -raf php-5.6.5/php.ini-development /usr/local/php/lib/php.ini


當然,我們還需要配置一下php-fpm,在安裝php的時候,已經為我們生成了一個配置模板了,在 /usr/local/php/etc/php-fpm.conf.default了,所以只要復制這個模板並改名為php-fpm.conf就可以了,進去把 daemonize改成yes,以後臺服務的運行方式啟動。然後捏,whereis php-fpm,

這個是個可執行文件,直接執行php-fpm就可以運行了,然後netstat -an| grep php-fpm,看到,果然9000號端口在監聽啦

#cp -raf /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

# whereis php-fpm


配置與優化PHP-FPM

PHP的全局配置文件是php.ini,在上面的步驟中,已經將此文件復制到了/usr/local/php/lib/php.ini下。可以根據每個應用需求的不同,對php.ini進行相應的配置。

下面重點介紹PHP-FPM引擎的配置文件。

根據上面指定的安裝路徑,PHP-FPM的默認配置文件為/usr/local/php/etc/php-fpm.conf。

php-fpm.conf是一個XML格式的純文本文件,其內容很容易看明白。這裏重點介紹幾個重要的配置標簽: