您的位置:首页 > 运维架构 > 网站架构

LAMP环境搭建实现网站动静分离[转]

2017-03-23 10:39 423 查看
目录:

1、环境概述

2、动静分离拓扑图

3、各服务器功能规划

4、各服务器基础环境配置

5、httpd安装配置

6、php安装配置及启用opcache加速功能

7、mysql安装配置

8、wordpress论坛程序安装测试

9、CA证书服务器及ssl配置

10、phpmyadmin安装测试

11、php的opcache加速功能测试

12、总结

1、环境概述:

前几篇博客已把httpd、mysql及php以模块的方式与http进行了整合,这些服务都在一台Linux主机上部署,这种简单的架构在网站初期还能胜任,但随着网站访问量的增大,业务逻辑越来越复杂,这种架构已不能满足现实的需求,现急需优化架构。我们需要一个可扩展的网站架构,所以这次来一个大手术,httpd、mysql、以及以FastCGI方式工作的php服务各自部署在单独的服务器,三个服务各施其职,独占自己的硬件资源,这种架构随着业务量增加后扩展方便,而这种架构还实现了网站的动静分离。

所有软件包这里获取:LAMP环境所涉及软件包获取地址

2、动静分离拓扑图:





3、各服务器功能规划:

主机名IP地址安装服务说明
http

192.168.0.200

httpd、NFS服务端通过nfs把php服务器的网站程序挂载到本地,避免上传网站程序时在http和php服务器都要上传
php192.168.0.201

php、NFS客户端、phpmyadmin、论坛程序php以php-fpm方式工作,通过nfs服务把网站程序共享
mysql192.168.0.202mysql、配置成CA服务器数据目录存放在LVM卷上,兼任CA证书服务,为实现安全的访问phpmyadmin
4、各服务器基础环境配置:

4.1、http服务器基础配置:

4.2、php服务器基础配置:

4.3、mysql服务器基础配置:

4.4、配置各服务器间免密码登陆:

4.4.1、配置http无密码访问php和mysql主机:

说明:在“[root@http ~]# ssh-copy-id root@php”时,若不是指定php主机的主机名,而是指定ip地址,就像这样“[root@http ~]# ssh-copy-id root@192.168.0.201”那http登陆php时只能用指定ip的地址进行无密码登陆,如果是这样“[root@http ~]# ssh root@php”是不能无密码登陆的,通过观察“/root/.ssh/know_hosts”文件就可知道其中的道理。

4.4.2、配置php无密码访问http和mysql主机:

4.4.3、配置mysql无密码访问http和php主机:

4.5、基于NFS准备网站目录结构:

5、httpd安装配置:

5.1、软件包版本信息:

5.2、处理httpd的依赖关系:

说明:在编译apr-1.5.1前请看这里“安装apr报错rm: cannot remove `libtoolT': No such file or directory

5.3、httpd编译安装配置及配置:

5.3.1、编译、配置、安装http:

5.3.2、源码编译安装后的收尾工作:

导出二进制文件:

导出头文件:

导出man文档:

配置http开机自动启动(可参照前边的博客为http提供sysv风格的脚本):

5.3.3、配置http、增加对php支持、启用虚拟主机:

配置虚拟主机:

测试两个虚拟主机:

最后配置windows主机的hosts文件,增加http服务器的两个域名解析,用浏览器进行测试两个域名是否能正常工作。

6、php安装配置及启用opcache加速功能:

6.1、软件版本信息:

6.2、处理php的依赖关系:

6.3、php编译安装及相应配置:

6.3.1、编译安装php:

6.3.2、提供php.ini、php-fpm.conf、启动脚本文件及一些收尾工作:

6.3.3、启用opcache,加速php代码:

6.4、配置http虚拟主机成为fastcgi的客户端,实现用户请求php文件时能转交给php服务器:

6.4.1、启用两个模块,使用http成为fastcgi客户:

6.4.2、修改虚拟主机配置文件:

6.4.3、测试http与fastcgi整合是否工作正常:









7、mysql安装配置:

7.1、基于LVM(逻辑卷管理器)准备分区,mysql的数据目录放在此设备上:

7.2、mysql二进制包安装及相应库的准备工作:

7.2.1、mysql安装配置:

7.2.2、创建论坛程序wordpress所使用数据库:

8、wordpress论坛程序安装测试

在windows主机上用IE浏览器直接访问“http://bbs.linux.com”就可打开wordpress的安装界面,













经测试,workpress运行正常。

9、CA证书服务器及ssl配置

9.1、在mysql服务器中生成密钥文件:

9.2、生成自签证书:

CA建立完成,接下来要为phpmyadmin.com这个虚拟主机提交证书申请,并为其配置成https。

9.3、回到http服务器为phpmyadmin.com虚拟主机生成私钥,生成证书签署请求,并把证书请求发给CA,:

9.4、回到CA服务器签署http发送过来的证书签署请求,处理后得到一证书文件,把它回传给http服务器:

9.5、回到http服务器,配置虚拟主机对ssl的支持:

9.6、下载CA服务器需要对外公开的证书文件(cacert.pem),导入系统后进行测试。在windows系统下需要把cacert.pem证书文件重新命令为以“crt”为后缀的文件,即改名后为“cacert.crt”,导入证书后就可以访问“https://phpmyadmin.com”进行测试。

















上图是之前建的测试文件,现在用https来访问也是正常的。

10、phpmyadmin安装测试

现在只能用wpammin用户测试,因为root用户默认拒绝远程登陆:









回到mysql服务去设置让root用户也可以远程登陆:

用root用户来登陆phpmyadmin测试:





11、php的opcache加速功能测试:

先关闭php的opcache功能:

在mysql服务器上用ab命令进行测试:

12、总结:

这次环境搭建比较顺利,当出现错误时都能通过程序所给出的错误提示和日志文件快速的定位到故障处在,但还是有一些地址值得注意或优化:

1、在类linux环境下对编译安装的软件包约定俗成是安装在“/usr/local/”下,这里的usr是“uinx software resource”这个目录在系统安装好后本身就会有许多文件存在,如果把我们自定义编译安装的软件都放在这个目录中,对软件的管理上还是有一些不便,这个目录有点像windows下的“Program Files”这个目录。所以建议在安装系统之初,在进行分区时可单独划出一个分区专门成为编译软件的安装目录;

2、httpd的虚拟主机的日志文件应该集中在一个地方进行集中存储管理,这次环境搭建是分散的放在各个虚拟主机主目录下,这样也不便于日志的管理;

3、因http主机上的“/web/vhosts”目录是从php主机通过nfs发布后挂载过来的,所以简化了两次上传网站程序的动作,但也在管理上带了一定的影响,当要重新启动http、php主机时要注意开关机的顺序,开机时先开php主机,再开http主机,关机时先关http主机,后关php主机。

4、这样一个LAMP环境中涉及到了“http.conf、http-ssl.conf、http-vhost.conf、my.cnf、php.ini、my-fpm.conf”等配置文件,这些配置中各个参数的具体意义得好好总结;

5、最后就是mysql这个软件,已被oracle收购,在下载mysql5.6版本包时粗略看了一下许可协议,好像不像原生的mysql了,如果是公司线上产品,用其他数据库来替代吧,mariadb是一个不错的选择(没看过它的许可)。

本文出自 “专注Linx,与Linux共舞” 博客,请务必保留此出处http://zhaochj.blog.51cto.com/368705/1609777
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: