LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构Nginx是一个高性能的HTTP反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

LAMPLinux+Apache+Mysql+Perl/PHP/Python)也是一组常用来搭建动态网站或者服务器的开源软件,虽然nginx和apache都能实现网站服务器的搭建,但是两者还是有不小的差距的,下面我们来简单介绍一下。

Apache:进程方式处理用户的请求,每个时刻保持8个空闲的子进程,当用户并发连接请求比较多的时候,相应的子进程也会很多,而每个进程要占用内存空间,所以内存空间占用大,效率低,一般情况下,同一时刻并发连接请求最多不会超过1024个。Apache采用select机制也可以叫轮训机制,效率较低,但是从另一方面来说,这种机制是apache的网站构架很稳定。

Nginx:线程方式处理用户的请求,和apache独占内存不同的是nginx是共享内存的,所以只需要开少量的进程,当有用户请求时,再有这些进程开辟一些线程就行了,这些线程是共享这一个进程的内存空间,但是不好的是当进程崩溃之后,所有由进程开辟的线程也都会崩溃,所以较apache稳定性要差得多。Nginx采用epoll机制也可以叫时间通知机制,效率较select机制要高得多。同一时刻并发送连接请求最高可以达到50000个。

从上面可以看出Apachenginx各有各的优点,下面进行LNMP环境的搭建

软件环境:nginx-1.0.11.tar.gz mysql-5.5.15-linux2.6-i686.tar.gzphp-5.4.13.tar.bz2


libevent-2.0.16-stable.tar.gzpcre-6.6-2.e15_1.7.i389.rpmpcre-devel-6.6-2.e15_1.7.i389.rpm


一、Nginx的安装


内容汇集:


pcre(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正规表达式库.这些在执行正规表达式模式匹配时用Perl 5同样的语法和语义是很有用的。 Boost太庞大了,使用boost regex后,程序的编译速度明显变慢。测试了一下,同样一个程序,使用boost::regex编译时需要3秒,而使用pcre不到1因此改用pcre来解决C语言中使用正则表达式的问题


Libevent是一个强大的跨平台的事件通知库,如果不想被多线程困扰,可以考虑这个平台,它从1.2.* 版本开始支持轻量级的http server 开发支持随后陆续还推出轻量级 DNS serverRPC server 开发支持,这组事件API提供了一种当某个指定文件描述符有效或时间到达时执行某个函数的机制在使用事件API前必须使用event_init()初始化In order to process events, an application needs to call




1、拆解并安装


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


./configure --prefix=/usr/local/libevent


make && make install



2、处理头文件和库文件


库文件的处理:


编辑/etc/ld.so.conf.d/libevent.conf,内容如下


/usr/local/libevent/lib


刷新并查看


211606828.jpg

头文件的处理:


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



3、为了让nginx支持pcreperl库)的话还需要安装一个名为pcre的软件包


经查看后发现已经有安装,但是有些额外的库放在名为pcre-devel的软件包内,安装该软件包


211647890.jpg


4安装配置nginx


groupadd -r nginx

useradd -r -g nginx -s /sbin/nologin -M nginx-M不创建任何家目录)


tar -zxvf nginx-1.0.11.tar.gz -C /usr/local/src


cd /usr/local/src/ nginx-1.0.11



./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 (获得pcre的支持)



make && make install




启动nginx


cd /usr/local/sbin


./nginx -t (测试语法)


213516302.jpg


新建目录之后再做测试


211906125.jpg


开启服务


213534439.jpg


访问测试


211945201.jpg


若想对服务做其他操作,可以利用./nginx -h查看其它参数


212007896.jpg


关闭服务


214040314.jpg


配置环境变量,可以在其它目录下直接输入命令开启服务


PATH=$PATH:/usr/local/nginx/sbin




5、编辑控制脚本


cd /etc/init.d


vim nginx


214025352.jpg

212147117.jpg

把脚本权限设成可执行


chmod a+x nginx


想要脚本能够生效还需要新建临时目录


mkdir -pv /var/tmp/nginx/client


测试


212209257.jpg


编辑控制脚本文件,使nginx支持chkconfig


214002460.jpg

(不要忘记有空格)


测试


212248164.jpg


温馨提示:


1、因为phpfastcgi结合以使nginxmysql完成交互,所以应该首先安装nginxmysql


2、在安装源码或者是二进制软件的过程中,要学会查看说明文件来方便我们的安装过程,比如在安装源码时,拆解完后在其文件夹下形成configure文件,我们可以利用./configure --help |less 命令来查看安装的具体步骤和注意事项




二、mysql的二进制安装



1、拆解


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


cd /usr/local


ln -s mysql-5.5.15-linux2.6-i686 mysql (为了方便,为文件做个链接)



2、安装


groupadd -r mysql (创建系统组)


useradd -r -g mysql mysql -s /sbin/nologin (创建系统账号、加入到系统组中并指明shell)


cd mysql


chown -R mysql:mysql . (改变所有者和所属组)


scripts/mysql_install_db --user=mysql (建设初始数据库)


chown -R root .


chown -R mysql data (为了把数据写入date中,所有者改为mysql


cp support-files/my-medium.cnf /etc/my.cnf (产生配置文件)


cp support-files/mysql.server /etc/init.d/mysqld (产生控制脚本)



2、启动mysql


212315973.jpg


3、连接mysql的工具,mysql客户端


212342379.jpg

经查看所需客户端工具在/use/local/mysql/bin目录下


为了方便调用这些工具,设置环境变量


vim /etc/profile


212407100.jpg

加载并验证


212426104.jpg


库文件的处理


cd /etc/ld.so.conf.d


212452547.jpg


头文件的处理


cd /usr/local/mysql


ln -s include/ /usr/include/mysql




三、PHP(是以fastcgi的方式运行)



1、安装配置


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


cd /usr/local/src/php-5.4.13/


./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 \ (php的初始化文件)


--with-config-file-scan-dir=/etc/php5.d \ php的额外配置文件,php*.d为自定义名)



make && make install



2、对安装后的文件做处理


编辑环境变量使执行程序能直接运行


vim /etc/profile


213927939.jpg



3、新建各种需要的文件


mkdir /etc/php /etc/php5.d


cp php.ini-production /etc/php/php.ini (产生php初始化文件)


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


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


cd /usr/local/php/etc/


cp php-fpm.conf.default php-fpm.conf (产生php-fpm的配置文件)


启动php-fpm


212555849.jpg


chkconfig --add php-fpm



4、配置nginx,让nginx可以相应php页面的请求,发送给php-fpm


vim /etc/nginx/nginx.conf


213905644.jpg

212857971.jpg

5、启动三种服务


service mysqld start


213843750.jpg


6、为mysql设置用户名、密码


mysqladmin -u root -p password '123'



7、访问


cd /usr/local/nginx/html


mv index.html index.php


vim index.php


插入


<?php



phpinfo();



?>




212802134.jpg