LNMP是指Linux+Ngnix+Mysql+Php的组合。以下分别进行介绍:

首先来介绍一下Nginx.Nginx是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。Nginx不仅可以作为web服务器,也可以作为负载均衡器。

MySQL是一款开源免费的数据软件,MySQL是一个小型关系型数据库管理系统,其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库.

    PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。

一、预编译环境

1.源码包

nginx-1.1.18.tar.gz

mysql-5.0.87.tar.gz

php-5.4.0.tar.gz

下载:

http://nginx.org/en/download.html nginx各版本下载

http://www.mysql.com/downloads/ mysql各版本下载

http://www.php.net/downloads.php  php各个版本下载

2.系统环境

Linux 5.4 (2.6.18-164.el5)

    想要实现源码安装,必须先要配置好编译环境。使用yum grouplist |less进行查看。

Development Tools --开发工具

Legacy Software Development  -- 传统软件开发工具

Development Libraries –开发工具库

    如果需要图形。那么以下安装包是需要的。

    Kde环境需要安装:

    Kde software development

    Gnome环境需要安装:

    Gnome software development

    X software development

[root@server ~]# yum groupinstall "Development Libraries"

[root@server ~]# yum groupinstall "Development Tools"

3.上传软件到系统

   将软件包上传到系统中(略),查看

[root@server ~]# ll

total 36632

-rw------- 1 root root     1291 Feb  8 02:05 anaconda-ks.cfg

-rw-r--r-- 1 root root    35236 Feb  8 02:04 install.log

-rw-r--r-- 1 root root     3995 Feb  8 02:02 install.log.syslog

-rw-r--r-- 1 root root 22231820 Feb  8 02:36 mysql-5.0.87.tar.gz

-rw-r--r-- 1 root root   714741 Feb  8 02:36 nginx-1.1.18.tar.gz

-rw-r--r-- 1 root root 14449872 Feb  8 02:36 php-5.4.0.tar.gz

[root@server ~]#

二、源码安装Nginx

1.安装所依赖的包

[root@server ~]# yum -y install zlib-devel pcre-devel openssl-devel

2.拆包

[root@server ~]# ll

total 36632

-rw------- 1 root root     1291 Feb  8 02:05 anaconda-ks.cfg

-rw-r--r-- 1 root root    35236 Feb  8 02:04 install.log

-rw-r--r-- 1 root root     3995 Feb  8 02:02 install.log.syslog

-rw-r--r-- 1 root root 22231820 Feb  8 02:36 mysql-5.0.87.tar.gz

-rw-r--r-- 1 root root   714741 Feb  8 02:36 nginx-1.1.18.tar.gz

-rw-r--r-- 1 root root 14449872 Feb  8 02:36 php-5.4.0.tar.gz

[root@server ~]# tar -zxvf nginx-1.1.18.tar.gz -C /usr/src

    这里解释下解压参数,z代表gzip(也就是后面的.gz文件)x代表加压,v表示显示详细信息,-f使用档案文件或设备(必选参数) -C 指定解压目录,一般都放在/usr/src目录下

3.配置

[root@server ~]# cd /usr/src/nginx-1.1.18/   //切换到源码存放目录

[root@server nginx-1.1.18]# ./configure  \  //"\"表示参数未完待续。

>--prefix=/usr/local/nginx \   //指定安装目录为/usr/local/nginx

> --sbin-path=/usr/sbin/nginx \  

> --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 \   //安装可以查看nginx状态的程序

> --with-http_gzip_static_module \

> --http-proxy-temp-path=/var/tmp/nginx/proxy/ \

> --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \

> --with-pcre   //启用正规表达式

4.编译安装

[root@server nginx-1.1.18]# make   //编译

[root@server nginx-1.1.18]# make install  //安装

5.查看

[root@server ~]# ls /usr/local/nginx/   //查看安装文件

html

[root@server ~]#    

[root@server ~]# groupadd -r nginx   //创建组帐号

[root@server ~]# useradd -r -g nginx -s /bin/false -M nginx  //创建用户,并不允许其登录

[root@server ~]# nginx  //启动nginx

[root@server ~]# netstat -tupln |grep nginx         //查看端口

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      9275/nginx: master 

[root@server ~]#

6.测试

使用pc查看结果

 

7.其它

为了方便,可以为nginx提供一个启动服务的脚本(您可以下载附件)

[root@server ~]#  vim /etc/rc.d/init.d/nginx //nginx文件已经共享为附件

[root@server ~]# chkconfig --add nginx //添加nginx服务

[root@server ~]# chkconfig nginx on  //设置nginx服务开机启起

[root@server ~]#  chkconfig --list nginx //查看nginx端口

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

三、源码安装Mysql

1.安装所依赖的包

[root@server ~]# yum -y install ncurses-devel

2.拆包

[root@server ~]# ll

total 36632

-rw------- 1 root root     1291 Feb  8 02:05 anaconda-ks.cfg

-rw-r--r-- 1 root root    35236 Feb  8 02:04 install.log

-rw-r--r-- 1 root root     3995 Feb  8 02:02 install.log.syslog

-rw-r--r-- 1 root root 22231820 Feb  8 02:36 mysql-5.0.87.tar.gz

-rw-r--r-- 1 root root   714741 Feb  8 02:36 nginx-1.1.18.tar.gz

-rw-r--r-- 1 root root 14449872 Feb  8 02:36 php-5.4.0.tar.gz

[root@server ~]# tar -zxvf mysql-5.0.87.tar.gz -C /usr/src 

3.配置

[root@server ~]# cd /usr/src/mysql-5.0.87/  //切换到源码目录

[root@server mysql-5.0.87]#

[root@server mysql-5.0.87]# ./configure \    //"\"表示参数未完待续。

>--prefix=/usr/local/mysql \      //指定安装目录

> --without-debug \       //取消调试模式提高性能

> --with-extra-charsets=utf8,gbk \  //仅仅指定需要的默认字符集提高性能

> --enable-assembler \     //使用汇编模式提高性能

> --with-mysqld-ldflags=-all-static \   //以静态方式编译提高性能

> --with-client-ldflags=-all-static \

> --with-unix-socket-path=/tmp/mysql.sock \  //使用unix socket提高性能

> --with-ssl

4.编译

[root@server mysql-5.0.87]# make   //编译

[root@server mysql-5.0.87]# make install   //安装

5.修改相关文件

    安装完成后复制配置文件和启动脚本:

[root@server mysql-5.0.87]# cp support-files/my-medium.cnf /etc/my.cnf   //复制配置文件

[root@server mysql-5.0.87]# cp support-files/mysql.server /etc/init.d/mysqld //复制启动脚本

[root@server mysql-5.0.87]# chmod +x /etc/init.d/mysqld //给启动脚本执行权限

    为了以后方便我们为所有的二进制可执行文件和动态链接库文件做一个软连接

[root@server mysql-5.0.87]# ln -s /usr/local/mysql/bin/* /usr/local/bin/  //为可执行的二进制文件做软连

[root@server mysql-5.0.87]# ln -s /usr/local/mysql/lib/mysql/lib* /usr/lib/  //为动态链接库做一个软连接

然后我们初始化数据库

[root@server mysql-5.0.87]# mysql_install_db --user=mysql  //MySQL用户安装数据库

为了MySQL能正常使用我们需要更改一下MySQL安装目录和MySQL的数据库目录的属主和属组

[root@server mysql-5.0.87]# chown -R root.mysql /usr/local/mysql/ //更改安装目录属主为root,属组为mysql

[root@server mysql-5.0.87]# chown -R mysql.mysql /usr/local/mysql/var/  //更改数据库目录属主和属组都为mysql

[root@server mysql-5.0.87]#

6.测试

root@server ~]# service mysqld start   //开启mysql服务

Starting MySQL.                                            [  OK  ]

[root@server ~]#

 

[root@server ~]# netstat -antlp | grep 3306   //查看端口

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      31513/mysqld       

[root@server ~]#

 

[root@server ~]# mysql   //连接mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.0.87-log Source distribution

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql> show databases;  //查看数据库

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| test               |

+--------------------+

3 rows in set (0.00 sec)

 

mysql> \q

Bye

[root@server ~]#

四、源码安装Php

1.上传所依赖的包

安装PHP前首先要安装几个源码包依赖:libmcryptmhashmcrypt ,本例中使用源码包如下: libmcrypt-2.5.8.tar.bz2mhash-0.9.9.9.tar.bz2mcrypt-2.6.8.tar.gz 。将所需要的源码包上传到系统中。(略)

[root@server ~]# ll

total 38608

-rw------- 1 root root     1291 Feb  8 02:05 anaconda-ks.cfg

-rw-r--r-- 1 root root    35236 Feb  8 02:04 install.log

-rw-r--r-- 1 root root     3995 Feb  8 02:02 install.log.syslog

-rw-r--r-- 1 root root   875425 Feb  8 04:39 libmcrypt-2.5.8.tar.bz2

-rw-r--r-- 1 root root   471915 Feb  8 04:38 mcrypt-2.6.8.tar.gz

-rw-r--r-- 1 root root   655906 Feb  8 04:38 mhash-0.9.9.9.tar.bz2

-rw-r--r-- 1 root root 22231820 Feb  8 02:36 mysql-5.0.87.tar.gz

-rw-r--r-- 1 root root   714741 Feb  8 02:36 nginx-1.1.18.tar.gz

-rw-r--r-- 1 root root 14449872 Feb  8 02:36 php-5.4.0.tar.gz

2.安装所依赖的包

安装libmcrypt

[root@server ~]# tar -jxvf libmcrypt-2.5.8.tar.bz2 -C /usr/src  //解压缩

[root@server ~]# cd /usr/src/libmcrypt-2.5.8/  //切换到源文件目录

[root@server libmcrypt-2.5.8]# ./configure  //配置

[root@server libmcrypt-2.5.8]# make   //编译

[root@server libmcrypt-2.5.8]# make install  //安装

安装mhash

[root@server ~]# tar -jxvf mhash-0.9.9.9.tar.bz2 -C /usr/src  //解压缩

[root@server ~]# cd /usr/src/mhash-0.9.9.9/   //切换到源文件目录

[root@server mhash-0.9.9.9]# ./configure   //配置

[root@server mhash-0.9.9.9]# make    //编译

[root@server mhash-0.9.9.9]# make install   //安装

 

这两个包安装完成后要把动态链接库做一个软连接到/usr/lib,因为接下来的mcrypt依赖于这两个包

[root@server ~]# ln -s /usr/local/lib/libmcrypt* /usr/lib

[root@server ~]# ln -s /usr/local/lib/libmhash.* /usr/lib/

安装mcrypt (如果您不需要加密服务,crypt可以选择不安装)

[root@server ~]# tar -zxvf mcrypt-2.6.8.tar.gz -C /usr/src  //解压缩

[root@server ~]# cd /usr/src/mcrypt-2.6.8/   //切换到源文件目录

[root@server mcrypt-2.6.8]# ./configure  //配置

[root@server mcrypt-2.6.8]# make   //编译

[root@server mcrypt-2.6.8]# make install    //安装

3.拆包

    我们使用nginx调用php的时候使用fpm的方式,php 5.4中加入了对php-fpm的支持,所以就不需要打补丁了.安装PHP,再次安装所依赖的包

[root@server ~]# yum -y install libxml2-devel curl-devel libpng-devel openldap-devel

[root@server ~]# ll

total 38608

-rw------- 1 root root     1291 Feb  8 02:05 anaconda-ks.cfg

-rw-r--r-- 1 root root    35236 Feb  8 02:04 install.log

-rw-r--r-- 1 root root     3995 Feb  8 02:02 install.log.syslog

-rw-r--r-- 1 root root   875425 Feb  8 04:39 libmcrypt-2.5.8.tar.bz2

-rw-r--r-- 1 root root   471915 Feb  8 04:38 mcrypt-2.6.8.tar.gz

-rw-r--r-- 1 root root   655906 Feb  8 04:38 mhash-0.9.9.9.tar.bz2

-rw-r--r-- 1 root root 22231820 Feb  8 02:36 mysql-5.0.87.tar.gz

-rw-r--r-- 1 root root   714741 Feb  8 02:36 nginx-1.1.18.tar.gz

-rw-r--r-- 1 root root 14449872 Feb  8 02:36 php-5.4.0.tar.gz

[root@server ~]# tar -zxvf php-5.4.0.tar.gz -C /usr/src   //拆解

4.配置

[root@server ~]# cd /usr/src/php-5.4.0/   //切换到源码目录

[root@server php-5.4.0]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql/ --with-zlib --enable-xml --disable-rpath --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --with-curl --with-curlwrappers --enable-fpm --enable-fastcgi --with-mcrypt --with-gd --with-openssl --with-mhash --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc -enable-zip --enable-soap  //编译

5.编译

[root@server php-5.4.0]# make   //编译

[root@server php-5.4.0]# make install   //安装

6.修改PHP相关文件

[root@server php-5.4.0]# cp php.ini-production /usr/local/php/php.ini //如果是开发就复制php.ini-development

[root@server php-5.4.0]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

[root@server php-5.4.0]# ln -s /usr/local/php/bin/php /usr/bin/

[root@server ~]# vim /usr/local/php/etc/php-fpm.conf  //配置php-fpm,编辑php-fpm.conf

[root@server ~]# mkdir /var/run/php-fpm

[root@server ~]# /usr/local/php/sbin/php-fpm  //启动php-fpm

7.修改nginx相关文件

[root@server ~]# vim /etc/nginx/nginx.conf  //修改nginx配置文件支持php

 

[root@server ~]# pkill -1 nginx  //pkill 参数 -1(数字1) 不需要重启,只需要重新读取文件

五、测试

1.测试php

[root@server ~]# vim /usr/local/nginx/html/index.php

使用pc机查看结果

 

2.测试与数据库连接

[root@server ~]# vim /usr/local/nginx/html/index.php

使用pc机查看结果