CentOS7.2 上 Nginx PHP Mariadb 環境搭建
最近有個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格式的純文本文件,其內容很容易看明白。這裏重點介紹幾個重要的配置標簽: