1.前端需支持更大的访问量,单台web服务器已无法满足需求了,则需扩容Web服务器;
2.虽然动态内容可交由后端的PHP服务器执行,但静态页面还需要Web服务器自己解析,那是否意味着多台Web服务器都需要在各自的系统中都存有一份静态页面数据呢?那么如果能将静态页面集中存放,所有Web服务器都来集中地取文件,对于文件的一致性就有了保障,这个集中地就叫做“文件共享服务器”;
1.web1充当http服务器和DNS解析服务器,客户端到web1和web2的请求,如果是静态资源请求通过php主机的NFS服务挂载的存储返回结果
2.web1和web2对于客户端动态资源请求都反向代理到后端php服务器进行执行后返回结果
3.web1和web2实现DNS轮询,客户端访问博客网站是负载均衡的。
4.建立wordpress博客
5.数据库存储wordpress博客的各种数据
1.部署LAMP环境、配置NFS服务器
2.web1、web2、php服务器全部挂载NFS共享目录为网站根目录
3.配置httpd实现动静分离
4.配置DNS实现负载均衡
- # 安装依赖包
- yum groupinstall "development tools"
- yum install openssl-devel expat-devel pcre-devel
- #
- # 解压文件
- tar xvf apr-1.6.2.tar.gz
- tar xvf apr-util-1.6.0.tar.gz
- tar xvf httpd-2.4.27.tar.bz2
- cp -r apr-1.6.2 httpd-2.4.27/srclib/apr
- cp -r apr-util-1.6.0 httpd-2.4.27/srclib/apr-util
- #
- # 编译安装
- cd httpd-2.4.27/
- ./configure \
- --prefix=/app/httpd24 \
- --sysconfdir=/etc/httpd24 \
- --enable-so --enable-ssl \
- --enable-rewrite --with-zlib \
- --with-pcre --with-included-apr \
- --enable-modules=most \
- --enable-mpms-shared=all \
- --with-mpm=prefork
- #
- make && make install
- #
- #配置环境变量
- vim /etc/profile.d/lamp.sh
- PATH=/app/httpd24/bin/:$PATH
- . /etc/profile.d/lamp.sh
- #
- # 启动服务
- apachectl start
- # 解压文件
- tar xvf mariadb-10.2.8-linux-x86_64.tar.gz -C /usr/local/
- cd /usr/local
- #
- # 创建软连接,mariadb在/usr/local下必须名为mysql,可以创建软连接,可以改名
- ln -s mariadb-10.2.8-linux-x86_64/ mysql
- #
- # 创建用户
- useradd -r -m -d /app/mysqldb -s /sbin/nologin mysql
- cd mysql/
- #
- # 初始化数据库
- scripts/mysql_install_db --datadir=/app/mysqldb --user=mysql
- #
- # 创建配置文件
- mkdir /etc/mysql
- cp support-files/my-large.cnf /etc/mysql/my.cnf
- #
- # 修改配置文件,指定数据库存放路径
- vim /etc/mysql/my.cnf
- [mysqld]
- datadir = /app/mysqldb 在mysqld下添加这三行
- innodb_file_per_table = ON
- skip_name_resolve = ON
- #
- # 复制启动脚本,添加开机自动启动
- cp support-files/mysql.server /etc/init.d/mysqld
- chkconfig --add mysqld
- chkconfig --list
- service mysqld start
- #
- # 创建日志目录
- mkdir /var/log/mariadb
- chown mysql /var/log/mariadb/
- #
- #添加环境变量
- vim /etc/profile.d/lamp.sh
- PATH=/app/httpd24/bin/:/usr/local/mysql/bin/:$PATH
- . /etc/profile.d/lamp.sh
- #
- #调用安全加固脚本,加固数据库。汉字为每一项的翻译
- mysql_secure_installation
- 是否设置root密码
- 输入密码
- 确认密码
- 是否设置匿名用户
- 是否允许root远程登录
- 删除test数据库
- 现在是否生效
- # 安装依赖包
- yum install libxml2-devel bzip2-devel libmcrypt-devel gcc openssl-devel
- tar xvf php-7.1.7.tar.bz2
- #
- #编译安装
- cd php-7.1.7.tar.bz2
- ./configure \
- --prefix=/app/php \
- --enable-mysqlnd \ #mysqlnd 指明Mysql不再本地
- --with-mysqli=mysqlnd \
- --with-pdo-mysql=mysqlnd \
- --with-openssl \
- --enable-mbstring \
- --with-freetype-dir \
- --with-jpeg-dir \
- --with-png-dir \
- --with-zlib \
- --with-libxml-dir=/usr \
- --enable-xml \
- --enable-sockets \
- --enable-fpm \ #用FPM模式
- --with-mcrypt \
- --with-config-file-path=/etc/php \
- --with-config-file-scan-dir=/etc/php.d \
- --with-bz2
- #
- # 创建PHP配置文件
- mkdir /etc/php/
- cp php.ini-production /etc/php/php.ini
- #
- # 复制服务脚本,添加开机自动启动
- cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
- chmod +x /etc/init.d/php-fpm
- chkconfig --add php-fpm
- chkconfig --list php-fpm
- #
- # 创建fpm的配置文件
- cd /app/php/etc
- cp php-fpm.conf.default php-fpm.conf
- cd /app/php/etc/php-fpm.d/
- cp www.conf.default www.conf
- vim www.conf
- listen = 172.18.68.23:9000 #设置监听的IP,注释监听所有, 只写端口监听鄋
- ;listen.allowed_clients = 127.0.0.1. #把这项注释掉,分号为注释
- systemctl start php-fpm
NFS服务器的配置特别简单,最重要的时配置完后就赶紧将NFS共享目录挂载至web1、web2、PHP服务器的网站根目录。
- mkdir -pv /app/nfs/web #创建共享目录,此目录为网站的根目录,实现统一管理。
- vim /etc/exports
- /app/nfs/web 172.18.0.0/16(ro,sync,root_squash,no_all_squash)
- # 允许172.18.0.1网段挂载NFS共享,如果要提高安全性应该控制到主机
- mount 172.18.68.24 : /app/nfs / web / app / httpd24 / htdocs# / app / httpd24 / htdocs为httpd.conf中的根目录
- mount 172.18.68.24 : /app/nfs / web / app / httpd24 / htdocs# / app / httpd24 / htdocs为httpd.conf中的根目录
- mkdir /app/httpd24/htdocs #PHP没有根目录,/app/httpd24/htdocs为NFS的挂载点。
- mount 172.18.68.24:/app/nfs/web /app/httpd24/htdocs
- vim /etc/httpd24/httpd.conf
- LoadModule proxy_module modules/mod_proxy.so #取消两行的注释,加载两模块
- LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
- vim /etc/httpd24/httpd.conf
- AddType application/x-httpd-php .php
- AddType application/x-httpd-php-source .phps
- ProxyRequests Off 关闭正向代理
- ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1
- #要确保PHP服务器中有这个目录,(在NFS中创建这个目录,且将NFS挂载至此目录。)
- apachectl restart
因为web1、web2、PHP服务器都使用NFS共享的目录作为根目录,所以只需要将wordpress博客系统部署在NFS服务器上即可让所有服务器得到同样的数据。
- # 解压博客程序
- tar xvf wordpress-4.8.1-zh_CN.tar.gz -C /app/httpd24/htdocs
- cd /app/httpd24/htdocs
- mv wordpress/ blog/
- # 创建配置文件
- cd /app/httpd24/htdocs/blog/
- cp wp-config-sample.php wp-config.php
- mysql -uroot -pcentos
- create datebase wpdb;
- grant all on wpdb.* to wpuser@'172.18.68.%' identified by 'centos';
- # 编辑配置文件,写入创建的IP、数据库、与用户性
- vim wp-config.php
- define('DB_NAME', 'wpdb');
- #
- /** MySQL数据库用户名 */
- define('DB_USER', 'wpuser');
- #
- /** MySQL数据库密码 */
- define('DB_PASSWORD', 'centos');
- #
- /** MySQL主机 */
- define('DB_HOST', 'localhost');
购买了单独域名后,在后台控制面板中添加两条A记录,就可以达到负载均衡。
到这里基于LAMP+NFS架构的双Web服务器、动静分离网站就搭建完成了。
双WEB服务器架构的好处在于如果有一台服务器宕机不会是整个网站瘫痪。
NFS共享存储的好处在于,DNS负载均衡后,不论用户被分配到哪台主机上,都能看到相同的页面得到相同的结果。
来源: http://www.cnblogs.com/aubin/p/7674816.html