LEMP架构及应用部署——Nginx延伸推荐

与构建LAMP平台类似,构建LEMP平台也需要LINUX服务器、MYSQL数据库、PHP解析环境,区别主要在于Nginx与PHP的协作配置上:

1)以编译方式安装Nginx:

2)安装MYSQL数据库——以编译方式安装(实验环境前提条件:http://wenzhongxiang.blog.51cto.com/6370734/1251063):

释放MYSQL的源码包:

[root@nginx~]#tarzxvfmysql-5.1.55.tar.gz

编译前配置:

[root@nginxmysql-5.1.55]#./configure–prefix=/usr/local/mysql–with-charset=utf8–with-collation=utf8_general_ci–with-extra-charsets=gbk,gb2312

注解:

–with-charset:指定默认使用的字符集编码;

–with-collation:指定默认使用的字符集校对规则,utf8_general_ci是适用于UTF-8字符集的通用规则;

–with-extra-charsets:指定额外支持的其他字符集编码。

编译并安装MYSQL:

[root@nginxmysql-5.1.55]#make makeinstall

优化调整:

[root@nginxmysql-5.1.55]#cp-fsupport-files/my-medium.cnf/etc/my.cnf

cp:是否覆盖 /etc/my.cnf ?y

[root@nginxmysql-5.1.55]#cpsupport-files/mysql.server/etc/init.d/mysqld

[root@nginxmysql-5.1.55]#chmoda+x/etc/init.d/mysqld

[root@nginxmysql-5.1.55]#chkconfig–addmysqld

[root@nginxmysql-5.1.55]#ln-s/usr/local/mysql/bin/*/usr/local/bin/

[root@nginxmysql-5.1.55]#ln-s/usr/local/mysql/lib/mysql/*/usr/lib/

[root@nginxmysql-5.1.55]#ln-s/usr/local/mysql/include/mysql/*/usr/include/

初始化数据库:

[root@nginxmysql-5.1.55]#useradd-M-s/sbin/nologinmysql

[root@nginxmysql-5.1.55]#cd/usr/local/mysql/bin/

[root@nginxbin]#./mysql_install_db–user=mysql

[root@nginxbin]#chown-Rroot:mysql/usr/local/mysql/

[root@nginxbin]#chown-Rmysql/usr/local/mysql/var/

启动MYSQL服务并为root用户设置密码:

[root@nginxbin]#servicemysqldstart

[root@nginxbin]#mysqladmin-urootpassword 123456

3)安装PHP解析环境:

较新版本(如5.3)的PHP已经自带FPM(fastCGIprocessmanager,FastCGI进程管理器)模块,用来对PHP解析实例进行管理,优化解析效率,因此在配置PHP编译选项时应添加”–enable-fpm”以启用此模块。

为了提高PHP解析效率,建议将相应版本的ZendGuardLander也装上

释放PHP源码包:

[root@nginx~]#tarzxvfphp-5.3.6.tar.gz

编译前配置:

[root@nginxphp-5.3.6]#./configure–prefix=/usr/local/php5–with-gd–with-zlib–with-mysql=/usr/local/mysql–with-config-file-path=/usr/local/php5–enable-mbstring–enable-fpm

编译并安装PHP:

安装后的调整:

[root@nginxphp-5.3.6]#cpphp.ini-development/usr/local/php5/php.ini

[root@nginxphp-5.3.6]#ln-s/usr/local/php5/bin/*/usr/local/bin/

[root@nginxphp-5.3.6]#ln-s/usr/local/php5/sbin/*/usr/local/sbin/

安装ZendGuardLander(下载地址:http://www.zend.com/en/products/guard/downloads):

[root@nginx~]#tarzxfZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz

[root@nginx~]#cdZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x/

[root@nginxphp-5.3.x]#cpZendGuardLoader.so/usr/local/php5/lib/php/

修改php.ini文件:

[root@nginxphp-5.3.x]#vim/usr/local/php5/php.ini

在php.ini中添加如下配置:

zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so

zend_loader.enable=1

配置Nginx支持PHP环境:

若要让Nginx能够解析PHP网页,有两种方法可以选择;

其一:充当中介,将访问PHP页面的WEB请求转交给其他服务器(LAMP)去处理;

其二,通过使用PHP的FPM模块来调用本机的PHP环境

如果选用FPM方式,则需要先启动php-fpm进程,以便监听PHP解析请求。

参考范例建立php-fpm.conf配置文件,并修改其中的PID文件、运行用户、服务数(进程数量)等相关设置,然后启动php-fpm程序即可(默认监听本机的9000端口)

[root@nginxphp-5.3.x]#cd/usr/local/php5/etc/

[root@nginxetc]#cpphp-fpm.conf.defaultphp-fpm.conf

[root@nginxetc]#vimphp-fpm.conf

修改内容如下:

pid=run/php-fpm.pid

user=nginx

group=nginx

pm.max_children=50

pm.start_servers=20

pm.min_spare_servers=5

按以上提示修改php-fpm.conf文件,改完后保存退出。

启动php-fpm并查看地址监听。

[root@nginx~]#/usr/local/sbin/php-fpm

[root@nginx~]#netstat-anpl|grepphp-fpm

在php-fpm.conf文件中,pid配置行指出了PID信息的存放位置,对应的实际路径为/usr/local/php5/var/run/php-fpm.pid,根据上述信息,可以修改Nginx服务脚本,以便在启动/停止Nginx服务器时将php-fpm进程也自动启动/停止。

在nginx服务脚本相应位置中添加如下内容:

PROG_FPM= /usr/local/sbin/php-fpm

PIDF_FPM= /usr/local/php5/var/run/php-fpm.pid

这样一为,一旦启动或关闭nginx服务,php-fpm程序也会随之启动或关闭,不需要额外再启动或关闭php-fpm.。

4)配置Nginx支持PHP解析:

无论是将PHP页面交给LAMP服务器去解析,还是调用本机的php-fpm进程进行解析,都需要在”server{}”配置段中添加location设置,以便指定当访问.php面页时采取何种操作。

对于第一种方法(转交给其他WEB服务器处理),使用的配置语句如下所示,例如,交给IP地址为192.168.10.1的LAMP服务器处理,从而实现由Nginx负责静态页面,LAMP负责动态页面的分离效果。

server{

……//省略部分信息

location~\.php${//访问.php页面的配置段

proxy_passhttp://192.168.10.1:80;//APACHE服务器的监听地址

}

上面这种写法只是发送以.php为后缀的页面访问请求给其他WEB服务器,如果有其格式的文件访问(如:html、jpg等)就会出问题。访问不了了。

或者

location/{//访问.php页面的配置段

proxy_passhttp://192.168.10.1:80;//APACHE服务器的监听地址

}

}

对于第二种方法(调用本机的php-fpm进程),使用的配置语句如下所示。在conf/目录下的fastcgi.conf文件中已经包含必需的宏设置,可通过include语句添加进来。

server{

……//省略部分信息

location~\.php${//访问php页面的配置段

root/var/www/AAA;//PHP网页文档根目录

fastcgi_pass 127.0.0.1:9000;//php-fpm的监听地址

fastcgi_index index.php;//PHP首页文件

include fastcgi.conf;//包括fastcgi.conf样本配置

}

}

下边用第二种方法,完成修改后重新加载nginx服务即可生效。

location~\.php${

root/var/www/BBB;

fastcgi_pass127.0.0.1:9000;

fastcgi_index index.php;

includefastcgi.conf;

}

PHP页面访问测试:

在PHP文档根目录下创建一个测试网页,以便测试PHP语名能否正常解析,以及能否访问MYSQL数据库。测试页内容如下:

?php

$link=mysql_connect( localhost , root , 123456

if($link)echo 恭喜你,数据库连接成功!!!

mysql_close();

?

然后访测试:http://www.AAA.com/test.php若能看到成功提示信息表示一切正常。

5)在LEMP平台中部署WEB应用:

LEMP平台与LAMP平台是非常相似的,区别主要在于所用WEB服务软件的不同,而这与使用PHP开发的WEB应用程序并无太大关系,因此PHP应用的部署方法也是类似的,

下面以“天空网络电影系统(简称SKYUC)”为例介绍在LEMP平台中的部署过程。并架设Discuz论坛做验证:

释放并部署程序代码:

[root@nginx~]#tarjxfSKYUC_3.2.2_Free_For_PHP5.3.tar.bz2

[root@nginx~]#mvSKYUC_3.2.2_Free_For_PHP5.3/wwwroot//var/www/benet/skyuc

[root@nginx~]#cd/var/www/benet/skyuc/

[root@nginxskyuc]#chown-Rnginx:nginxadmincp/data/templates/upload/

创建数据库并授权用户runskyuc:

安装WEB应用:

访问http://www.AAA.com/skyuc/install/index.php,将会打开SKYUC的安装程序,根据页面提示,只需三步即可完成安装:

注意适当调整权限:

[root@nginxskyuc]#chmod-R777admincp/data/templates/upload/

继续访问WEB应用系统:

完成安装后,注意将install/目录转移,以避免重复安装,降低安全风险。

[root@nginxskyuc]#mvinstallinstall.lock

[root@nginxskyuc]#chmod600install.lock/

这是数据库后台:

此时访问前台天空网络主页正常显示。

架设Discuz论坛:

建立用于bbs论坛的数据库及用户:

解压下载的软件包,上传程序文件:

在浏览器中访问http://www.AAA.com/bbs/install根据向导页面的提示进行安装:

根据报错原因将php.ini中的short_open_tag设置为On,然后重启WEB服务,否则程序无法正常运行,修改后要重启nginx服务。

再次通过访问http://www.AAA.com/bbs就可以访问了:

有时检测运行环境也会报错,如下:

解决方案如下(生产环境下根据实际做相应的修改):

继续安装

登录主页面:

实验环境依托于:http://wenzhongxiang.blog.51cto.com/6370734/1251063

整个环境到此搭建成功,并通过两种不同的方式进行了相应的验证。

敢于奋斗的人,心中不怕困难。

LEMP架构及应用部署——Nginx延伸推荐

相关文章:

你感兴趣的文章:

标签云: