实验环境:(共 7 台机器)
PowerDNS: 192.168.99.110
两台 LAP: 192.168.99.120 和 192.168.99.130
NFS 服务器: 192.168.99.140
MySQL: 主节点: 192.168.99.150
从节点 B:192.168.99.160 和 192.168.99.170
拓扑图:
实验步骤:
一, 先搭建 MySQL 主从半节点 99.150,160 和 170
在主节点上 150 操作
1, 先修改配置文件内容添加 server-id 和 bin-log
- [root@centos7 ~]#VIM /etc/my.cnf
- [mysqld]
- server-id=150
- log-bin
- [root@centos7 ~]#systemctl start mariadb
2, 查看主节点的 pos 位置点并创建从节点复制同步时使用的用户账号
- MariaDB [(none)]> show master status;
- MariaDB [(none)]> grant replication slave on *.* to repluser@'%' identified by '123';
两个从节点: 160,170 同样的操作
1, 在配置文件中添加各自的 server-id 号, 然后向主节点使用刚刚创建的复制账号进行同步操作
- [root@centos7 ~ ]#VIM /etc/my.cnf
- [mysqld]
- server-id=160
- # 启动 MySQL 数据库
2, 使用复制账号向主节点同步, 然后查看同步的状态
- MariaDB [(none)]> change master to
- master_host='192.168.99.150',
- master_user='repluser',
- master_password='123',
- master_port=3306,
- master_log_file='mariadb-bin.000001',
- master_log_pos=245;
- MariaDB [(none)]> slave start;
- MariaDB [(none)]> show slave status\G
看到两个线程状态为 Yes 就表示此时已经同步成功了
170 机器同样的操作
3, 下面配置实现半同步操作: 安装插件
主节点 150:
1安装主节点使用 master 端的插件
- MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
- MariaDB [(none)]> show plugins;
- ...
- | rpl_semi_sync_master | ACTIVE | REPLICATION | semisync_master.so | GPL |
- +--------------------------------+----------+--------------------+--------------------
- # 查看节点的启用状态
- MariaDB [(none)]> show global variables like '%semi%';
- +------------------------------------+-------+
- | Variable_name | Value |
- +------------------------------------+-------+
- | rpl_semi_sync_master_enabled | OFF |
- | rpl_semi_sync_master_timeout | 10000 | #其中: timeout 这个参数是指同步超时时间
- | rpl_semi_sync_master_trace_level | 32 |
- | rpl_semi_sync_master_wait_no_slave | ON |
- +------------------------------------+-------+
2 启用 master 端的插件
- MariaDB [(none)]> set global rpl_semi_sync_master_enabled=on;
- # 查看一下是否启用
- MariaDB [(none)]> show global variables like '%semi%';
- +------------------------------------+-------+
- | Variable_name | Value |
- +------------------------------------+-------+
- | rpl_semi_sync_master_enabled | ON |
3 两个从节点 160 和 170 同样的操作:
安装 slave 端的插件:
4 安装 slave 端使用的半同步插件, 然后启动插件并查看确认
- MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
- # 查看下插件的状态, 此时并没有启动, enabled 为 OFF
- MariaDB [(none)]> show global variables like '%semi%';
- +---------------------------------+-------+
- | Variable_name | Value |
- +---------------------------------+-------+
- | rpl_semi_sync_slave_enabled | OFF |
- | rpl_semi_sync_slave_trace_level | 32 |
- +---------------------------------+-------+
- # 启用插件
- MariaDB [(none)]> set global rpl_semi_sync_slave_enabled=on;
- # 再次查看状态
- MariaDB [(none)]> show global variables like '%semi%';
- +---------------------------------+-------+
- | Variable_name | Value |
- +---------------------------------+-------+
- | rpl_semi_sync_slave_enabled | ON | #状态为 ON 已启用
- | rpl_semi_sync_slave_trace_level | 32 |
- +---------------------------------+-------+
- # 插件启用完了还需要重新启动 slave 的线程
- MariaDB [(none)]> stop slave;
- MariaDB [(none)]> start slave;
5 回到主节点机器 99.150 上查看插件的状态, 此时应该是有两个客户端了
- MariaDB [(none)]> SHOW GLOBAL STATUS LIKE '%semi%';
- +--------------------------------------------+--------+
- | Variable_name | Value |
- +--------------------------------------------+--------+
- | Rpl_semi_sync_master_clients | 2 | #客户端数量为 2
- .....
4, 在主节点 150 主节点中先创建一个 WordPress 网站用的账号, 等会需要使用
- MariaDB [(none)]> create database wpdb;
- MariaDB [(none)]> grant all privileges on wpdb.* to wpuser@'192.168.99.%' identified by "xu";
二, 部署搭建 PowerDNS
1, 在 99.110 机器上操作
- # 安装软件包
- yum install -y pdns pdns-backend-MySQL (epel 源里的包)
- [root@centos7 ~]#yum -y install httpd PHP PHP-MySQL PHP-mbstring
- [root@centos7 ~]#systemctl start httpd
2, 需要在数据库中创建相应的库和表
- # 进入数据库中创建相应的库和表
- MariaDB [(none)]> CREATE DATABASE powerdns;
- Query OK, 1 row affected (0.00 sec)
- MariaDB [(none)]> GRANT ALL ON powerdns.* TO 'powerdns'@'192.168.99.110' IDENTIFIED BY '123';
- Query OK, 0 rows affected (0.00 sec)
- MariaDB [(none)]> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | MySQL |
- | performance_schema |
- | powerdns |
- | test |
- +--------------------+
- 5 rows in set (0.00 sec)
- USE powerdns;
- CREATE TABLE domains (
- id INT AUTO_INCREMENT,
- name VARCHAR(255) NOT NULL,
- master VARCHAR(128) DEFAULT NULL,
- last_check INT DEFAULT NULL,
- type VARCHAR(6) NOT NULL,
- notified_serial INT DEFAULT NULL,
- account VARCHAR(40) DEFAULT NULL,
- PRIMARY KEY (id)
- ) Engine=InnoDB;
- CREATE UNIQUE INDEX name_index ON domains(name);
- CREATE TABLE records (
- id BIGINT AUTO_INCREMENT,
- domain_id INT DEFAULT NULL,
- name VARCHAR(255) DEFAULT NULL,
- type VARCHAR(10) DEFAULT NULL,
- content VARCHAR(64000) DEFAULT NULL,
- ttl INT DEFAULT NULL,
- prio INT DEFAULT NULL,
- change_date INT DEFAULT NULL,
- disabled TINYINT(1) DEFAULT 0,
- ordername VARCHAR(255) BINARY DEFAULT NULL,
- auth TINYINT(1) DEFAULT 1,
- PRIMARY KEY (id)
- ) Engine=InnoDB;
- CREATE INDEX nametype_index ON records(name,type);
- CREATE INDEX domain_id ON records(domain_id);
- CREATE INDEX recordorder ON records (domain_id, ordername);
- CREATE TABLE supermasters (
- ip VARCHAR(64) NOT NULL,
- nameserver VARCHAR(255) NOT NULL,
- account VARCHAR(40) NOT NULL,
- PRIMARY KEY (ip, nameserver)
- ) Engine=InnoDB;
- CREATE TABLE comments (
- id INT AUTO_INCREMENT,
- domain_id INT NOT NULL,
- name VARCHAR(255) NOT NULL,
- type VARCHAR(10) NOT NULL,
- modified_at INT NOT NULL,
- account VARCHAR(40) NOT NULL,
- comment VARCHAR(64000) NOT NULL,
- PRIMARY KEY (id)
- ) Engine=InnoDB;
- CREATE INDEX comments_domain_id_idx ON comments (domain_id);
- CREATE INDEX comments_name_type_idx ON comments (name, type);
- CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
- CREATE TABLE domainmetadata (
- id INT AUTO_INCREMENT,
- domain_id INT NOT NULL,
- kind VARCHAR(32),
- content TEXT,
- PRIMARY KEY (id)
- ) Engine=InnoDB;
- CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);
- CREATE TABLE cryptokeys (
- id INT AUTO_INCREMENT,
- domain_id INT NOT NULL,
- flags INT NOT NULL,
- active BOOL,
- content TEXT,
- PRIMARY KEY(id)
- ) Engine=InnoDB;
- CREATE INDEX domainidindex ON cryptokeys(domain_id);
- CREATE TABLE tsigkeys (
- id INT AUTO_INCREMENT,
- name VARCHAR(255),
- algorithm VARCHAR(50),
- secret VARCHAR(255),
- PRIMARY KEY (id)
- ) Engine=InnoDB;
- CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
3, 回到 99.110 机器上操作
在 powerdns 的配置文件中添加 PowerDNS 使用 mariadb 作为后台数据存储
- # 查找到包含 launch= 的行, 修改并添加下面的内容
- VIM /etc/pdns/pdns.conf # 250 行
- launch=gmysql
- gmysql-host=192.168.99.150 #MySQL 数据库的 IP
- gmysql-port=3306 #端口
- gmysql-dbname=powerdns #数据库名
- gmysql-user=powerdns #用户
- gmysql-password=123 #密码
- # 启动 pdns 服务
- systemctl start pdns
- systemctl enable pdns
4, 安装 httpd 和 PHP 相关包
- [root@centos7 ~]# yum -y install PHP-devel PHP-gd PHP-mcrypt PHP-imap PHP-ldap PHP-odbc PHP-Pear PHP-xml PHP-xmlrpc PHP-mcrypt PHP-mhash gettext
- # 重启 httpd 服务
- [root@centos7 ~]# systemctl start httpd
5, 在网站的根目录内下载 poweradmin 程序,
- [root@centos7 ~]# cd /var/www/html
- [root@centos7 HTML]# ls
- [root@centos7 HTML]# wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
6, 解压压缩包并重命名
- tar xf poweradmin-2.1.7.tgz
- mv poweradmin-2.1.7 poweradmin
7, 一会需要安装 powerdns 可能需要有写的权限, 可以使用 facl 设置权限, 方便撤销
[root@centos7 HTML]# setfacl -Rm u:apache:rwx poweradmin
8, 使用浏览器访问 httpd 的 powerdns 页面进行安装:
http://192.168.99.110/poweradmin/install/
第一步: 选择语言, 然后继续
第二步: 这是第一次安装, 点继续下一步
第三步: 提示输入数据库的连接信息
第四步: 填写 powerdns 的用户名和密码, 还有域名, 主域名服务器和从域名服务器, 目前只有一台
第五步: 提示需要在数据库中给某个用户授予相应的权限, 根据提示在数据库中操作即可
第六步: 按照提示修改 powerdns 的配置文件即可, 先重命名一个新文件
- [root@centos7 poweradmin]#cp inc/config-me.inc.PHP inc/config.inc.PHP
- [root@centos7 poweradmin]#VIM inc/config.inc.PHP
- <?PHP
- $db_host = '192.168.99.150';
- $db_user = 'powerdns';
- $db_pass = '123';
- $db_name = 'powerdns';
- $db_type = 'mysql';
- $db_layer = 'PDO';
- $session_key = '}6!}-]pDYxRpWzPMrI18bUKQ*b@Dza}5mD4)&n1MlMB+F6';
- $iface_lang = 'en_EN';
- $dns_hostmaster = 'master.peter.com';
- $dns_ns1 = '192.168.99.110';
- $dns_ns2 = '192.168.99.110';
第七步: 安装完成, 并要求从 Poweradmin 根目录中删除 install 否则无法登陆
如果不删除就不让登陆, 我们删除目录后重新登录
- [root@centos7 poweradmin]#pwd
- /var/www/HTML/poweradmin
- [root@centos7 poweradmin]#\rm -rf install/
删除后再次进行登录, 然后输入用户名密码登录
1, 添加一个主域
2, 添加主域的信息, 然后添加即可
3, 点击域列表可以查看刚刚添加的主域信息, 我们点编辑, 添加一会要部署的 WordPress 博客站点的
3, 添加一个 A 记录内容字段填写 web1 的 IP 地址然后添加即可, 同样操作再添加一条记录指向另一台 Web 服务器 99.130
4, 添加完之后可以点查询, 输入域名看是否可以查看刚刚添加的两条记录
查看结果
三, 配置 NFS 服务器
下面开始配置 NFS, 在主机 99.140 上操作
1, 安装 nfs 软件
yum install -y nfs-utils
2, 添加配置文件
- [root@centos7 ~]#VIM /etc/exports
- /data/WordPress 192.168.99.0/24(rw,all_squash,anonuid=997,anongid=995)
- #启动 nfs 服务
- [root@centos7 ~]systemctl start nfs-server
3, 创建网站使用的用户
- groupadd -g 995 apache
- useradd -r -u 997 -g 995 -s /sbin/nologin apache
4, 部署 WordPress 网站, 解压压缩包到本地的 / data / 目录并设置权限
- tar xf WordPress-5.0.3-zh_CN.tar.gz -C /data/
- rm -f WordPress-5.0.3-zh_CN.tar.gz
- chown -R apache.apache /data/WordPress/
四, 部署两台 LAP 并在本地 NFS 挂载
下面开始在 120,130 两台机子上部署 LAP, 先在 120 机器上安装 apache 和 PHP, 这里 使用 yum 安装, 源码编译同样操作
1, 安装包
[root@centos7 ~]# yum -y install PHP httpd PHP-MySQL PHP-mbstring
2, 修改 httpd 的配置文件
- [root@centos7 ~]# VIM /etc/httpd/conf.d/vhost.conf
- <virtualhost *:80>
- documentroot /data/WordPress
- servername www.peter.com
- <directory /data/WordPress>
- require all granted
- </directory>
- </virtualhost>
- #启动服务
- [root@centos7 ~]# systemctl start httpd
4, 安装 nfs-utils 挂载 nfs 共享目录
- [root@centos7 ~]# yum -y install nfs-utils
- # 创建挂载的目录
- [root@centos7 ~]# mkdir /data/WordPress
- # 把共享的 WordPress 目录挂载到本地的 / data/WordPress
- [root@centos7 ~]# mount 192.168.99.140:/data/WordPress /data/WordPress
- # 启动 httpd 服务
- [root@centos7 ~]# systemctl start httpd
此时网站的目录已经通过 nfs 挂载到本地的目录了, 然后从浏览器进行访问登录
先安装好一个, 使用浏览器测试一下 (我这里使用的是 Windows 访问所以需要配置一下 hosts 文件, 才可以使用域名直接访问, 也可以直接使用 IP 进行访问)
下面就可以安装网站了
数据库和用户再之前已经创建好了, 这里直接使用即可
填写完 点击安装即可
填写 Web 站点的信息, 然后安装
安装完成
此时 WordPress 博客已经搭建好, 可以正常使用了
另一台 LAP 机器配置完直接挂载到本地的没了即可, 不需要在进行网站配置了
以上就是 LAMP 的详细步骤
来源: https://www.cnblogs.com/fengdejiyixx/p/11266489.html