一.lnmp

1.简介

LNMP是一个基于CentOS/Debian编写的Nginx、PHP、MySQLphpMyAdmineAccelerator一键安装包。可以在VPS、独立主机上轻松的安装LNMP生产环境。

LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。

Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntufedoragentoo等。

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。

Mysql是一个小型关系型数据库管理系统

PHP是一种在服务器端执行的嵌入HTML文档的脚本语言

这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

2.特点

Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler 站点开发的,已经在一些俄罗斯的大型网站上运行多年,相当的稳定。

Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。

3.优点

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。

作为负载均衡服务器:Nginx 既可以在内部直接支持 RailsPHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx 用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。

作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。

Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

二lnmp源码架构案例

1.案例简介

①.案例原理

在linux平台中将nginx与mysql,php组合到一块。

②.案例环境

vmware 8.0.0 虚拟机模拟软件。redhat 5.4 操作系统

一块网卡ip地址为192.168.10.244/24 

使用host only方式连接。

修改物理机地址解析文件“hosts” 如下图:

p_w_picpath_thumb[18]

此实验中仅使用“192.168.10.244  www.abc.com ” 即可

③.案例目的

搭建lnmp环境并可以正常提供简单的web服务。

④.实验所需的安装包

nginx-1.0.11.tar.gz //nginx源码包

libevent-2.0.16-stable.tar.gz //nginx中的事件相关包升级

mysql-5.5.15-linux2.6-i686.tar.gz//mysql的绿色软件包

php-5.3.7.tar.bz2 //php的源码包

lighttpd-1.4.20.tar.gz //与 php测试相关的源码包

2.mysql的配置

此案例中用的是绿色软件,可以直接使用不用编译安装

①.下载并进行安装前的准备工作

p_w_picpath

②.解压到“/usr/local/”目录下

执行“ln  -s /usr/local/mysql-5.5.15-linux2.6-i686 /user/local/mysql”

③.向系统中加载调用的模块

在“/etc/ld.so.conf.d/”目下创建文件“mysql.conf”内容如下:

“/usr/local/mysql/lib”

p_w_picpath

④.创建快捷方式

ln –s /usr/local/mysql/include  /usr/local/include/mysql_include

使得系统能够找到mysql的头文件。

⑤.创建mysql账号及组及相关配置

[root@donghao244 ~]# groupadd mysql  // 创建mysql用户

[root@donghao244 ~]# useradd -r -g mysql mysql //增加mysql用户及组

[root@donghao244 ~]# cd /usr/local //切换到该目录

[root@donghao244 local]# ls

bin  etc  games  include  lib  libexec  sbin  share  src

[root@donghao244 local]# ln -s /usr/local/src/mysql-5.5.15-linux2.6-i686/  mysql

//新建连接,方便调用

[root@donghao244 local]# cd mysql/

[root@donghao244 mysql]# chown -R mysql .   //修改当前的所有文件及目录的所有者为mysql

[root@donghao244 mysql]# chgrp -R mysql .   //修改当前的所有文件及目录的所属组为mysql

p_w_picpath

 ⑥.使用mysql用户身份初始化数据库

[root@donghao244 mysql]# scripts/mysql_install_db --user=mysql

[root@donghao244 mysql]# chown -R root .  //修改所有当前目录的所有文件及目录的所有者为root

[root@donghao244 mysql]# chown -R mysql data  //修改所有当前目录的data目录的所有者为mysql

⑦.拷贝系统配置文件及将mysql加入系统控制服务中

[root@donghao244 mysql]# cp support-files/my-medium.cnf /etc/my.cnf

//新建my.cnf文件

[root@donghao244 mysql]# bin/mysqld_safe --user=mysql &

//以mysql的身份运行mysql数据库

[1] 23773

[root@donghao244 mysql# 120804 15:39:24 mysqld_safe Logging to '/usr/local/mysql/data/donghao244.cj.com.err'.

120804 15:39:24 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

[root@donghao244 mysql]# netstat -tupln |grep 3306 

tcp        0      0 :::3306                     :::*                        LI

[root@donghao244 mysql]# cp support-files/mysql.server /etc/init.d/mysqld  //可以使系统直接识别的控制脚本

[root@donghao244 mysql]# service  mysqld stop  //测试系统系统命令关闭mysql

Shutting down MySQL..120804 19:22:21 mysqld_safe mysqld from pid file /usr/local/mysql/data/donghao244.cj.com.pid ended

                                                           [  OK  ]

[1]+  Done                    bin/mysqld_safe --user=mysql

[root@donghao244 mysql]# netstat -tupln |grep 3306  //服务 已关闭

[root@donghao244 mysql]# service  mysqld start //测试开启服务

Starting MySQL...                                          [  OK  ]

[root@donghao244 mysql]# netstat -tupln |grep 3306  //查看端口及服务状态

tcp        0      0 :::3306                     :::*                        LISTEN      4456/mysqld        

[root@donghao244 mysql]# chkconfig  --list |grep mysqld   //查看加入控制列表

[root@donghao244 mysql]# chkconfig  --add  mysqld  //将mysql服务加到chkconfig 控制中

[root@donghao244 mysql]# chkconfig  --list |grep mysqld  //查看加入控制列表

mysqld          0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@donghao244 mysql]# ll /etc/rc.d/rc3.d/  |grep mysqld  //查看mysql在3级别的情况

lrwxrwxrwx 1 root root 16 Aug  4 19:24 S64mysqld -> ../init.d/mysqld

⑧.系统中加入识别的模块

[root@donghao244 mysql]# cat /etc/ld.so.conf.d/mysql.conf //向系统加载mysql的模块调用

/usr/local/mysql/lib

[root@donghao244 mysql]# ln -s  /usr/local/mysql/include   /usr/include/mysql 创建头文件连接

[root@donghao244 mysql]# ll  /usr/include/mysql //查看系统默认路径下的头文件的情况

lrwxrwxrwx 1 root root 24 Aug  4 19:32 /usr/include/mysql -> /usr/local/mysql/include

[root@donghao244 mysql]# ldconfig -v  |grep mys   //查看与mysql相关的系统调用

/usr/local/mysql/lib:

libmysqlclient.so.18 -> libmysqlclient_r.so.18.0.0

⑨.为mysql指定账号设置密码

/usr/local/mysql/bin/mysqladmin -u root -p password 123

3.php的编译安装

①.解压到指定文件夹下

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

cd  /usr/local/src/php-5.3.7

②.检查编译环境,编译并安装

./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --with-mysql=/usr/local/mysql --enable-fastcgi

make   //编译

make install  //安装

p_w_picpath

安装完成后的安装信息

p_w_picpath

4.源码升级ldevent(用于事件触发检测)

①.加压压缩文件

tar -zxvf libevent-2.0.16-stable.tar.gz

./configure  //检测编译环境
make  //编译
make install //安装

②.向系统加入加载模块的路径文件
vim /etc/ld.so.conf.d/ldevent.conf  内容如下:

“/ usr/local/lib”

ldconfig –v //查看模块

p_w_picpath

5.编译安装nginx

①.拷贝解压缩

tar -zxvf  nginx-1.0.11.tar.gz

groupadd –r  nginx
useradd -r -g nginx  -s /sbin/nologin -M nginx

②.编译安装

./configure  \  //检测编译环境

--prefix=/usr \  //指定安装的主目录

--sbin-path=/usr/sbin/nginx \ //主程序的安装路径

--conf-path=/etc/nginx/nginx.conf  \  //配置文件的存放位置及名称

--error-log-path=/var/log/ngix/error.log \ //系统出错日志

--http-log-path=/var/log/ngix/access.log \ //服务的访问日志

--pid-path=/var/run/nginx/nginx.pid \  //nginx的运行pid文件及路径

--lock-path=/var/lock/nginx.lock \ //服务运行的锁文件

--user=nginx \ //默认的服务运行身份

--group=nginx \ //默认的服务运行所属组

--with-http_ssl_module \ //加入ssl模块

--with-http_flv_module \ //支持flv 流媒体模块

--with-http_mp4_module \  //支持MP4 模块

--with-http_stub_status_module   \   //状态检测模块

--with-http_gzip_static_module\  //启用模块,需要 zlib 模块

--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 //添加url 从定性

make //编译

make install  //安装

③.修改配置文件,测试调用php与mysql

vim /etc/nginx/nginx.conf

37         server_name  ww.abc.com;

45             index  index.html index.htm index.php;

//支持默认“index.php” 主页文件

65             location ~ \.php$ {
66             root           html;
67             fastcgi_pass   127.0.0.1:9000;
68             fastcgi_index  index.php;
69             fastcgi_param  SCRIPT_FILENAME  /usr/html$fastcgi_script_name;
70            include        fastcgi_params;
71         }

④.修改默认主目录

vim /usr/html/index.html

  1 <?php
  2 $quest=mysql_connect('127.0.0.1','root','123');
  3 if ($quest)
  4 echo "ok,ehhe,let's go...";
  5 else
  6 echo "sorry!!!";
  7 phpinfo();
  8 ?>

⑤.修改默认主页为php格式

mv  /usr/html/index.html  /usr/html/index.php

6.编译及安装lighttpd

①.拆包,编译并安装lighttpd

cd  local/src/lighttpd-1.4.20
./configure --prefix=/usr/local/lighttpd   //测试编译环境

make  //编译
make install //安装

②.使用spawn-fcgi

拷贝spawn-fcgi 到nginx中

cp  /usr/local/lighttpd/bin/spawn-fcgi  /usr/local/nginx/sbin/

删除 /usr/local/lighttpd 目录
rm -rf  /usr/local/lighttpd

启动 cgi

/usr/local/nginx/sbin/spawn-fcgi -a 127.0.0.1 -p 9000  -C 8 -u nginx  -f /usr/local/php5/bin/php-cgi

③.测试nginx的配置文件

[root@donghao244 ~]# /usr/sbin/nginx  -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

浏览器测试

p_w_picpath

关闭mysql测试!!!

service mysqld  stop

p_w_picpath

开启mysql测试!!!

service mysqld  start

p_w_picpath_thumb[15]

此时的lnmp环境已经简单搭建完成

如果搭建简单的论坛和lamp环境下相同。

配置文件为“/etc/nginx/nginx.conf”。主目录为“/usr/html/”。

可以参考http://donghao123.blog.51cto.com/4879169/979400搭建基于nginx的基于主机名的虚拟主机。

nginx支持的虚拟主机为基于ip,基于端口,基与主机头,物理目录,别名等。方式搭建个人站点。

               嗯,韩宇说的对呀!!!