LNMP分布式的安装

来源:互联网 发布:淘宝商品无缘无故下架 编辑:程序博客网 时间:2024/06/04 18:07

LNMP环境的搭建

一、更新YUM源

1.下载repo文件

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

2.备份并替换系统的repo文件

[root@localhost ~]# cd /etc/yum.repos.d/

[root@localhost ~]# mv CentOS-Base.repo CentOS-Base.repo.bak

[root@localhost ~]# mv CentOS6-Base-163.repo CentOS-Base.repo

3.执行yum源更新

[root@localhost ~]# yum clean all

[root@localhost ~]# yum makecache

[root@localhost ~]# yum update   -- 不执行也可以

 

二、NGINX的搭建

1.Nginx说明:

Nginx是一个轻量级的HTTP服务器是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器

 

在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。

 

为什么Nginx的性能要比Apache高得多?这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的 Squid、Memcached都采用的是epoll网络I/O模型。

 

处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别:
 假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。而epoll版 宿管大妈会先记下每位同学的房间号,你的朋友来时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满大楼找人。如果来了10000个人,都要 找自己住这栋楼的同学时,select版和epoll版宿管大妈,谁的效率更高,不言自明。同理,在高并发服务器中,轮询I/O是最耗时间的操作之 一,select和epoll的性能谁的性能更高,同样十分明了。

 

2.系统要求

系统要求:Linux 2.6+ 内核 

方法一: 
命令: uname -a 
作用: 查看系统内核版本号及系统名称 
方法二: 
命令: cat /proc/version 

作用: 查看目录"/proc"下version的信息,也可以得到当前系统的内核版本号及系统名称

Nginx版本:nginx/1.8.0

 

 

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++

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;

 

解压安装包

# tar -zxvf nginx-1.8.0.tar.gz

跳转到目录

# cd nginx-1.8.0

设置编译路径为 /usr/local/nginx

# ./configure --prefix=/usr/local/nginx

 

编译

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/local/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/local/nginx/logs/nginx.pid'

平滑重启
如果更改了配置就要重启Nginx,要先关闭Nginx再打开?不是的,可以向Nginx 发送信号,平滑重启。
平滑重启命令:
kill -HUP 住进称号或进程号文件路径

或者使用

/usr/local/nginx/sbin/nginx -s reload

 

注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
nginx -t -c /usr/local/nginx/conf/nginx.conf

或者

/usr/local/nginx/sbin/nginx -t

 

完整server.conf

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;  

    }  

 

 

 

 

6PHP安装

 wgethttp://cn2.php.net/distributions/php-5.5.36.tar.gz

 wgetftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/libxml2-2.6.30.tar.gz

wgethttp://120.52.73.49/jaist.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

wgethttp://zlib.net/zlib-1.2.8.tar.gz

wget http://down1.chinaunix.net/distfiles/gd-2.0.32.tar.gz                  https://bitbucket.org/libgd/gd-libgd/downloads/libgd-2.1.0.tar.gz GD建议使用此版本,不过下载好难】

 

wgetftp://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 \ //建立共享库使用的GNUlibtool

> --enable-static //建立静态库使用的GNUlibtool

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

 

 

ok,以上过程应该不会遇到问题,接下来安装PHP

问题从这里开始,我们一步一步说明:

cd /usr/local/src/

tar zxvf php-5.5.6.tar.gz

cd php-5.5.6

 

编译PHP

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc  --with-libxml-dir=/usr/local/libxml2--with-png-dir=/usr/local/libpng/ --with-jpeg-dir=/usr/local/jpeg9/  --with-freetype-dir=/usr/local/freetype/    --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   --enable-fpm 

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc  --with-libxml-dir=/usr/local/libxml2 --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   --enable-fpm

./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 \ //变量激活SOAPWeb services支持

> --enable-mbstring=all \ //使多字节字符串支持

> --enable-sockets \ //变量激活socket通信特性

> --enable-pdo \ //激活pdo

> --with-pdo-mysql   //激活pdo-mysql,缺省为mysqlnd

 --enable-fpm   [重要,LINUX要配置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 成功!

 

 

 

7、PHP和nginx整合

 

Php-fpm配置

 

修改配置文件

 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

 

 

Nginx.Conf加入:

    include vhost/*.conf;

 

vhost文件配置示例:

server {

    listen 80;

    server_name _;

    

    access_log  logs/likang.default.access.log  main;

    error_log logs/error.log error;

 

    root /var/www/html/likang/default;

 

    location / {

        index index.html index.htm index.php;

 

        if (!-e $request_filename) {

            #rewrite . /index.php last;

        }

    }

 

    location ~ \.php$ {

        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME /var/www/html/likang/default/$fastcgi_script_name;

        fastcgi_pass 127.0.0.1:9000;

        fastcgi_index index.php;

    }

}

 

 

8、添加PHP扩展

安装gd为例子说明

安装GD之前要先安装GD需要的扩展

 

安装需要的扩展:

yum -y install libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel

 

1、到PHP源码包内

cd  /home/package/php-5.5.6

跳转到ext目录下,看到GD之后,跳转到GD目录 [需要装什么扩展就到那个目录 ]

 

 

 

 

2、使用phpize 生成configure文件

 ../../scripts/phpize

3、生成编译文件

./configure --with-php-config=/usr/local/php/bin/php-config

4、编译

make

5、安装

make install

6、修改配置文件

 

注意目录

修改php.ini文件

 

注意要用绝对路径extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/gd.so

 

7、重启nginx 和 php-fpm

 

 

 

Configure

 

 

 

 

原创粉丝点击