天天看点

实践centos6.5编译安装LNMP架构web环境

LNMP 代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。

本次测试需求:

**实践centos6.5编译安装 LNMP生产环境 架构 web生产环境 使用 ngx_pagespeed 优化前端 xcache 优化php 用 google_perftools 优化nginx 和 php内存分配 **

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。 作为负载均衡服务器:Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx 用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。 作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。 Nginx安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

LNMP 这种架构因此也就非常流行,尤其VPS和云主机的出现,更加推动了,LNMP 的架构发展融合,从php5.4开始就已经原生的支持了php-fpm的方式。PHP-FPM是一个PHP FastCGI管理器,不再是第三方的包了, PHP-FPM 提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点。

准备工作:

最小化安装centos6.5

建立一个软件包目录存放

清理已经安装包

selinux可能会致使编译安装失败,我们先禁用它。永久禁用,需要重启生效

临时禁用,不需要重启 <code>setenforce 0</code>

安装必备工具

按照标准需要给mysql创建所属用户和用户组

centos最小化安装后,会有mysql的库因此先卸载!

MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。 因此,我们首先要在系统中源码编译安装cmake工具。

使用cmake来编译安装mysql5.6.17

修改/usr/local/mysql权限

关于my.cnf配置文件:

在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索”$basedir/my.cnf” 就是安装目录下 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置! 注意:在CentOS 6.x版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字。 如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。 由于我们已经卸载了最小安装完成后的mysq库所以,就没必要操作了。

进入support-files目录

执行初始化配置脚本,创建系统自带的数据库和表,注意配置文件的路径

拷贝mysql安装目录下support-files服务脚本到init.d目录

设置开机启动

MySQL5.6.x启动成功后,root默认没有密码,我们需要设置root密码。 设置之前,我们需要先设置PATH,要不,不能直接调用mysql

让配置立即生效

登陆测试,默认是没有密码,直接回车就可进入

设置mysql密码

登陆进命令行模式

查看用户

删除不必要的用户

赋予账号远程访问的权限

关于删除MySQL的默认root用户参考:http://blog.chinaunix.net/uid-16844903-id-3377690.html

其它一些信息查询: 检查mysql版本

验证mysql安装路径

安装PHP5.5.12

安装依赖关系

libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换。 错误提示:configure: error: Please reinstall the iconv library.

libmcrypt是加密算法扩展库。 错误提示:configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.

Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启。 mhash的可以用于创建校验数值,消息摘要,消息认证码,以及无需原文的关键信息保存 错误提示:configure: error: “You need at least libmhash 0.8.15 to compile this program. http://mhash.sf.net/”

mcrypt 是 php 里面重要的加密支持扩展库,Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。

编译mcrypt可能会报错:configure: error: *** libmcrypt was not found

编译mcrypt可能会报错:/bin/rm: cannot remove `libtoolT': No such file or directory

正式开始编译php!

修改fpm配置php-fpm.conf.default文件名称

复制php.ini配置文件

复制php-fpm启动脚本到init.d

赋予执行权限

添加为启动项

按照标准,给php-fpm创建一个指定的用户和组

立即启动php-fpm

回到/usr/local/src/目录

nginx所需的依赖关系,一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩。如果系统已经yum 安装了这些库也没关系,无需卸载。直接编译安装最新的就可以了。为了一次性完成编译,先准备编译下面的依赖关系!

1.安装PCRE库

2.安装zlib库

3.安装ssl

4.安装ngx_pagespeed库 ngx_pagespeed 是一个 Nginx 的扩展模块,可以加速你的网站,减少页面加载时间,它会自动将一些提升web性能的实践应用到网页和相关的资源(CSS、JS和图片)上,无需你修改内容和流程。

按照Google的说法,ngx_pagespeed模块已经被一些客户用于生产环境之中了,包括CDN提供商MaxCDN,按照它的报告该模块使得“页 面平均加载时间降低了1.57秒、跳出率降低了1%并且退出百分比下降了2.5%”。WordPress主机服务商ZippyKid说,在使用NGINX 的PageSpeed之后,“页面大小降低了75%并且页面的渲染时间提高了50%”。

5、使用google-perftools提供的TCMalloc工具优化nginx和mysql

TCMalloc (google-perftools) 是用于优化C++写的多线程应用,比glibc 2.3的malloc快。这个模块可以用来让MySQL在高并发下内存占用更加稳定.

TCMalloc是google-perftools的其中一个工具,用于优化内存分配的效率和速度,帮助在高并发的情况下很好的控制内存的使用。

在mysql 和nginx 性能优化方案中,大多数教程都是使用google-perftools提供的TCMalloc工具,TCMalloc在内存的分配上效率和速度要比malloc高得多。

错误提示:configure: error: No frame pointers and no libunwind. The compilation will fail 是因为你没安装libunwind库就开始编译gperftools了,因此必须先libunwind

按照官方的说明,必然选择最新版本。

准备工作完成,现在开始安装nginx!,这里添加了前面准备的库关系,注意路径!

6、修改nginx.conf 配置文件

在server块里面 开启 ngx_pagespeed 模块

开启 google_perftools 调优支持

验证tcmalloc运行状态,这是仅开启了一个worker_processes的效果

使用TCMalloc (google-perftools) 可以用来让MySQL在高并发下内存占用更加稳定。

使用xcache优化php性能。

安装phpmyadmin

nginx 重启,启动,载入脚本

注意需要赋予执行的权限:chmod +x /etc/init.d/nginx

经过优化的nginx.cnf配置文件

根据需要为虚拟主机增加了ngx_pagespeed google_perftools

php-fpm优化,注意一个fpm进程大约20M,我这个机器是小内存的云主机,因此开启2个就可以。大内存的话,根据情况换算。

     本文转自yzy121403725 51CTO博客,原文链接:http://blog.51cto.com/lookingdream/1772754,如需转载请自行联系原作者