LNMP环境的搭建是每个linux运维人员必会的基本技能,我习惯根据我的需求来进行精简安装,下面我来贴出我的搭建步骤:(linux系统就的安装步骤就不在此叙述,略)

mysql源码包下载地址:http://mysql.mirror.kangaroot.net/Downloads/

cmake源码包下载地址:http://www.cmake.org/files/

步骤一:安装nginx

在安装nginx之前,我们需要检查本机linux系统内是否已经安装gcc、pcre、pcre-devel,如果没安装请执行 yum install gcc pcre pcre-devel。完成后我们继续:

将nginx下载在/usr/local/src目录下:

[root@localhost ~]#cd /usr/local/src/

[root@localhost src]#wget http://nginx.org/download/nginx-1.2.6.tar.gz

下载完成后进行解压安装:

[root@localhost src]#tar zxvf nginx-1.2.6.tar.gz

[root@localhost src]#cd nginx-1.2.6

[root@localhost nginx-1.2.6]#./configure --prefix=/usr/local/nginx        (这里需要指定pcre库的路径:--with-pcre=【path】因为我们yum安装的pcre及pcre-devel所以可以不用添加该参数,但如果我们采用的是tar包安装,我们需指定pcre路径,尤其注意为源码的路径,不是安装路径。还有很多参数,因为我的没什么其他需求,所以一切从简,这里就略去)

[root@localhost nginx-1.2.6]#make ;make install  

若整个安装过程中无报错,那么我们安装的就基本ok了;


[root@localhost nginx-1.2.6]#cd /usr/local/nginx

[root@localhost nginx]#ls

client_body_temp  fastcgi_temp  logs        sbin       uwsgi_temp

conf              html          proxy_temp  scgi_temp

下面我们可以检测一下nginx的启动配置文件,若无报错就可以启动nginx;
root@localhost nginx]#sbin/nginx -t
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful  ( ok成功了)
[root@localhost nginx]# sbin/nginx (直接用脚本执行启动nginx,很多朋友习惯在/etc/rc.d/init.d/下做一个启动脚本,然后用chkconfig nginx on把它设置为开机启动。我习惯直接在/etc/rc.d/rc.local文件下直接添加nginx的启动脚本,其实效果也一样)
[root@localhost nginx]#ps -ef |grep nginx   (查进程看nginx是否启动成功)
root      5736     1  0 13:48 ?        00:00:00 nginx: master process sbin/nginx
nobody   20277  5736  0 15:06 ?        00:00:00 nginx: worker process
(启动成功)
查看nginx的端口: [root@localhost nginx]#netstat -nutpl |grep nginx |grep -v grep
tcp        0      0 0.0.0.0: 80                 0.0.0.0:*                   LISTEN      5736/nginx               (nginx启动 端口为80)
nginx启动成功后,我们在浏览器里面输入  该虚拟机ip

LNMP环境的×××_第1张图片

这样,我们的nginx就安装ok了。
步骤二:安装mysql
首先我们先新建用户mysql及用户所属组mysql
[root@localhost nginx]#groupadd mysql
[root@localhost nginx]#useradd  mysql -s /sbin/nologin -g mysql
下载mysql在/usr/local/src/下并进行解压安装:
[root@localhost nginx]#cd /usr/local/src/
[root@localhost src]#wget http://download.chinaunix.net/down.php?id=34728&ResourceID=7159&site=1 (mysql官网上面的mysql企业版现在都要收费,社区版为rpm包;在www.chinauninx.net上有mysql的tar包,我们选择tar安装。)
[root@localhost src]#ls
mysql-5.0.88.tar.gz           nginx-1.2.6.tar.gz
[root@localhost src]#tar zxvf mysql-5.0.88
[root@localhost src]#cd mysql-5.0.88
[root@localhost mysql-5.0.88]#./configure --prefix=/usr/local/mysql
[root@localhost mysql-5.0.88]#make ;make install
安装若无报错,完成后执行:
[root@localhost mysql-5.0.88]#cd /usr/local/mysql/
[root@localhost mysql]#chown -R mysql:mysql .
[root@localhost mysql]#/usr/local/mysql/bin/mysql_intall_db --user=mysql
执行完成该步骤,会有不少提示,如执行/usr/local/bin/mysqld_safe & 来启动mysql进程,/usr/local/mysql/mysqladmin -uroot password '新密码'等; 但在我们执行/usr/local/mysql/bin/mysql_intall_db --user=mysql后,在/usr/local/mysql下会自动生成一个var目录,该目录的属主及所属组为root,所以我们得首先执行:
[root@localhost mysql]#chown -R mysql:mysql .
[root@localhost mysql]#bin/mysqld_safe &   (注意,如果我们已经用yum安装过mysql,又害怕用yum remove mysql卸载会卸载多余的包,我们需要先确认mysql进程没有启动,并且将/etc/my.conf移除,不然会报错,无法启动mysql。)
查看mysql进程及启动端口是否为3306,来确认mysql是否启动成功:
[root@localhost mysql]#ps -ef |grep mysql |grep -v mysql
root       349  2865  0 13:21 pts/1    00:00:00 /bin/sh bin/mysqld_safe
mysql      367   349  0 13:21 pts/1    00:00:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql --pid-file=/usr/local/mysql/var/localhost.localdomain.pid --skip-external-locking
进程确认已经启动
[root@localhost mysql]# netstat -nutpl |grep mysql
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      367/mysqld          

端口确认为3306,这样,我们的mysql安装成功。



有时候mysql启动不了,报错如下:

LNMP环境的×××_第2张图片

有时候我们安装的mysql不会再安装路径下生成var目录,而会在/var/lib/目录下面生成mysql目录,/var/lib/mysql/  所以当我们启动的时候会报错,提示没有/tmp/mysql/mysql.sock   。此时我们做一个软连接即可:

ln  –s /var/lib/mysql/mysql.sock  /tmp/mysql/mysql.sock



步骤三:安装php并整合mysql及nginx

将php源码包下载在/usr/local/src/下并进行解压安装
[root@localhost mysql]#cd /usr/local/src/
[root@localhost src]#wget http://cn2.php.net/get/php-5.4.11.tar.bz2/from/this/mirror
[root@localhost src]#tar zxvf php-5.4.11.tar.gz
[root@localhost src]#cd php-5.4.11
[root@localhost php-5.4.11]#./configure --prefix=/usr/local/php\
--enable-fpm\ (必须制定这个参数,执行后会生成可执行的fpm ATPI)
--with-mysql=/usr/local/mysql/\

--with-mysqli=/usr/local/mysql/bin/mysql_config\(这俩个关于mysql的参数是为了整合mysql)

--with-gd  (php连接gd库,要确认系统已安装libpng跟libpng-devel包)

执行完成后,在etc目录下午php-fpm.conf配置文件,但有一个php-fpm.conf.default配置文件,我们将其拷贝或者改名成为php-fpm.conf,一般选择拷贝,留default做备份文件;
[root@localhost php-5.4.11]#cp /usr/local/php/etc/php-fpm.conf.default    /usr/local/php/etc/php-fpm.conf
完成后我们可以启动php服务,启动服务用/usr/local/php/sbin/php-fpm 查看进程及端口就不在叙述,接下来我们整合nginx:
nginx整合php其实很简单,在nginx的配置文件nginx.conf里面子带有加载php的内容,如下:
 #location ~ \.php$ {
       #    root           html;
       #    fastcgi_pass   127.0.0.1:9000;
       #    fastcgi_index  index.php;
       #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
       #    include        fastcgi_params;
       #}
我们将该段内容前端的#注释掉,及
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;处指定一下php程序的放置目录即可:
 location ~ \.php$ {
           root           html;
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
           include        fastcgi_params;
       }
然后,我们在我们指定的php程序的放置目录/usr/local/nginx/html/下新建一个简单的php程序;
[root@localhost php-5.4.11]#vim /usr/local/nginx/html/phpinfo.php
phpinfo ();
?>
保存退出后,先检查nginx的配置有无问题,无报错即重新加载nginx:
[root@localhost php-5.4.11]#/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
ok,无报错;
[root@localhost php-5.4.11]#/usr/local/nginx/sbin/nginx -s reload
再次查看nginx进程及端口是否正常,确认防火墙及selinux在停止状态,然后再我们的浏览器里面输入我们linux的ip/phpinfo.php进行访问:

LNMP环境的×××_第3张图片

测试能否连接上 Mysql

编辑/usr/local/nginx/html/index.php,添加如下内容

$link=mysql_connect('localhost','root','');

if ($link)

             echo "Successfuly";

else

             echo "Faile";

mysql_close();

?>

保存退出。

在浏览器中输入   linux主机的ip/index.php,若出现以下内容,则说明我们的php可以连接到mysql上。



ok,我们的LNMP环境的简单搭建告一段落。

如有不足望指正,万分感谢。