简介

LNMP是一个基于CentOS/Debian编写的Nginx、PHP、MySQLphpMyAdmineAccelerator一键安装包。可以在VPS、独立主机上轻松的安装LNMP生产环境。

LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。

Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntufedoragentoo等。

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。

Mysql是一个小型关系型数据库管理系统

PHP是一种在服务器端执行的嵌入HTML文档的脚本语言

这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

特点 Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler 站点开发的,已经在一些俄罗斯的大型网站上运行多年,相当的稳定。

Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。

优点 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。

作为负载均衡服务器:Nginx 既可以在内部直接支持 RailsPHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx 用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。

作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。

Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

环境搭建

首先必须有源码,然后必要的编译环境。

本文只介绍nginx 与php的源码安装。至于mysql前面文章都已经介绍过了。

这里准备了两个源码。

-rw-r--r-- 1 root root 837650 08-11 16:00 libevent-2.0.16-stable.tar.gz   //提高nginx性能的一个包
-rw-r--r-- 1 root root 691501 08-11 16:00 nginx-1.0.11.tar.gz       具体的步骤说明可以参照lamp文章

[root@localhost ~]# yum list all |grep pcre
This system is not registered with RHN.
RHN support will be disabled.
pcre.i386                                 6.6-2.el5_1.7              installed 
pcre-devel.i386                           6.6-2.el5_1.7              rhel-server

我们需要库文件的支持。所以安装pcre-devel.      

[root@localhost ~]# yum install pcre-devel

[root@localhost ~]# tar -zxvf libevent-2.0.16-stable.tar.gz -C /usr/local/src/

[root@localhost ~]# cd /usr/local/src/libevent-2.0.16-stable/

[root@localhost libevent-2.0.16-stable]# ./configure    //不进行过多的配置了。直接编译。

[root@localhost libevent-2.0.16-stable]# vim /etc/ld.so.conf.d/libevent.conf

/usr/local/lib

[root@localhost libevent-2.0.16-stable]# make

[root@localhost libevent-2.0.16-stable]# make install

[root@localhost libevent-2.0.16-stable]# ldconfig -v

[root@localhost libevent-2.0.16-stable]# ldconfig -pv |grep libevent
   libevent_pthreads-2.0.so.5 (libc6) => /usr/local/lib/libevent_pthreads-2.0.so.5
    libevent_openssl-2.0.so.5 (libc6) => /usr/local/lib/libevent_openssl-2.0.so.5
    libevent_extra-2.0.so.5 (libc6) => /usr/local/lib/libevent_extra-2.0.so.5
    libevent_core-2.0.so.5 (libc6) => /usr/local/lib/libevent_core-2.0.so.5
    libevent-2.0.so.5 (libc6) => /usr/local/lib/libevent-2.0.so.5

    libevent-1.1a.so.1 (libc6) => /usr/lib/libevent-1.1a.so.1

[root@localhost libevent-2.0.16-stable]# cd

[root@localhost ~]# tar -zxvf nginx-1.0.11.tar.gz  -C /usr/local/src/

[root@localhost ~]# cd /usr/local/src/nginx-1.0.11/

[root@localhost nginx-1.0.11]# groupadd -r nginx   //创建组nginx

[root@localhost nginx-1.0.11]# useradd -r -g nginx -s /bin/false -M nginx     //创建用户nginx属于组nginx无登录权限禁止创建家目录

[root@localhost nginx-1.0.11]# mkdir /var/tmp/nginx

[root@localhost nginx-1.0.11]# ./configure \
--prefix=/usr \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx/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/ \
--with-pcre

[root@localhost nginx-1.0.11]# make

[root@localhost nginx-1.0.11]# make install

[root@localhostnginx-1.0.11]# /usr/sbin/nginx   //启动nginx

这样就解决了nginx的问题。

image

但是支持php还需要fastcgi_params  fastcgi_params.default  fastcgi.conf的改动。

[root@localhost nginx-1.0.11]#vim /etc/nginx/nginx.conf

43         location / {
44             root   html;
45             index index.php index.html index.htm;
46         }

65         location ~ \.php$ {
66             root           html;
67             fastcgi_pass   127.0.0.1:9000;
68             fastcgi_index  index.php;
69             fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
70             include        fastcgi_params;
71         }

[root@localhost nginx-1.0.11]# vim /etc/nginx/fastcgi_params

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

安装PHP
 

这个地方是最重要的地方,因为默认情况下Nginx和PHP他俩之间是一点感觉没有的。在之前,很多朋友都搭建过Apache+PHP,Apache+PHP编译后生成的是模块文件,而Nginx+PHP需要PHP生成可执行文件才可以,所以要利用fastcgi技术来实现N ginx与PHP的整合,这个只要我们安装时启用FastCGI即可。此次我们安装PHP不仅使用了FastCGI,而且还使用了PHP-FPM这么一个东东,PHP-FPM说白了是一个管理FastCGI的一个管理器,它作为PHP的插件存在,在安装PHP要想使用PHP-FPM时就需要把PHP-FPM以补丁的形式安装到PHP中,而且PHP要与PHP-FPM版本一致,这是必须的,切记!

php 5.3.3及以上的版本内置了fpm ,此处用5.3.7举例,下载后解压,进入解压后目录

[root@localhost ~]# tar -jxvf php-5.3.7.tar.bz2 -C /usr/local/src/

[root@localhost ~]# cd /usr/local/src/php-5.3.7/

[root@localhost php-5.3.7]# less INSTALL

Example #1 Installation Instructions (Apache Shared Module Version) for
PHP
1. gunzip apache_xxx.tar.gz
2. tar -xvf apache_xxx.tar
3. gunzip php-xxx.tar.gz
4. tar -xvf php-xxx.tar
5. cd apache_xxx
6. ./configure --prefix=/www --enable-module=so
7. make
8. make install
9. cd ../php-xxx

[root@localhost php-5.3.7]# ./configure -help

--prefix //安装路径
--enable-mbstring //字符串支持

[root@localhost php-5.3.7]# ./configure --prefix=/usr/local/php --enable-mbstring=all  --enable-fastcgi --enable-fpm

[root@localhost php-5.3.7]# make

[root@localhost php-5.3.7]# make install

注:Nginx+PHP整合,在安装时必须启用--enable-fastcgi和 --enable-fpm,这两个选项是做什么的上面已经描述。执行完后系统会提示--enable-fastcgi是一个未知选项,我们不必理会

再把php.ini-production复制到/usr/local/php/lib下,改名php.ini,

把/usr/local/php/etc/php-fpm.conf.default复制一份到相同目录命名为php-fpm.conf

[root@localhost php-5.3.7]# cp php.ini-production /usr/local/php/lib/php.ini

[root@localhost php-5.3.7]# cp /usr/local/php/etc/php-fpm.conf.default  /usr/local/php/etc/php_fpm.conf

为php-fpm提供Sysv init脚本,并将其添加至服务列表:
[root@localhost php-5.3.7]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@localhost php-5.3.7]# chmod +x /etc/rc.d/init.d/php-fpm

[root@localhost php-5.3.7]# chkconfig --add php-fpm
[root@localhost php-5.3.7]# chkconfig php-fpm on

打开php-fpm.conf,去掉相应的分号注释,最后如下

pid = /usr/local/php/var/run/php-fpm.pid

error_log = log/php-fpm.log

listen = 127.0.0.1:9000

user = nobody

group = nobody

pm = dynamic

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

[root@localhost php-5.3.7]# service php-fpm start //启动php-fpm

使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):
 

[root@localhost php-5.3.7]# ps aux |grep php-fpm
root      5597  0.0  0.2  16340  2176 ?        Ss   16:49   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)              
nobody    5598  0.0  0.2  16340  1724 ?        S    16:49   0:00 php-fpm: pool www                                                      
nobody    5599  0.0  0.2  16340  1724 ?        S    16:49   0:00 php-fpm: pool www                                                      
nobody    5600  0.0  0.2  16340  1724 ?        S    16:49   0:00 php-fpm: pool www                                                      
nobody    5601  0.0  0.2  16340  1724 ?        S    16:49   0:00 php-fpm: pool www                                                      
nobody    5602  0.0  0.2  16340  1724 ?        S    16:49   0:00 php-fpm: pool www                                                      
root      5606  0.0  0.0   5024   660 pts/1    R+   16:51   0:00 grep php-fpm

测试网页

[root@localhost ~]# vim /usr/html/index.php

<?php
phpinfo();
?>

360截图20120901202609890

本文章没有做mysql的安装。可以与上篇博文进行结合。搭建一个完整的环境。

大家可以http://mumaren.blog.51cto.com/4180778/932458查看详细步骤。