设为首页 收藏本站
查看: 2570|回复: 6

[经验分享] 实用LNMP架构详细实现和PHP性能优化

[复制链接]

尚未签到

发表于 2013-4-25 08:48:29 | 显示全部楼层 |阅读模式

小编在前面说过要实现LNMP(Linux+Nginx+Mysql+Php)了吧,在这篇博文中小编就来将将如何来实现LNMP,因为Nginx的强大,现在越来越多的企业热衷于LNMP的架构,所以小编就来简单的实现一下此种架构,并且做一些简单的PHP优化,软件的安装顺序就按照英文首字母就是了

准备工作,软件需求:
小编的Linux是企业版5.4
mysql-advanced-5.6.10-linux-glibc2.5-i686.tar.gz //这个是个绿色版的,能省去源码安装不少的时间
nginx-1.3.16.tar.gz
php-5.4.14.tar.bz2
xcache-3.0.1.tar.bz2

Project 1:Nginx的安装

Step 1:安装pcre-devel,以及建立nginx用户
# yum install pcre-devel
# groupadd -r nginx
# useradd -r -g nginx -M nginx
Step 2:解压缩nginx的源码并安装
# tar -zxvf nginx-1.3.16.tar.gz -C /usr/local/src/
# cd /usr/local/src/nginx-1.3.16/
# ./configure \
--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
# mkdir -p /var/tmp/nginx/client
Step 3:编写ngnix服务的控制脚本
每次启动ngnix都很麻烦,小编自己写个脚本就是啦,附上啦
# vim nginxd
#!/bin/bash
# chkconfig: 35 80 30
# description: Apache server
NGINXD='/usr/local/nginx/sbin/nginx'
LOCKFILE='/var/lock/nginx.lock'
. /etc/init.d/functions
function start(){
[ -e $LOCKFILE ] && echo "nginxd is running ......." && exit
echo -n "nginxd is starting ......"
sleep 1
`$NGINXD`
[ $? -eq 0 ]&& touch $LOCKFILE && echo -e "\033[31m [ok] \033[0m" ||echo -e "\033[31m [fail] \033[0m"
}
function stop(){
echo -n "nginxd is stoping......"
sleep 1
killproc $NGINXD &>/dev/null
[ $? -eq 0 ] && rm -rf $LOCKFILE && echo -e "\033[31m [ok] \033[0m" ||echo -e "\033[31m [fail] \033[0m"
}
function status(){
[ -e $LOCKFILE ]&& echo "nginxd is running ......" || echo "nginxd is stoped"
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "nginxd Usage: {start|stop|restart}"
;;
esac
Step 4:将nginxd加入到服务控制文件夹,并启动,客户机测试
# chmod a+x nginxd
# cp -a nginxd /etc/init.d/
# chkconfig --add nginxd
# chkconfig --level 35 nginxd on
# service nginxd start
# netstat -tupln |grep 80
对于脚本的综合测试如下图所示
5200614_1366802721VAaD.jpg
5200614_1366802727b4oO.jpg

Project 2:Mysql的安装

     因为之前的Mysql源码编译安装消耗时间太长了,小编实在受不了啊,后来小编在Mysql官网下载了一个免编译的200多兆啊(类似于windows下的绿色安装包啦),但是时间确实省了不少啦

Step 1:解压缩Mysql软件包
# tar -zxvf mysql-advanced-5.6.10-linux-glibc2.5-i686.tar.gz -C /usr/local/
Step2 :安装Mysql啦
# groupadd mysql
# useradd -r -g mysql mysql
# cd /usr/local
# tar zxvf /path/to/mysql-VERSION-OS.tar.gz
# ln -s mysql-advanced-5.6.10-linux-glibc2.5-i686/ mysql
# cd mysql
# chown -R mysql .
# chgrp -R mysql .
# scripts/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql data
# cp support-files/my-default.cnf /etc/my.cnf
# bin/mysqld_safe --user=mysql &
5200614_1366802728qBrK.jpg
# cp support-files/mysql.server /etc/init.d/mysqld
Step 3:启动mysqld服务试试
# service mysqld start
5200614_1366802729IcNL.jpg
Step 4:后续处理
  • 在链接库里加入Mysql的链接库
# vim /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib/
保存退出
# ldconfig –v //重新加载
查询一下结果
5200614_13668027310DTU.jpg
  • 将Mysql头文件加入系统
# ln -s /usr/local/mysql/include/ /usr/include/mysql
  • 加入mysql的环境变量进系统
# vim /etc/bashrc //在文件最后加入下面的内容
export PATH=/usr/local/mysql/bin:$PATH
# . /etc/bashrc
查看环境变量
# echo $PATH
5200614_1366802731cLpi.jpg
  • 使用mysql
# mysql
5200614_1366802733iPv7.jpg
mysql> grant all on mysql.* to 'root'@'localhost' identified by '123456';
mysql> flush privileges;
好啦,mysql的安装就算完成了

Project 3:php的安装

     这里小编要提醒的是,为了能让php和nginx结合起来,就要让php在编译过程中支持fastcgi,那fastcgi是个啥呢,小编也许解释不是很清楚,这里就将度娘的解释拉过来啦

FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。

原理

1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)
2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。
3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。

Step 1:解压源码包,并切换到源码目录
# tar -jxvf php-5.4.14.tar.bz2 -C /usr/local/src/
# cd /usr/local/src/php-5.4.14/
Step 2:编译并安装
./configure \
--prefix=/usr/local/php \
--enable-fpm \
--enable-sockets \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-mbstring \
--enable-xml \
--with-png-dir \
--with-jpeg-dir \
--with-zlib \
--with-config-file-path=/etc/php \
--with-config-file-scan-dir=/etc/php5.d \
--with-freetype-dir \
# make && make install
Step 3:创建php.ini文件
# mkdir /etc/php
# mkdir /etc/php5.d
# cp php.ini-production /etc/php/php.ini
Step 4:创建php-fpm的控制脚本
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
改变权限
# chmod a+x /etc/init.d/php-fpm
创建配置文件
# cd /usr/local/php/etc/
# cp php-fpm.conf.default php-fpm.conf
Step 5:启动php-fpm
5200614_13668027345Itw.jpg
好了,php的安装就算完成了

Project 4:nginx与php的结合

Step 1:编辑nginx的配置文件
5200614_1366802739YYkV.jpg
Step 2:编辑测试页面
# vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
Step 3:重新启动nginx和php-fpm服务
# service nginxd restart
# service php-fpm restart
Step 4:客户机测试啦,浏览器输入http://192.168.111.10
5200614_1366802746iw0F.jpg
Step 5:测试php和mysql的链接
小编这里编写了一个很小的测试页面来测试啦
# vim /usr/local/nginx/html/index.php
<?php
$err=mysql_connect("localhost","root","123456")
or die("Could not connect:".mysql_error());
print("Connected successfully");
mysql_close($err);
?>
再一次在客户机浏览器输入http://192.168.111.10试试
5200614_1366802748Arst.jpg
如果将mysqld服务停止再试试看
# service mysqld stop
5200614_1366802752PsVF.jpg
做到这里,基本的LNMP架构已经算是完成了,接下来小编要使用xcache对php的速度进行优化啦

Project 5:php加速

Step 1:安装xcache
# tar -jxvf xcache-3.0.1.tar.bz2 -C /usr/local/src/
# cd /usr/local/src/xcache-3.0.1/
到这里读者会发现居然没有configure文件啦,别急这个文件是 手工生成的
# /usr/local/php/bin/phpize –clean
# /usr/local/php/bin/phpize
5200614_13668027533FdA.jpg
# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
# make
# make test
# make install
5200614_1366802754kQoy.jpg
将模块加入php的配置文件
# cp xcache.ini /etc/php5.d
# vim /etc/php5.d/xcache.ini
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so
重新启动nginxd和php-fpm服务
# service nginxd restart
# service php-fpm restart
在客户端浏览器输入http://192.168.111.10试试
5200614_1366802761TtdC.jpg
Step 2:实现web管理xcache
#cp -r htdocs/ /usr/local/nginx/html/admin
# chmod a+rx /usr/local/nginx/html/admin/
# chmod a+rx /usr/local/nginx/html/admin/index.php
# cd /usr/local/nginx/html/admin
# cp config.example.php config.php
在这个目录下,读者可以看到index.php的页面,这就是管理xcache的web接口啦,当然要直接访问的话是需要用户名和密码的,所以小编这里就来修改xcache.ini的配置文件,加入用户名和密码(用md5加密的)
5200614_1366802767DCfy.jpg
Step 3:客户机浏览器访问http://192.168.111.10/admin试试
5200614_1366802771abqV.jpg
5200614_1366802777sspB.jpg

看到了吧,很漂亮啦,读者可机监督xcache的使用状态好啦。

所有的项目都实现啦,希望对读者你有帮助啊



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-5475-1-1.html 上篇帖子: LNMP环境的搭建 下篇帖子: nginx 1.4.0 SRPM 优化

尚未签到

发表于 2013-4-25 08:51:35 | 显示全部楼层
下雨了,别忘了打伞,湿身是小,淋病就麻烦啦*^_^*

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-18 01:25:47 | 显示全部楼层
打破老婆终身制,实行小姨股份制。引入小姐竞争制,推广情人合同制。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-20 13:17:29 | 显示全部楼层
爱她,就请为她做无痛人流手术!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-23 03:07:30 | 显示全部楼层
要是我灌水,就骂我“三个代表”没学好吧。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-28 01:57:01 | 显示全部楼层
沙发!沙发!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-6-1 07:14:02 | 显示全部楼层
生,容易。活,容易。生活,不容易。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表