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
这样,我们的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启动不了,报错如下:
有时候我们安装的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
<?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进行访问:
测试能否连接上Mysql
编辑/usr/local/nginx/html/index.php,添加如下内容:
<?php
$link=mysql_connect('localhost','root','');
if ($link)
echo "Successfuly";
else
echo "Faile";
mysql_close();
?>
保存退出。
在浏览器中输入 linux主机的ip/index.php,若出现以下内容,则说明我们的php可以连接到mysql上。
ok,我们的LNMP环境的简单搭建告一段落。
如有不足望指正,万分感谢。