LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构,Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
LAMP(Linux+Apache+Mysql+Perl/PHP/Python)也是一组常用来搭建动态网站或者服务器的开源软件,虽然nginx和apache都能实现网站服务器的搭建,但是两者还是有不小的差距的,下面我们来简单介绍一下。
Apache:进程方式处理用户的请求,每个时刻保持8个空闲的子进程,当用户并发连接请求比较多的时候,相应的子进程也会很多,而每个进程要占用内存空间,所以内存空间占用大,效率低,一般情况下,同一时刻并发连接请求最多不会超过1024个。Apache采用select机制也可以叫轮训机制,效率较低,但是从另一方面来说,这种机制是apache的网站构架很稳定。
Nginx:线程方式处理用户的请求,和apache独占内存不同的是nginx是共享内存的,所以只需要开少量的进程,当有用户请求时,再有这些进程开辟一些线程就行了,这些线程是共享这一个进程的内存空间,但是不好的是当进程崩溃之后,所有由进程开辟的线程也都会崩溃,所以较apache稳定性要差得多。Nginx采用epoll机制也可以叫时间通知机制,效率较select机制要高得多。同一时刻并发送连接请求最高可以达到50000个。
从上面可以看出Apache和nginx各有各的优点,下面进行LNMP环境的搭建
软件环境:nginx-1.0.11.tar.gz 、mysql-5.5.15-linux2.6-i686.tar.gz、php-5.4.13.tar.bz2
、libevent-2.0.16-stable.tar.gz、pcre-6.6-2.e15_1.7.i389.rpm、pcre-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 server、RPC 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
刷新并查看
头文件的处理:
ln -s /usr/local/libevent/include /usr/include/libevent
3、为了让nginx支持pcre(perl库)的话还需要安装一个名为pcre的软件包
经查看后发现已经有安装,但是有些额外的库放在名为pcre-devel的软件包内,安装该软件包
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 (测试语法)
新建目录之后再做测试
开启服务
访问测试
若想对服务做其他操作,可以利用./nginx -h查看其它参数
关闭服务
配置环境变量,可以在其它目录下直接输入命令开启服务
PATH=$PATH:/usr/local/nginx/sbin
5、编辑控制脚本
cd /etc/init.d
vim nginx
把脚本权限设成可执行
chmod a+x nginx
想要脚本能够生效还需要新建临时目录
mkdir -pv /var/tmp/nginx/client
测试
编辑控制脚本文件,使nginx支持chkconfig
(不要忘记有空格)
测试
温馨提示:
1、因为php与fastcgi结合以使nginx和mysql完成交互,所以应该首先安装nginx和mysql
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
3、连接mysql的工具,mysql客户端
经查看所需客户端工具在/use/local/mysql/bin目录下
为了方便调用这些工具,设置环境变量
vim /etc/profile
加载并验证
库文件的处理
cd /etc/ld.so.conf.d
头文件的处理
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
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
chkconfig --add php-fpm
4、配置nginx,让nginx可以相应php页面的请求,发送给php-fpm
vim /etc/nginx/nginx.conf
5、启动三种服务
service mysqld start
6、为mysql设置用户名、密码
mysqladmin -u root -p password '123'
7、访问
cd /usr/local/nginx/html
mv index.html index.php
vim index.php
插入
<?php
phpinfo();
?>