蘇’s1/25LNMP(linux+nginx+mysql+php)服务器环境配置一、简介Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engineX”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器.Nginx是由俄罗斯人IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的,它已经在该站点运行超过三年了。IgorSysoev在建立的项目时,使用基于BSD许可。在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。Nginx0.8.46+PHP5.2.14(FastCGI)可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。Nginx超越Apache的高性能和稳定性,使得国内使用Nginx作为Web服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻、腾讯网、搜狐博客等门户网站频道,六间房、56.com等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,盛大在线、金山逍遥网等网络游戏网站,豆瓣、人人网、YUPOO相册、金山爱词霸、迅雷在线等新兴Web2.0网站。为什么Nginx的性能要比Apache高得多?这得益于Nginx使用了最新的epoll(Linux2.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的性能谁的性能更高,同样十分明了。蘇’s2/25Nginx的官方中文维基:二、系统环境系统平台:RHEL5.4(系统要求:Linux2.6+内核)Nginx版本:nginx/1.0.15Mysql版本:5.1.35-logSourcedistributionPhp版本:php-5.2.10三、安装准备1、获取相关开源程序并安装RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包RedHat可以直接利用CentOS的RPM包安装。可以用rpm安装以下包,如有关联包,安装时一起安装。gccgcc-c++autoconflibjpeglibjpeg-devellibpnglibpng-develfreetypefreetype-devellibxml2libxml2-develzlibzlib-develglibcglibc-develglib2glib2-develbzip2bzip2-develncursesncurses-develcurlcurl-devele2fsprogse2fsprogs-develkrb5krb5-devellibidnlibidn-developensslopenssl-developenldapopenldap-develnss_ldapopenldap-clientsopenldap-servers以上包如果安装了的话,不需要再安装了。2、RPM包搜索网站://://code.google.com/p/zed-lnmp/3、nginx软件包准备Nginx所需要的软件包可以从下面位置获取,也可以记住名字在google中搜索。nginx-0.7.61.tar.gzphp-5.2.10.tar.gz蘇’s3/25php-5.2.10-fpm-0.5.11.diff.gzmysql-5.1.35.tar.gzlibiconv-1.13.tar.gzlibmcrypt-2.5.8.tar.gzmcrypt-2.6.8.tar.gzmemcache-2.2.5.tgzmhash-0.9.9.9.tar.gzpcre-7.9.tar.gzeaccelerator-0.9.5.3.tar.bz2PDO_MYSQL-1.0.2.tgzImageMagick.tar.gzimagick-2.2.2.tgz四、安装PHP5.2.10(FastCGI模式)编译安装PHP5.2.10所需的支持库:1.安装libiconv对文本进行编码间的转换,用它来处理中文各种编码之间的转换。#tarzxvflibiconv-1.13.tar.gz#cdlibiconv-1.13/#./configure--prefix=/usr/local#make#makeinstallcd../2.安装libmcrypt实现加密功能的库。蘇’s4/25#tarzxvflibmcrypt-2.5.8.tar.gz#cdlibmcrypt-2.5.8/#./configure#make#makeinstall#/sbin/ldconfig#注:这里不要退出去了。#cdlibltdl/#./configure--enable-ltdl-install#make#makeinstall#cd../../3.安装mhash(哈稀函数库)#tarzxvfmhash-0.9.9.9.tar.gz#cdmhash-0.9.9.9/#./configure#make#makeinstall#cd../ln-s/usr/local/lib/libmcrypt.la/usr/lib/libmcrypt.laln-s/usr/local/lib/libmcrypt.so/usr/lib/libmcrypt.soln-s/usr/local/lib/libmcrypt.so.4/usr/lib/libmcrypt.so.4ln-s/usr/local/lib/libmcrypt.so.4.4.8/usr/lib/libmcrypt.so.4.4.8ln-s/usr/local/lib/libmhash.a/usr/lib/libmhash.a蘇’s5/25ln-s/usr/local/lib/libmhash.la/usr/lib/libmhash.laln-s/usr/local/lib/libmhash.so/usr/lib/libmhash.soln-s/usr/local/lib/libmhash.so.2/usr/lib/libmhash.so.2ln-s/usr/local/lib/libmhash.so.2.0.1/usr/lib/libmhash.so.2.0.14.安装mcrypt#tarzxvfmcrypt-2.6.8.tar.gz#cdmcrypt-2.6.8/#/sbin/ldconfig#./configure#make#makeinstall#cd../注:DG库所需要安装包,可以采用rpm包来安装,减少时间,由于php已经集成GD库,但前提支持包应事先安装,如zlib,png,jpeg,freetype等。如果完全想采用tar包安装的话,请参考lamp相关内容。五、编译安装MySQL建立mysql组,建立mysql用户并且加入到mysql组中#groupaddmysql#useraddmysql-gmysql[root@linuxlnmp]#tarzxvfmysql-5.1.35.tar.gz[root@linuxlnmp]#cdmysql-5.1.35#./configure--prefix=/usr/local/mysql--without-debug--with-extra-charsets=gbk蘇’s6/25--with-extra-charsets=all--enable-assembler--with-pthread--enable-thread-safe-client--with-mysqld-ldflags=-all-static/*不带共享库的形式编译mysqld*/--with-client-ldflags=-all-static--with-big-tables--with-readline/*要采用rpm方式安装ncurses或tar包安装*/--with-ssl/*要采用rpm方式安装openssl*/--with-embedded-server--enable-local-infile--with-plugins=innobase#make&&makeinstall#/usr/local/mysql/bin/mysql_install_db--user=mysql#以mysql身份初始化数据库#cp./support-files/mysql.server/etc/init.d/mysql#复制Mysql启动服务至系统#cp./support-files/my-medium.cnf/etc/my.cnf#chmod755/etc/init.d/mysql#cd/usr/local/mysql/#切换到cd/usr/local/mysql/目录下#chown-Rmysql.#改变当前目录下的所有者为mysql用户#chown-Rmysqlvar#修改数据库目录的权限#chgrp-Rmysql.#改变当前目录下的mysql用户的文件为mysql组#/usr/local/mysql/bin/mysqld_safe--user=mysql&蘇’s7/25#/usr/local/mysql/bin/mysqladmin-urootpassword'admin'#设置管理员密码[root@linuxhtml]#/usr/local/mysql/bin/mysql-uroot-p#测试密码输入Enterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis5Serverversion:5.1.35-logSourcedistributionType'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql\q/*退出mysql*/#chkconfig--addmysql#添加mysqld服务到系统#chkconfigmysqlon#打开myslqd服务#servicemysqlstart#启动Mysql#/usr/local/mysql/bin/mysqladminshutdown#关闭数据库#查看mysql端口的打开情况#netstat-tunlpActiveInternetconnections(onlyservers)ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Pnametcp000.0.0.0:33060.0.0.0:*LISTEN2936/#查看是否启动:#ps-ef|grepmysql注:在配置过程中,整体的配置思路从上往下,其中的一些功能可以用在实际的配置过程中,主要用于测试环节中。蘇’s8/25Mysql的优化部分这里没有给出,需要参考其它资料。六、编译安装PHP#tarzxvfphp-5.2.10.tar.gz#gzip-cdph