LNMP平台搭建
    其实谈到在Linux上做Web服务器大家都会想到Apache。最近在网上看到很多人都说现在的的网站都是在用Nginx在做。故我也来试了一下!
一、环境介绍:
 系统:Red Hat Enterprise Linux Server release 5.6
 数据库:mysql-5.0.56.tar.gz
 Web服务器:nginx-1.0.12.tar.gz
 PHP:php-5.3.6.tar.bz2
 pcre-8.21.tar.gz
 libpng-1.2.10.tar.bz2
 jpegsrc.v7.tar.gz
 gd-2.0.33.tar.gz
 fontconfig-2.4.2.tar.gz
 freetype-2.3.9.tar.bz2
二、安装mysql:
 # useradd -M -s /sbin/nologin mysql 添加Mysql程序用户,-M是不创建宿主目录,登陆Shell为/sbin/nologin
 # tar zxf mysql-5.0.56.tar.gz -C /usr/src 
 # cd /usr/src/mysql-5.0.56
 # ./configure --prefix=/usr/local/mysql  
 # make && make install
 # cp support-files/my-medium.cnf /etc/my.cnf     
 # /usr/local/mysql/bin/mysql_install_db --user=mysql     初始化mysql数据库。
 # chown -R mysql /usr/local/mysql/var      
 # /usr/local/mysql/bin/mysqld_safe &          在后台把Mysqld这个服务给启起来。
 # echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf    调整lib库路径
 # ldconfig  刷新库文件搜索路径,使用修改生效。
 将mysql添加为系统服务
 # cp support-files/mysql.server /etc/init.d/mysqld
 # chmod +x /etc/init.d/mysqld
 # chkconfig --add mysqld
 # chkconfig --level 35 mysqld on
 重启mysql服务
 # service mysqld restart
 
 设置mysql程序执行的路径
 # export PATH=$PATH:/usr/local/mysql/bin
 # echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
三、安装PCRE:
   PCRE是perl所用到的正则表达式,目的是让所装的软件支持正则表达式。默认情况下,Nginx只处理静态的网页请求,也就是html.如果是来自动态的网页请求,比如*.php,那么Nginx就要根据正则表达式查询路径,然后把*.PHP交给PHP去处理
 #rpm -qa | grep pcre              //查询系统中有没有安装PCRE,一般装系统是默认装有,所以我们要删掉系统自带的
 #cp /lib/libpcre.so.0 /            //在删除系统自带的PCRE之前,要先备份一下libpcre.so.0这个文件,因为RPM包的关联性太强,在删除后没libpcre.so.0这个文件时我们装PCRE是装不上的
 #rpm -e --nodeps pcre-6.6-1.1           //删除系统自带的PCRE
 # tar zxvfpcre-8.21.tar.gz
 #cd pcre-8.21
 #cp /libpcre.so.0 /lib/              //把我们删除系统自带的PCRE之前备份的libpcre.so.0拷贝到/lib 目录下
 #./configure         //配置PCRE,因为PCRE是一个库,而不是像pache、php、postfix等这样的程序,所以我们安装时选择默认路径即可,这样会在后面安装其它东西时避免一些不必要的麻烦.
 #make && make install
四、安装Nginx:
 # tar zxf nginx-1.0.12.tar.gz -C /usr/src
 # cd /usr/src/nginx-1.0.12
 # ./configure --prefix=/usr/local/nginx
 # make && make install
 # /usr/local/nginx/sbin/nginx  启动Nginx
 # echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local  让Nginx开机自动启动。
现在就可以在浏览器里输入 http://server_ip 就可以看到欢迎页面了。
五、安装PHP:
在安装之前,还必需把一些处理图形所需要的包给安装了。
1、安装libpng
 #tar jxvf libpng-1.2.10.tar.bz2
 #cd libpng-1.2.10
 #./configure --prefix=/usr/local/png
 #make && make install
 #ln -s /usr/local/png/lib/* /usr/lib/
2、安装jpeg
 #mkdir /usr/local/jpeg
 #mkdir /usr/local/jpeg/bin
 #mkdir /usr/local/jpeg/lib
 #mkdir /usr/local/jpeg/include
 #mkdir /usr/local/jpeg/man
 #mkdir /usr/local/jpeg/man/man1
 #tar xvf jpegsrc.v7.tar.gz
 #cd jpeg-7
 #./configure --prefix=/usr/local/jpeg --enable-shared --enable-static
 #make && make install
 #ln -s /usr/local/jpeg/lib/* /usr/lib/
3、安装freetype
 #tar jxvf freetype-2.3.9.tar.bz2
 #cd freetype-2.3.9
 #./configure --prefix=/usr/local/freetype
 #make && make install
4、安装fontconfig
 #tar zxvf fontconfig-2.4.2.tar.gz
 #cd fontconfig-2.4.2
 #./configure --prefix=/usr/local/fontconfig --with-freetype-config=/usr/local/freetype/bin/freetype-config
 #make && make install
5、安装gd
 #tar zxvf gd-2.0.33.tar.gz
 #cd gd-2.0.33
 #./configure --prefix=/usr/local/gd --with-png=/usr/local/png --with-jpeg=/usr/local/jpeg --with-freetype=/usr/local/freetype --with-fontconfig=/usr/local/fontconfig
 #cp /usr/local/png/include/png.h ./
 #cp /usr/local/png/include/pngconf.h ./
 #make && make install
6、安装PHP
 #tar jxvf php-5.3.6.tar.bz2 
 #cd php-5.3.6
 #./configure --prefix=/usr/local/php --with-gd=/usr/local/gd --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/png--with-freetype-dir=/usr/local/freetype --with-mysql=/usr/local/mysql --enable-fastcgi --enable-fpm  执行完后系统会提示--enable-fastcgi是一个未知选项,我们不必理会
 #make && make install
 #cp -R ./sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf
 # cp -R ./sapi/fpm/php-fpm /etc/init.d/php-fpm #php-fpm开机启动
 # /etc/init.d/php-fpm
 运行启动后,出现Nov 20 17:54:03.891754 [ALERT] [pool www] pm.min_spare_servers(0) must be a positive value 启动错误。
编辑php-fpm.conf找到pm.min_spare_server ;pm.min_spare_servers = 5 去除;号
也可使用sed -i 's/;pm.min_spare_servers/pm.min_spare_servers/g' /usr/local/php/etc/php-fpm.conf 进行替换
再次运行php-fpm进行启动,提示错误:
Nov 20 17:57:14.210553 [ALERT] [pool www] pm.max_spare_servers(0) must be a positive value
sed -i 's/;pm.max_spare_servers = 35/pm.max_spare_servers = 35/g' /usr/local/php/etc/php-fpm.conf
再次运行php-fpm启动,提示错误:
Nov 20 17:58:55.248268 [WARNING] [pool www] pm.start_servers is not set. It's been set to 20
sed -i 's/;pm.start_servers = 20/pm.start_servers = 20/g' /usr/local/php/etc/php-fpm.conf
再次运行php-fpm未提示错误,启动成功。
 
这里除了更改上面的内容,下面的在有些方面也是很重要的:
listen = 127.0.0.1:9000   这一项在nginx和php分开来安装的时候是很重要的。
 user = www 这里的设置一定要和nginx中的一样,其实不一样也可以工作,我想是安全性方面。
 group = www
 listen.allowed_clients = 127.0.0.1 设置允许访问FastCGI进程解析器的IP地址,默认是本机。如果是Nginx和Php分开的话,这个地方一定要注意修改成Nginx的IP。

#配置php
编译nginx.conf加入如下语句:
       location ~ \.php$ {
        root html;  
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME   /usr/local/nginx/html$fastcgi_script_name;
        }
echo "<?php phpinfo();?>" >/usr/local/nginx/html/index.php
 然后运行index.php测试安装成功。
最后,还要测试下php与mysql之间的合作:这个同LAMP里的一样。这里就不再说了!