• LAMP配置NFS页面共享,autofs实现挂载,DNS实现名称解析,纯手动操作


    0.实验架构:

    共6台服务器

    分工如下:

    服务器

    职责

    IP地址

    Centos版本

    描述

    A

    DNS

    172.18.7.70

    7

     

    B

    Apache

    172.18.7.71

    7

    httpd+php-fpm

    C

    Apache

    172.18.7.72

    7

    httpd+php-fpm

    D

    MySQL

    172.18.7.73

    7

     

    E

    NFS

    172.18.7.74

    7

    共享wordpress程序

    F

    Client

    172.18.7.61

    6

    DNS指向Server A


    先准备好所有服务器

    所有软件采用yum安装方式安装.


    1.MySQL服務器(Server D)

    安裝mariaDB并创建数据库wpdb.以及授权两台主机的访问权限.

    ]# yum install mariadb-server -y
    ]# systemctl start mariadb
    
    ]# mysql
    MariaDB [(none)]> create database wpdb;
    MariaDB [(none)]> grant all on wpdb.* to 'wpuser'@'172.18.7.71' identified by 'wppass';
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> grant all on wpdb.* to 'wpuser'@'172.18.7.72' identified by 'wppass';
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> quit
    

    2.NFS服务器(Server E)

    NFS服务一般会被包含在CentOS安装程序中,默认被安装.

    查看是否已安装

    ]# rpm -q nfs-utils

    如果没有安装则使用yum安装
    ]# yum -y install nfs-utils


    启动服务

    ]# systemctl start nfs.service

    查看端口

    ]# ss -tnlp

    因为是内核直接监听2049端口所以只显示 *:2049,但不显示监听端口的应用.


    创建共享目录,并创建测试文件

    ]# mkdir /httpdata
    ]# touch /httpdata/testfile

    NFS默认是把客户端用户ID映射到本地用户ID来识别用户的,所以为了apache服务器能够拥有对NFS目录的正常访问权限,httpd服务yum安装默认会创建id为48的apache账号,所以这里给目录设置一个id为48的acl权限.

    ]# setfacl -Rm u:48:rwx /httpdata/


    添加配置

    ]# vim /etc/exports
    /httpdata 172.18.7.71/16(rw) 172.18.7.72/16(rw)


    使目录生效

    ]# exportfs -r

    此时如果远程主机用root登陆的话,对此目录是只读的,因为安全起见,root用户默认会被压缩映射为nfsnobody用户.

    确保rpcbind服务已开启

    ]# systemctl status rpcbind


    最后把wordpress程序放进共享目录.

    ]# tar xvf wordpress-4.9.1-zh_CN.tar.gz
    ]# cp wordpress/* /httpdata/ -R

    修改wordpress配置文件

    ]# cp wp-config-sample.php wp-config.php
    ]# sed -i 's/database_name_here/wpdb/g' wp-config.php
    ]# sed -i 's/username_here/wpuser/g' wp-config.php
    ]# sed -i 's/password_here/wppass/g' wp-config.php
    ]# sed -i 's/localhost/172.18.7.73/g' wp-config.php


    建立php测试页面

    ]# cd /httpdata/
    ]# vim phpinfo.php
    <?php
    phpinfo();
    ?>


    3.Apache服务器(Server B,Server C)

    测试NFS共享

    ]# showmount -e 172.18.7.74
    Export list for 172.18.7.74:
    /httpdata 172.18.7.72/16,172.18.7.71/16

    创建NFS共享目录的挂载点,并挂载

    ]# mkdir -p /web/html
    ]# mount -t nfs 172.18.7.74:/httpdata /web/html/
    
    ]# ll /web/html/
    total 0
    -rw-r--r-- 1 root root 0 Feb  4 04:36 aaa
    


    安装httpd和php

    ]# yum install httpd php-fpm php-mysql -y


    启动服务并测试httpd是否正常工作.

    ]# systemctl start httpd
    ]# curl 172.18.7.71
    

    显示欢迎页面为正常.


    修改httpd配置文件

    ]# vim /etc/httpd/conf/httpd.conf
    DocumentRoot "/web/html"
    DirectoryIndex index.php index.html
    
    <Directory "/web/html">
         Options None
         AllowOverride None
         Require all granted
    </Directory>
    


    创建fcgi.conf配置文件,用于让httpd支持php

    ]# vim /etc/httpd/conf.d/fcgi.conf
    ProxyRequests off
    ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/web/html/$1

    第一行为关闭默认正向代理,使用fcgi反向代理
    第二行规定只把.php后缀的内容转发到后端.此处的IP地址为php所在主机地址,可以是远程主机.


    修改php-fpm配置文件

    ]# vim /etc/php-fpm.d/www.conf
    
    listen = 0.0.0.0:9000
    
    listen.owner = nobody
    listen.group = nobody
    listen.mode = 0666
    


    重启服务

    ]# systemctl start php-fpm
    ]# systemctl restart httpd


    在浏览器上测试
    http://172.18.7.71/phpinfo.php

    显示php配置画面则为成功.

    安装wordpress
    访问172.18.7.71或者172.18.7.72中任意一台,进行wordpress安装配置
    http://172.18.7.71


    按照说明填写好内容点击左下角的安装wordpress

    安装完成,即可通过任意一台Apache服务器访问到内容相同的wordpress站点.


    4.DNS服务器(Server A)

    安装DNS服务

    ]# yum install bind -y

    修改主配置文件
    简单配置,可以直接注释掉几行.

    ]# vim /etc/named.conf
     //listen-on port 53 { 127.0.0.1; };
     //allow-query     { localhost; };
     //dnssec-enable yes;
     //dnssec-validation yes;

    添加正向解析

    ]# vim /etc/named.rfc1912.zones
    zone "opsnote.com" IN {
       type master;
       file "opsnote.com.zone";
     };
    
    ]# vim /var/named/opsnote.com.zone
     $TTL 3600
     @ IN  SOA ns1 admin (
           0
           1H
           10M
           3D
           1D)
       IN  NS  ns1
     ns1 IN  A 172.18.7.70
    www IN  A 172.18.7.71
    www IN  A 172.18.7.72
    


    安全起见,要设置区域数据库文件的属组为named.权限为640.

    ]# chown :named /var/named/opsnote.com.zone
    ]# chmod 640 /var/named/opsnote.com.zone
    ]# ll /var/named/opsnote.com.zone
    -rw-r----- 1 root named 136 Feb  6 18:38 /var/named/opsnote.com.zone

    检查配置

    ]# named-checkconf
    ]# cd /var/named
    ]# named-checkzone opsnote.com opsnote.com.zone
    zone opsnote.com/IN: loaded serial 0
    OK

    检查完成没有问题.

    测试

    ]# dig -t A www.opsnote.com @172.18.7.70
    
    ;; ANSWER SECTION:
     www.opsnote.com.  3600  IN  A 172.18.7.71
     www.opsnote.com.  3600  IN  A 172.18.7.72
    


    成功.


    5.客户端(主机 F)

    为了使用DNS进行轮询域名解析,需要将域名的DNS解析设置指向我们自己的DNS服务器.
    修改本机DNS为172.18.7.70

    ]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
    DNS1=172.18.7.70

    重启网络服务

    ]# service network restart

    测试

    ]# ping www.opsnote.com
     PING www.opsnote.com (172.18.7.71) 56(84) bytes of data.
     64 bytes from 172.18.7.71: icmp_seq=1 ttl=64 time=0.240 ms
    
    ]# ping www.opsnote.com
     PING www.opsnote.com (172.18.7.72) 56(84) bytes of data.
     64 bytes from 172.18.7.72: icmp_seq=1 ttl=64 time=0.288 ms
    


    多次重复尝试,会得到两个解析结果,172.18.7.71和172.18.7.72.

    至此可以通过图形界面的浏览器顺利访问www.opsnote.com了.

  • 相关阅读:
    单片机开发 郭天祥
    OpenNI检测不到Kinect Camera和Kinect Audio了
    python中的类的成员变量以及property函数
    python lambda
    python中的括号以及元组和列表的区别
    python的self
    python exception的传递
    python的闭包
    函数里面定义函数
    在yum出问题的情况下安装某个rpm包的方法
  • 原文地址:https://www.cnblogs.com/Q--T/p/8423433.html
Copyright © 2020-2023  润新知