1、NGINX的搭建php
Nginx是一個輕量級的HTTP服務器,也是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。html
在高併發鏈接的狀況下,Nginx是Apache服務器不錯的替代品。Nginx同時也能夠做爲7層負載均衡服務器來使用。Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 能夠承受3萬以上的併發鏈接數,至關於同等環境下Apache的10倍。mysql
爲何Nginx的性能要比Apache高得多?這得益於Nginx使用了最新的epoll(Linux 2.6內核)和kqueue(freebsd)網絡I/O模型,而Apache則使用的是傳統的select模型。目前Linux下可以承受高併發訪問的 Squid、Memcached都採用的是epoll網絡I/O模型。linux
處理大量的鏈接的讀寫,Apache所採用的select網絡I/O模型很是低效。下面用一個比喻來解析Apache採用的select模型和Nginx採用的epoll模型進行之間的區別: 假設你在大學讀書,住的宿舍樓有不少間房間,你的朋友要來找你。select版宿管大媽就會帶着你的朋友挨個房間去找,直到找到你爲止。而epoll版 宿管大媽會先記下每位同窗的房間號,你的朋友來時,只需告訴你的朋友你住在哪一個房間便可,不用親自帶着你的朋友滿大樓找人。若是來了10000我的,都要 找本身住這棟樓的同窗時,select版和epoll版宿管大媽,誰的效率更高,不言自明。同理,在高併發服務器中,輪詢I/O是最耗時間的操做之 一,select和epoll的性能誰的性能更高,一樣十分明瞭。nginx
系統要求:Linux 2.6+ 內核 c++
方法一: 命令: uname -a 做用: 查看系統內核版本號及系統名稱 方法二: 命令: cat /proc/version sql
做用: 查看目錄"/proc"下version的信息,也能夠獲得當前系統的內核版本號及系統名稱apache
Nginx版本:nginx/1.8.0api
groupadd www OR /usr/sbin/groupadd www 服務器
useradd -g www www OR /usr/sbin/useradd -g www www
yum -y install gcc
yum install gcc-c++
yum -y install gcc yum -y install gcc-c++
解壓安裝包
# tar zxvf nginx-1.8.0.tar.gz
跳轉到目錄
# cd nginx-1.8.0
設置編譯路徑爲 /usr/local/nginx
# ./configure --prefix=/usr/local/nginx
pcre(做用rewrite)、zlib(做用壓縮)、ssl,這個也能夠本身下載編譯安裝
yum -y install zlib;
yum -y install yum-fastestmirror
yum -y install pcre-devel
yum –y install pcre;
yum -y install openssl openssl-devel
yum –y install openssl;
編譯 :
Make
編譯安裝:
Make install
[root@localhost sbin]# ./nginx -s reload
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
解決方法:
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
使用nginx -c的參數指定nginx.conf文件的位置
啓動操做
/usr/nginx/sbin/nginx (/usr/nginx/sbin/nginx -t 查看配置信息是否正確)
中止操做中止操做是經過向nginx進程發送信號(什麼是信號請參閱linux文 章)來進行的步驟1:查詢nginx主進程號ps -ef | grep nginx在進程列表裏 面找master進程,它的編號就是主進程號了。步驟2:發送信號從容中止Nginx:kill -QUIT 主進程號快速中止Nginx:kill -TERM 主進程號強制中止Nginx:pkill -9 nginx另外, 若在nginx.conf配置了pid文件存放路徑則該文件存放的就是Nginx主進程號,若是沒指定則放在nginx的logs目錄下。有了pid文 件,咱們就不用先查詢Nginx的主進程號,而直接向Nginx發送信號了,命令以下:kill -信號類型 '/usr/nginx/logs/nginx.pid'平滑重啓若是更改了配置就要重啓Nginx,要先關閉Nginx再打開?不是的,能夠向Nginx 發送信號,平滑重啓。平滑重啓命令:kill -HUP 住進稱號或進程號文件路徑
或者使用
/usr/nginx/sbin/nginx -s reload
注意,修改了配置文件後最好先檢查一下修改過的配置文件是否正 確,以避免重啓後Nginx出現錯誤影響服務器穩定運行。判斷Nginx配置是否正確命令以下:nginx -t -c /usr/nginx/conf/nginx.conf
或者
/usr/nginx/sbin/nginx -t
完整server.conf
PHP安裝
wget
http://cn2.php.net/distributions/php-5.5.36.tar.gz
wget
ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/libxml2-2.6.30.tar.gz
wget
http://120.52.73.49/jaist.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
wget
http://zlib.net/zlib-1.2.8.tar.gz
wget
http://down1.chinaunix.net/distfiles/gd-2.0.32.tar.gz
wget
ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
http://ftp.twaren.net/Unix/NonGNU//freetype/freetype-2.5.0.1.tar.gz
ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.7.tar.gz
http://www.ijg.org/files/jpegsrc.v9.tar.gz
開始安裝:
注意:按以下順序安裝
1.安裝libxml2
cd /usr/local/src/
tar zxvf libxml2-2.6.30.tar.gz
cd libxml2-2.6.30
./configure --prefix=/usr/local/libxml2
make && make install
2.安裝libmcrypt、zlib、libpng、freetype
安裝方法同libxml2,分別安裝到以下路徑
/usr/local/libmcrypt
/usr/local/zlib
/usr/local/libpng
/usr/local/freetype
注意,安裝freetype時有可能提示以下錯誤:
either set the LIBPNG_CFLAGS and LIBPNG_LDFLAGS environment variables
這是提示找不到libpng的安裝位置,因此須要將libpng的bin目錄配置到環境變量中:
解決方法:
編輯:vi /etc/profile
LIB_PNG=/usr/local/libpng/bin
PATH=$LIB_PNG:$PATH
export PATH
生效:. /etc/profile
從新安裝freetype便可。
3.安裝jpeg9
mkdir /usr/local/jpeg9
mkdir /usr/local/jpeg9/bin
mkdir /usr/local/jpeg9/lib
mkdir /usr/local/jpeg9/include
mkdir -p /usr/local/jpeg9/man/man1
cd /usr/local/src/
tar zxvf jpegsrc.v9.tar.gz
cd jpeg-9
./configure \
> --prefix=/usr/local/jpeg9/ \
> --enable-shared \ //創建共享庫使用的GNU 的libtool
> --enable-static //創建靜態庫使用的GNU 的libtool
make && make install
4.安裝autoconf
cd /usr/local/src/
tar zxvf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure
make && make install
5.安裝GD
cd /usr/local/src/
tar zxvf libgd-2.1.0.tar.gz
cd libgd-2.1.0
./configure \ //配置命令
> --prefix=/usr/local/gd2/ \ //指定軟件安裝的位置
> --with-zlib=/usr/local/zlib/ \ //指定到哪去找zlib 庫文件的位置
> --with-jpeg=/usr/local/jpeg9/ \ //指定到哪去找jpeg 庫文件的位置
> --with-png=/usr/local/libpng/ \ //指定到哪去找png 庫文件的位置
> --with-freetype=/usr/local/freetype/ //指定到哪去找freetype 2.x 字體庫的位置
make && make install
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-apxs2=/usr/local/apache2/bin/apxs --with-libxml-dir=/usr/local/libxml2 --with-png-dir=/usr/local/libpng/ --with-jpeg-dir=/usr/local/jpeg6/ --with-freetype-dir=/usr/local/freetype/ --with-gd=/usr/local/gd2/ --with-zlib-dir=/usr/local/zlib/ --with-mcrypt=/usr/local/libmcrypt/ --with-mysql --with-mysqli --enable-soap --enable-mbstring=all --enable-sockets --enable-pdo --with-pdo-mysql
ok,以上過程應該不會遇到問題,
接下來安裝PHP
。
問題從這裏開始,咱們一步一步說明:
cd /usr/local/src/
tar zxvf php-5.5.6.tar.gz
cd php-5.5.6
./configure \ //執行當前目錄下軟件自帶的配置命令
> --prefix=/usr/local/php \ //設置PHP5 的安裝路徑
> --with-config-file-path=/usr/local/php/etc \ //指定PHP5 配置文件存入的路徑
> --with-apxs2=/usr/local/apache2/bin/apxs \ //告訴PHP 查找Apache 2 的地方
> --with-libxml-dir=/usr/local/libxml2/ \ //告訴PHP 放置libxml2 庫的地方
> --with-png-dir=/usr/local/libpng/ \ //告訴PHP 放置libpng 庫的地方
> --with-jpeg-dir=/usr/local/jpeg6/ \ //告訴PHP 放置jpeg 庫的地方
> --with-freetype-dir=/usr/local/freetype/ \ //告訴PHP 放置freetype 庫的地方
> --with-gd=/usr/local/gd2/ \ //告訴PHP 放置gd 庫的地方
> --with-zlib-dir=/usr/local/zlib/ \ //告訴PHP 放置zlib 庫的地方
> --with-mcrypt=/usr/local/libmcrypt/ \ //告訴PHP 放置libmcrypt 庫的地方
> --with-mysql \ //激活MySQL功能,缺省爲mysqlnd
> --with-mysqli \ //變量激活新增長的MySQLi 功能,缺省爲mysqlnd
> --enable-soap \ //變量激活SOAP 和Web services 支持
> --enable-mbstring=all \ //使多字節字符串支持
> --enable-sockets \ //變量激活socket 通訊特性
> --enable-pdo \ //激活pdo
> --with-pdo-mysql //激活pdo-mysql,缺省爲mysqlnd
--enable-fpm
接下來就都是重點了
問題1:
按照以上配置,make時可能報以下錯誤:
/usr/local/src/php-5.5.6/ext/gd/gd.c:57:22: error: X11/xpm.h: No such file or directory
make: *** [ext/gd/gd.lo] Error 1
問題說明:這是提示gd庫不支持xpm
解決方法:
1.安裝libxpm
yum install libXpm-devel.x86_64
2.按照上面的方法從新安裝gd庫
安裝成功後會看到以下信息,說明gd已經支持xpm了:
** Configuration summary for libgd 2.1.0:
Support for Zlib: yes
Support for PNG library: yes
Support for JPEG library: yes
Support for VPX library: no
Support for TIFF library: no
Support for Freetype 2.x library: yes
Support for Fontconfig library: no
Support for Xpm library: yes
Support for pthreads: yes
3.再次按照上面的方法安裝php:
問題2:
報錯:
ext/gd/gd.c:1330: undefined reference to `XpmLibraryVersion'
問題說明:沒有找到xpm庫的安裝位置
解決方法:
1.rpm -ql libXpm :查詢出libXpm的安裝位置,發如今/usr/lib64/ 下
2.從新編譯php,./configure中增長 --with-xpm-dir=/usr/lib64/
3.make && make install 成功!
nginx
整合
Php-fpm配置
修改配置文件
1
cd
/home/likang/package/
php-5.6.2
cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default.conf php-fpm.conf
保存配置文件後,檢驗配置是否正確的方法爲:
/usr/local/php/sbin/php-fpm -t
若是出現諸如
「test is successful」
字樣,說明配置沒有問題。
啓動php-fpm
cp /usr/local/src/php-5.3.27/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
service php-fpm start
若是想讓它開機啓動,執行:
chkconfig php-fpm on
檢測是否啓動:
ps aux |grep php-fpm
netstat -ant |grep 9000