天天看点

开源高效之LNMP环境搭建

开源高效之LNMP环境搭建

LNMP是一个缩写,指的是一组一起使用来运行动态网站或者服务器的自由软件:包括Linux操作系统、Nginx网络服务器、MySQL数据库和PHP、Perl或者Python。由于它们的开源廉价,这个组合开始流行,LNMP正在进军主流计算机市场。 

Nginx是一个小巧而高效的Linux下的Web服务器软件,它占用资源少,支持并发连接数多,及相当稳定,尤其作为反向代理服务器性能最佳, Nginx 同时也是一个非常优秀的邮件代理服务器及在CDN网络架构中的分发装置来实现负载均衡,官网http://nginx.org

PHP是一种HTML内嵌式的语言,它是开源、免费的,并且使用非常广泛。PHP 无疑是一种高效率的选择

好了,下面开始LAMP的搭建之旅

1、准备好所需的源码包如下:

nginx-1.0.11.tar.gz

mysql-5.5.15-linux2.6-i686.tar.gz

php-5.3.7.tar.bz2

phpMyAdmin-2.11.10.1-all-languages.zip

你可以分别到他们的官网去下载最新版本如果需要

2、必须查看linux系统的预编译环境命令yum grouplist

Legacy Software Development  传统的软件开发

Development Libraries   开发库

Development Tools   开发工具

X Software Development   X图形界面下的开发或者使用Gnome或是Kde图形界面

以上四个组安装了就会省去安装很多依赖。

如果没安装,用yum groupinstall  "Legacy Software Development" 命令来一一进行安装

3、开始安装nginx(你要将安装的源码包上传到服务器上( ⊙ o ⊙ )!)

       先安装pcre-devel  及建立nginx服务的指定组及用户

       yum -y install pcre-devel 

       groupadd -r nginx

       useradd -r -g nginx -s /bin/false -M nginx

     下面安装nginx-1.0.11.tar.gz

     tar -zxvf nginx-1.0.11.tar.gz -C /usr/local/src   解压缩到/usr/local/src/

      cd /usr/local/src/nginx-1.0.11/   切换到解压缩的目录

      ./configure    \            由于参数比较多加一个'"\" 换行输入参数

      --prefix=/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 \   

    --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    支持正则表达式,很重要

   编译安装

make

make  install

   启动nginx服务器并查看端口

   nginx   启动nginx命令

   netstat -tupln |grep nginx

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

   在客户端测试一下:

<a href="http://blog.51cto.com/attachment/201211/182251213.png" target="_blank"></a>

好了nginx已经开始工作了,为了启动方便,你可以下载一个nginx启动脚本,并添加一下开机启动会更好。

4、安装Mysql 

tar -zxvf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local/mysql/     声明一下:这个包是一个已经编译好的绿色包,只需要配置一下就可以,节省时间。。。。

cd /usr/local/mysql/

groupadd -r mysql    建立mysql组

useradd -r -g mysql -s /sbin/nologin -M mysql  建一个mysql自己的用户

cd /usr/local/mysql/ 切换到mysql目录

chown -R mysql.mysql .   “.”表示当前目录

scripts/mysql_install_db --user=mysql  初始化mysql数据库

chown -R root .         改回以前的root用户              

chown -R mysql data

cp support-files/my-medium.cnf /etc/my.cnf  mysql的内存文件

cp support-files/mysql.server /etc/init.d/mysqld  mysql的启动脚本

service mysqld start  启动mysql

[root@localhwsm mysql]# netstat -tupln |grep mysql  查看端口

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

编辑/etc/profile文件,加入一下内容

PATH=$PATH:/usr/local/mysql/bin/  

执行source  /etc/profile命令 使之立即生效

登录mysql,查看数据库

<a href="http://blog.51cto.com/attachment/201211/182321580.png" target="_blank"></a>

为mysql设置密码,加强安全

mysqladmin -u root -p password "love123" 

指定库路径 

在/etc/ld.so.conf.d/目录下新建一个mysql.conf文件添加mysql的库路径入下一句话:

/usr/local/mysql/lib/

在执行命令ldconfig  重新让系统加载

ldconfig -pv |grep mysql 查看是否加载

<a href="http://blog.51cto.com/attachment/201211/182357647.png" target="_blank"></a>

指定头文件

建立一个软连接即可

ln -s /usr/local/mysql/include/ /usr/include/mysql

设置开机启动

5、安装PHP

先安装 libmcrypt-2.5.8.tar.gz 、mhash-0.9.9.9.tar.gz、 mcrypt-2.6.8.tar.gz这三个依赖

tar -zxvf libmcrypt-2.5.8.tar.gz -C /usr/local/src 

/usr/local/src/libmcrypt-2.5.8

Cd  /usr/local/src/libmcrypt-2.5.8

./configure

Make

Make install

tar -zxvf mhash-0.9.9.9.tar.gz -C /usr/local/src

cd /usr/local/src/mhash-0.9.9.9/

为上面两个建立一个到/usr/lib的软连接解决mcrypt的依赖

ln -s /usr/local/lib/libmcrypt* /usr/lib 

ln -s /usr/local/lib/libmhash.* /usr/lib/

tar -zxvf mcrypt-2.6.8.tar.gz -C /usr/local/src/

Cd  /usr/local/src/mcrypt-2.6.8

 tar -jxvf php-5.3.7.tar.bz2 -C /usr/local/src  解压缩到/usr/local/src/目录下

 cd /usr/local/src/php-5.3.7/   

./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --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 --enable-mbstring

make     //编译

make install   //安装

cp  /usr/local/src/php-5.3.7  php.ini-development  /usr/local/php/php.ini  将php的配置文件拷贝到php的安装目录 

ln -s /usr/local/php/bin/php /usr/bin/

    这里使用nginx调用php的时候使用fpm的方式,我所用的php 5.3.7中以加入了对php-fpm的支持了,不需要额外安装了

[root@localhwsm php]# cp etc/php-fpm.conf.default  etc/php-fpm.conf  在php安装目录下

编辑php-fpm.conf文件如下:

<a href="http://blog.51cto.com/attachment/201211/182622930.png" target="_blank"></a>

mkdir /var/run/php-fpm

/usr/local/php/sbin/php-fpm    启动php-fpm

启动错误解决:

ALERT: [pool www] pm.min_spare_servers(0) must be a positive value

编辑php-fpm.conf找到pm.min_spare_servers 去除;号,注意非注释内容pm.min_spare_servers

ALERT: [pool www] pm.max_spare_servers(0) must be a positive value

编辑php-fpm.conf找到pm.max_spare_servers 去除;号,同样非注释内容pm.max_spare_servers

WARNING: [pool www] pm.start_servers is not set. It's been set to 20.

编辑php-fpm.conf找到pm.start_servers 去除;号,同样非注释内容pm.start_servers

ERROR: bind() for address '127.0.0.1:9000' failed: Address already in use (98)

# netstat -ntlpps -ef|grep php查看进程,有N多进程

nobody 26152 26151 0 15:45 ? 00:00:00 php-fpm: pool www

nobody 26153 26151 0 15:45 ? 00:00:00 php-fpm: pool www

nobody 26154 26151 0 15:45 ? 00:00:00 php-fpm: pool www

nobody 26155 26151 0 15:45 ? 00:00:00 php-fpm: pool www

...........................

#killall php-fpm 结束所有php-fpm进程

再启动php-fpm

#/usr/local/php/sbin/php-fpm

成功   

7、修改nginx.conf配置文件如下:

重启nginx 

pkill  nginx     杀死进程

nginx           启动 也也已直接使用一条命令pkill -1 nginx 

8、测试

echo "&lt;?php phpinfo();  ?&gt;" &gt; /usr/local/nginx/html/index.php  一个小的php代码调用php

<a href="http://blog.51cto.com/attachment/201211/182647645.png" target="_blank"></a>

编辑index.php如下:

<a href="http://blog.51cto.com/attachment/201211/182702135.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201211/182717208.png" target="_blank"></a>

9、安装phpmyadmin

unzip phpMyAdmin-2.11.10.1-all-languages.zip  解压缩

mv phpMyAdmin-2.11.10.1-all-languages /usr/local/nginx/html/phpmyadmin   转移到html目录下并改名phpmyadmin

 cd /usr/local/nginx/html/phpmyadmin/  切换到该目录下

 cp config.sample.inc.php config.inc.php

 vim config.inc.php 如下:

<a href="http://blog.51cto.com/attachment/201211/182727207.png" target="_blank"></a>

在客户端访问

<a href="http://blog.51cto.com/attachment/201211/182751153.png" target="_blank"></a>

输入用户名密码即可,至此基本的LNMP环境已经搭建好了。。。。

本文转自 abc16810 51CTO博客,原文链接:http://blog.51cto.com/abc16810/1059231