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
10.cp support-files/my-medium.cnf /etc/my.cnf 复制mysql的配置文件
11.cp support-files/mysql.server/etc/init.d/mysqld 复制控制文件
12.图2
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
7.vim /etc/ld.so.conf.d/libevent.conf 写入 /usr/local/libevent/lib
8.ldconfig
9.ldconfig �Cpv |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 �Civh /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 �Cr 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
20.mkdir -pv /var/tmp/nginx/clien
21.chmod a+x nginx
22.vim nginx附件控制脚本让80端口自动起来(查看附件)
23.chkconfig �Cadd nginxnginx交给chkconfig来管理
24.chkonfig �Clist |grep nginx查看在5种级别下是否启用
PHP安装(源码)新版本PHP都可以支持fastcgi的
环境:php-5.4.13.tar.bz2
步骤:
1.tar �Cjxvf php-5.4.13.tar.bz2 �CC /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 �Ctupln |grep fpm查看fpm的端口9000
图5
16.chkconfig --add php-fpmchkconfig--list |grep php 查看需要传递nginx,当php页面传递过来怎样访问9000端口
17.vim/etc/nginx/nginx.conf
图6
图7
syntax: location [=|~|~*|^~|@]/uri/ {....}
~ 表示按大小写匹配
~* 不区分字符的大小写
^~ 禁止做正则表达式匹配的
= 表示精确匹配
如 location/bbs不加=号码表示匹配bbs目录下的所有的对象,包括子目录下的对象加=号表示之匹配bbs下的对象,不包括子目录中的
18.service nginx restart 重新启动,更改了配置文件则需要重新启动
19.service php-fpm restart
测试 nginx
图8
1.cd/usr/local/nginx/html/
2.mv index.html index.php
3.vim index.php
图9
图10
4service mysql stop
图11
图12
实现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
4.图14
5.phpize 或者执行/usr/local/php/bin/phpize (phpize命令是用来准备 PHP 扩展库的编译环境的)
6.图15
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/
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
14.测试
15.vim /usr/local/nginx/html/index.php
16.图20
17.图19
18.另外我们可以使用xcache图形的界面来管理加速
19.cd /usr/local/src/xcache-2.0.1/admin
20.图21
21.图22
22.物理目录访问
23.cp -r admin/ /usr/local/nginx/html/
24.cd /usr/local/nginx/html/
25.chmod a+rx admin/
图23
图24
26.chmod o+r index.php
27.cd /etc/php5.d/(对xcache进行加密管理,限制其他用户只有输入密码才可以访问)
图25
echo -n "admin" |md5 sum 可以实现MD5的加密
图26
29.servicephp-fpm restart