lnmp環境的搭建

1、NGINX的搭建php

1.Nginx說明:

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

 

2.系統要求

系統要求:Linux 2.6+ 內核 c++

方法一: 命令: uname -a 做用: 查看系統內核版本號及系統名稱 方法二: 命令: cat /proc/version sql

做用: 查看目錄"/proc"下version的信息,也能夠獲得當前系統的內核版本號及系統名稱apache

Nginx版本:nginx/1.8.0api

 

 

3.安裝過程說明  

groupadd www   OR  /usr/sbin/groupadd www 服務器

useradd -g www www  OR /usr/sbin/useradd -g www www

 

 

(1)獲取nginx的安裝包

 wget http://nginx.org/download/nginx-1.8.0.tar.gz

(2)解壓nginx的安裝包

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

 

4.遇到的問題:

 

[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文件的位置

 

 

 

5.NGINX經常使用操做

啓動操做

/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

  1. server {    
  •     listen 80 default;    
  •     server_name dev.localhost;    
  •     access_log logs/dev.access.log;    
  •   
  •   
  •     root /var/www/html/dev;    
  •   
  •   
  •     server_name_in_redirect off;    
  •   
  •   
  •     location / {    
  •         index index.html index.php;  
  •     }    
  •   
  •   
  •     location ~ \.php$ {  
  •         fastcgi_pass   127.0.0.1:9000;  
  •         fastcgi_index  index.php;  
  •         fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;  
  •         include        fastcgi_params;  
  •     }  

 

 

 

 

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 成功!

 

 

 

  1. PHP

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

相關文章
相關標籤/搜索