LNMP:Nginx、MySQL、PHP、phpMyAdminweb生产环境。 
    Nginx
(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好.中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。淘宝有2次开发Nginx版本tengine地址:http://tengine.taobao.org/

    Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性:
    在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。
Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。Nginx有自己的函数库,并且除了zlib、PCRE和OpenSSL之外,标准模块只使用系统C库函数。而且,如果不需要或者考虑到潜在的授权冲突,可以不使用这些第三方库。
    作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last. fm 描述了成功并且美妙的使用经验。
Nginx 是一个安装非常的简单,配置文件非常简洁(还能够支持perl语法),Bugs非常少的服务器:Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。-----以上摘自百度文库、

pcre提供Nginx的URL Rewrite正则表达式规则的支持,在多数正规网站服务器上是必须安装的,因为我们多数情况是需要Rewrite规则的支持的,只有少数情况下不需要Rewrite规则的时候(例如某些测试服务器等)。

pcre的在不同平台安装的时候,可能因为某些环境因素导致编译安装失败,如果必须安装而又安装不上也不必担心,在后面的安装过程中会有其他方法补救。

Ldconfig 是什么?

它是一个程序,通常它位于/sbin下,供root用户使用。它的作用是将/etc/ld.so.conf列出的路径下的库文件,缓存到/etc/ld.so.cache以供使用,因此当安装完一些库文件,或者修改ld.so.conf增加新的库路径后,需要运行一下/sbin/ldconfig,使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件在/usr/lib下的,也是不会被使用的,结果编译过程中报错,缺少库。所以再改动库文件一定要运行ldconfig,在任何目录下运行都可以。

优点与缺点对比:

select 和epoll效率差的原因: 

select是轮询epoll是触发式的,所以在特定的应用上效率相差会很多

Select: 

1.Socket数量限制:该模式可操作的Socket数由FD_SETSIZE决定,内核默认32*32=1024. 

2.操作限制:通过遍历FD_SETSIZE(1024)个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍. 

Poll: 

1.Socket数量几乎无限制:该模式下的Socket对应的fd列表由一个数组来保存, 大小不限(默认4k). 

2.操作限制:同Select. 

Epoll: 

1.Socket数量无限制:同Poll 

2.操作无限制:基于内核提供的反射模式,有活跃Socket时, 内核访问该Socket的callback,不需要遍历轮询.但是当所有Socket都活跃的时候,这时候所有的callback都被唤醒,会导致资源的竞争.既然都是要处理所有的Socket,那么遍历是最简单最有效的实现方式.

 

 

Php于nginx是采用fastcGI结合的(服务)监听地址127.0.0.1监听端口是9000

对于lnmp首先nginx80端口来链接fastcgi自己是一个服务提供9000负责与动态程序php进行交谈,php有可能连接数据库,然后再去链接数据库mysql.

 

   lnmp搭建 

    安装mysql绿色软件包(二进制安装)

参考网址:http://dev.mysql.com/doc/refman/5.1/zh/index.html

环境:mysql-5.5.15-linux2.6-i686.tar.gz

步骤:

1.tar -zxvf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local 拆包

2.ln -s mysql-5.5.15-linux2.6-i686 mysql   做符号链接

3.groupadd -r mysql

4.useradd -r -gmysqlmysql -s /sbin/nologin

5.chown -R mysql:mysql .    更改当前目录的所有者和所属组属于mysql

6.scripts/mysql_install_db --user=mysql 初始化数据库

7.chown -R root .

8.chown -R mysql data/   当mysql进行运行的时候可以对data这个目录进行写数据

9.图1

102947400.png

10.cp support-files/my-medium.cnf /etc/my.cnf       复制mysql的配置文件

11.cp support-files/mysql.server/etc/init.d/mysqld  复制控制文件

12.图2

103023763.png

13.vim /etc/profile    写入44行   PATH=$PATH:/usr/local/mysql/bin搜索路径

14.vim /etc/ld.so.conf.d/mysql.conf   写入/usr/local/mysql/lib   刷新缓存ldconfig

15.ldconfig -pv |grep mysql  测试库文件是否被加载进入

16.ln -s /usr/local/mysql/include/usr/include/mysql 为头文件创建一个符号链接

17.mysqladmin -u root -p password '123'

 

安装nginx(源码安装)

环境:libevent-2.0.16-stable.tar.gznginx-1.0.11.tar.gz  pcre-devel-6.6-2.el5_1.7.i386.rpm

步骤:

1.tar -zxvf libevent-2.0.16-stable.tar.gz -C /usr/local/src

2.cd /usr/local/src

3../configure--prefix=/usr/local/libevent 指明安装目录

4.make

5.make install

6.图3

103255465.png

7.vim /etc/ld.so.conf.d/libevent.conf  写入  /usr/local/libevent/lib 

8.ldconfig

9.ldconfig pv |gerp libevent

10.ln -s /usr/local/libevent/include   /usr/include/libevent

11.mkdir /mnt/cdrom (这里指挂载本机器上的光盘,PCRE库nginx需要有正则表达式的支持)

12.mount /dev/cdrom/mnt/cdrom/

13.rpm ivh /mnt/cdrom/Server/ pcre-devel-6.6-2.el5_1.7.i386.rpm

14.tar -zxvf nginx-1.0.11.tar.gz -C /usr/local/src/ (安装nginx)

15.groupadd r nginx

16.useradd -r -g nginx -s /sbin/nologinnginx

17../configure \

-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

18.mkar&&make install

19.cd /usr/local/nginx/

图4

103436864.png

20.mkdir -pv /var/tmp/nginx/clien

21.chmod a+x nginx

22.vim nginx附件控制脚本让80端口自动起来(查看附件

23.chkconfig add nginxnginx交给chkconfig来管理

24.chkonfig list |grep nginx查看在5种级别下是否启用

 

PHP安装(源码)新版本PHP都可以支持fastcgi的

环境:php-5.4.13.tar.bz2

步骤:

1.tar jxvf php-5.4.13.tar.bz2 C /usr/local/src

2.cd /usr/local/src 

3../configure\

--prefix=/usr/local/php \

--enable-fpm\

--enable-sockets\

--with-mysql=/usr/local/mysql \

    --with-mysqli=/usr/local/mysql/bin/mysql_config\

--enable-mbstring\

--enable-xml\

--with-png-dir \

--with-png\

--with-jpeg-dir\

--with-zlib\

--with-freetype-dir \

--with-config-file-path=/etc/php \

--with-config-file-scan-dir=/etc/php5.d

4.make && make install

5.cd /usr/local/src/php

6.vim /etc/profile 写入  :/usr/local/php/bin

7. . /etc/profile测试 echo $PATH是否加入

8.mkdir /etc/php  /etc/php5.d

9.cp php.ini-production   /etc/php/php.ini

10.cp sapi/fpm/init.d.php-fpm  /etc/init.d/php-fpm (php-fpm的控制脚本)

11.chmod   a+x  /etc/init.d/php-fpm

12.cd /uer/local/php/etc/

13.cp php-fpm.conf.default   php-fpm.conf

14.service php-fpm start启动fpm(fpm是fastcgi的管理器)

15.netstart tupln |grep fpm查看fpm的端口9000

图5

103714472.png

16.chkconfig --add php-fpmchkconfig--list |grep php 查看需要传递nginx,当php页面传递过来怎样访问9000端口

17.vim/etc/nginx/nginx.conf

图6

103747454.png

图7

103800395.png

syntax: location [=|~|~*|^~|@]/uri/ {....}

表示按大小写匹配

~* 不区分字符的大小写

^~ 禁止做正则表达式匹配的

表示精确匹配

如 location/bbs不加=号码表示匹配bbs目录下的所有的对象,包括子目录下的对象加=号表示之匹配bbs下的对象,不包括子目录中的

18.service nginx restart 重新启动,更改了配置文件则需要重新启动

19.service php-fpm restart 

 

测试 nginx 

图8

103907126.png

1.cd/usr/local/nginx/html/

2.mv index.html index.php

3.vim index.php

图9

103933439.png

图10

103947680.png

4service mysql stop

图11

104013916.png

图12

104033569.png

 

实现xcache对PHP加速

Zend Xcache  Eaccelerate都可以实现对php加速

Zend Studio是专业开发人员在使用PHP整个开发周期中唯一的集成开发环境(IDE),它包括了PHP所有必须的开发部件。通过一整套编辑、调试、分析、优化和数据库工具,Zend Studio加速开发周期,并简化复杂的应用方案。特点:⑴快速代码开发与配置本地和远程调试器;⑵数据库连通性&SQL工具团队合作环境;⑶完全PHP 4/PHP 5切换PHPDocs/PHP文档处理程序支持;⑷SFTP、FTP以至SSH的安全连接100个以上代码摘录;⑸50个以上样品数据库应用程序与Zend Platform组合。

XCache 是一个开源的 opcode 缓存器/优化器, 这意味着他能够提高您服务器上的 PHP 性能. 他通过把编译 PHP 后的数据缓冲到共享内存从而避免重复的编译过程, 能够直接使用缓冲区已编译的代码从而提高速度. 通常能够提高您的页面生成速率 2 到5 倍, 降低服务器负载.

eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍;首先您要安装好PHP,然后再来编译安装 eaccelerator。

环境:xcache-2.0.1.tar.gz

步骤:

1.tar -zxvf xcache-2.0.1.tar.gz -C /usr/local/src/拆解

2.cd /usr/local/src/xcache-2.0.1/

3.图13

105318359.png

4.图14

105333681.png

5.phpize 或者执行/usr/local/php/bin/phpize (phpize命令是用来准备 PHP 扩展库的编译环境的

6.图15

105355739.png

7../configure--enable-xcache--with-php-config=/usr/local/php/bin/php-config

8.make

9.make install

10.cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ 

105548158.png

105604483.png

11.cd /usr/local/src/xcache-2.0.1其中有个xcache.ini 初始化文件

12.cp xcache.ini /etc/php5.d/拷贝的php5.d(额外功能配置存放的目录)PHP在工作的时候会自动扫描这个目录,怎样才能扫描到呢

13.vim xcache.ini

图18

105630808.png

14.测试

15.vim /usr/local/nginx/html/index.php

16.图20

105659702.png

17.图19

105714124.png

18.另外我们可以使用xcache图形的界面来管理加速

19.cd /usr/local/src/xcache-2.0.1/admin

20.图21

105737862.png

21.图22

105752915.png

22.物理目录访问

23.cp -r admin/ /usr/local/nginx/html/

24.cd /usr/local/nginx/html/

25.chmod a+rx admin/

图23

105814434.png

图24

105829703.png

26.chmod o+r index.php

27.cd /etc/php5.d/(对xcache进行加密管理,限制其他用户只有输入密码才可以访问)

图25

echo -n "admin" |md5 sum 可以实现MD5的加密

105857189.png

图26

105917165.png

29.servicephp-fpm restart

110222480.png

110242833.png