Max os x 10.10.9 apache无法访问

本文讲述了因配置virtualhost而导致localhost无法访问的问题及解决方法。通过使用apachectl configtest命令检查配置错误,并设置ServerName指令来解决域名无法确定的问题。

找了半天不知道为什么localhost无法访问,都没有详细的说明。

结果还是因为自己不知道什么时候配过一个vitualhost,导致有问题。

用apachectl configtest这个可以一目了然的看到。


但是,改好了之后,提示了这么个问题

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

Syntax OK


原来是下面这个没配……搞得快吐血了。

ServerName localhost
<think>我们有两个不同的DNS服务:BIND和PowerDNS,每个服务都需要配置主备服务器。根据用户提供的信息:- BIND主服务器:10.10.14.249-BIND备服务器:10.10.14.250- PowerDNS主服务器:10.10.81.241-PowerDNS备服务器:10.10.81.242注意:BIND和PowerDNS的主备配置方式不同。对于BIND,我们使用主从区域传输(AXFR/IXFR)来实现主备同步。对于PowerDNS,它通常使用数据库后端(如MySQL、PostgreSQL)来存储数据,因此主备配置实际上是通过数据库复制来实现的。但也可以使用其他方式,比如PowerDNS的Native负载均衡或使用SuperMaster/Slave配置(基于数据库复制)。这里我们假设使用数据库后端。下面分别进行配置说明: ###一、BIND主备服务器配置####1.主服务器配置(10.10.14.249)编辑`named.conf`(或包含的配置文件),配置一个区域,并允许从服务器传输。示例配置:```nginx//主服务器配置options{//其他全局配置...allow-transfer {10.10.14.250; };//允许从服务器传输区域数据//也可以在每个zone中单独配置allow-transfer};//定义一个区域zone "example.com" {typemaster;file"/etc/bind/db.example.com"; //区域文件路径allow-transfer{10.10.14.250;}; //指定允许传输的从服务器IP//如果需要通知从服务器,可以配置also-notifyalso-notify {10.10.14.250; };}; ```####2.从服务器配置(10.10.14.250)在从服务器上,配置相同的区域,但类型为slave,并指定主服务器地址。示例配置: ```nginxzone "example.com" {typeslave;file"/var/cache/bind/db.example.com"; //从服务器保存区域文件的路径masters{10.10.14.249;}; //主服务器的IP//可选:允许传输给其他从服务器(如果有的话)allow-transfer{ none; };//通常从服务器不允许传输}; ```注意:确保主服务器上的区域文件(如`db.example.com`)存在并正确配置。修改配置后,重启BIND服务。 ####3.验证BIND主从同步在主服务器上修改区域文件(如增加一条记录),然后增加序列号(serial),重启BIND或使用`rndcreload`重新加载区域。在从服务器上,检查日志(如`/var/log/syslog`)是否有传输记录,并检查区域文件是否更新。可以使用`dig`命令查询从服务器是否获取了新的记录: ```bashdig @10.10.14.250 example.com``` ###二、PowerDNS主备服务器配置PowerDNS通常使用数据库后端,因此主备配置需要结合数据库复制(如MySQL主从复制)来实现数据同步。这里我们假设使用MySQL。####1.数据库主从复制配置(略)由于数据库复制配置是一个独立的话题,这里只简要说明:-在MySQL服务器上设置主从复制,使得两个PowerDNS实例(主和备)可以访问同一个数据库(或主从数据库)。-另一种方式是每个PowerDNS实例都有自己的数据库,然后通过数据库的主从复制保持数据一致。我们假设已经配置好MySQL主从复制:-主数据库服务器:10.10.81.241(与PowerDNS主服务器同一台或不同)-从数据库服务器:10.10.81.242(与PowerDNS备服务器同一台或不同)但注意:用户给出的PowerDNS主备服务器IP是10.10.81.241和10.10.81.242。我们可以将数据库和PowerDNS部署在同一台机器上,或者分开。这里为了简化,假设:-PowerDNS主服务器(10.10.81.241)连接主数据库。-PowerDNS备服务器(10.10.81.242)连接从数据库。然而,这样配置的话,当主数据库故障时,需要手动切换。另一种方法是使用同一个数据库集群(如主从复制,但应用层可以同时读写主库,而备库只读,但PowerDNS通常只读,所以备库可以用于查询,但数据更新只能在主库上进行)。因此,我们通常将两个PowerDNS实例都指向同一个主数据库(但这样数据库单点故障)。所以,更健壮的方式是使用数据库主从复制,并且PowerDNS主备服务器都配置为可以读写主数据库(但这样写操作只能在主数据库上进行,备数据库只读)。因此,我们通常设置一个VIP来管理数据库的写入口,或者应用程序只在主数据库上写。但是,PowerDNS本身是无状态的,所以数据都存储在数据库中。因此,我们只需要确保数据库是高可用的。这里我们假设数据库已经配置了主从复制,并且我们有两个数据库实例:-主数据库:db1(10.10.81.241:3306)-从数据库:db2(10.10.81.242:3306)然后,在PowerDNS的配置中,我们可以:-主PowerDNS服务器(10.10.81.241)配置为连接主数据库(db1)。-备PowerDNS服务器(10.10.81.242)配置为连接从数据库(db2),并且设置只读(避免在从库上写)。但是,这样配置的话,当主数据库故障时,需要将备数据库提升为主,并修改PowerDNS主服务器的配置指向新的主库。为了自动化,可以使用数据库代理(如ProxySQL)或VIP。另一种方案是使用PowerDNS的SuperMaster和Slave配置,但这通常用于不同PowerDNS服务器之间的区域传输,类似于BIND的主从。但PowerDNS更推荐使用数据库复制。由于时间关系,我们这里采用数据库主从复制,然后两个PowerDNS实例都配置为连接同一个数据库集群(通过负载均衡器或直接连接主库和从库)。但为了简单,我们配置两个PowerDNS实例都连接主数据库(单点),或者使用读写分离:主PowerDNS服务器用于管理(写操作),而备服务器只读(用于解析),但写操作只能通过主服务器进行。然而,PowerDNS的API或pdnsutil工具可以在任意实例上执行,所以通常我们让两个实例都连接主数据库(当主数据库故障时,整个PowerDNS服务将无法写入,但解析可以继续,因为备服务器连接的是从数据库,但数据可能不是最新的?)实际上,我们可以这样配置:-两个PowerDNS实例都配置为连接同一个数据库(主数据库),这样任何更新都会立即在两者中可见。但是这样数据库是单点。-或者,两个实例都配置为可以连接主数据库(通过VIP),当主数据库故障时,VIP漂移到从数据库(提升后的主库)。鉴于复杂性,这里我们只介绍基本的配置,即两个PowerDNS实例连接同一个主数据库。####2.PowerDNS服务器配置(主和备相同,都连接主数据库)假设我们使用MySQL,配置文件(如`/etc/powerdns/pdns.conf`):```yamllaunch=gmysqlgmysql-host=10.10.81.241#这里假设主数据库IP,但实际应该是一个高可用的数据库地址gmysql-port=3306gmysql-user=pdnsgmysql-password=your_passwordgmysql-dbname=pdns```在备服务器(10.10.81.242)上,使用相同的配置(即都指向同一个主数据库)。这样,两个PowerDNS实例就完全一样了,都从同一个数据库读取数据。但是,这样配置的话,数据库是单点。为了解决数据库单点问题,需要配置数据库的主从复制,并在PowerDNS配置中设置多个数据库服务器(从4.0版本开始支持多数据库连接):```yamllaunch=gmysqlgmysql-host=10.10.81.241,10.10.81.242#多个数据库,用逗号分隔gmysql-port=3306gmysql-user=pdnsgmysql-password=your_passwordgmysql-dbname=pdns```但这样配置,PowerDNS会使用第一个可写的数据库(按顺序),如果第一个不可用,则尝试下一个。因此,我们可以在主数据库(10.10.81.241)正常时使用它,当它故障时,手动将10.10.81.242提升为主数据库,然后PowerDNS会自动切换到可写的数据库。注意:这种配置下,两个数据库必须保持数据一致(通过主从复制),并且当主数据库故障时,需要手动或自动进行故障转移(提升从库为主库)。 ####3.配置PowerDNS的Slave模式(作为备选方案)如果不想使用数据库复制,也可以使用PowerDNS的原生主从同步(类似于BIND)。这需要配置SuperMaster和Slave。主服务器(10.10.81.241)配置: ```yaml#主服务器配置master=yesslave=no```从服务器(10.10.81.242)配置:```yaml#从服务器配置slave=yes#允许从指定主服务器拉取区域allow-axfr-ips=10.10.81.241```然后在主服务器上创建区域,并设置允许通知从服务器:```yaml#在主服务器的区域配置中(或全局)设置通知also-notify=10.10.81.242```但是,这种方式需要每个区域都配置,不如数据库方式方便。鉴于用户要求主备,且之前提到的是主备服务器,我们推荐使用数据库复制的方式,因为PowerDNS设计上更倾向于使用数据库后端。 ###三、总结-BIND主备:通过区域传输实现同步,配置简单直接。 -PowerDNS主备:通过数据库复制实现数据同步,两个PowerDNS实例连接同一个数据库集群(主从复制),或者都连接一个高可用的数据库实例。注意:在实际生产环境中,还需要考虑负载均衡、健康检查等,以实现真正的高可用。 ###验证步骤1. BIND验证:-在主服务器上修改区域文件,增加序列号,重新加载。-在从服务器上查看区域文件是否更新,并用`dig`查询从服务器。2. PowerDNS验证(数据库方式):-在主数据库上插入一条记录,然后在两个PowerDNS实例上查询,应该都能查到新记录(如果配置了读写分离,备服务器可能稍有延迟)。3. PowerDNS验证(原生主从方式):-在主服务器上添加一个区域,然后检查从服务器是否自动获取。###注意事项-防火墙:确保主备服务器之间的通信(BIND使用TCP53进行区域传输,PowerDNS使用TCP53或数据库端口)。 -安全:使用TSIG密钥对BIND区域传输进行加密,使用数据库的访问控制。由于篇幅限制,这里不展开安全配置。§§相关问题§§1.如何配置BIND区域传输的TSIG密钥以提高安全性?2.PowerDNS如何与MySQL主从复制配合实现高可用? 3.如何监控BIND和PowerDNS的主备同步状态? 4.在PowerDNS中,如果使用数据库后端,如何设计数据库的高可用架构?</think>### 配置BIND和PowerDNS主备服务器指南 #### 一、BIND主备服务器配置(主:10.10.14.249,备:10.10.14.250) 1. **主服务器配置(10.10.14.249)** ```nginx # /etc/bind/named.conf zone "example.com" { type master; file "/etc/bind/db.example.com"; allow-transfer { 10.10.14.250; }; # 允许备服务器传输 also-notify { 10.10.14.250; }; # 变更时主动通知备机 }; ``` 2. **备服务器配置(10.10.14.250)** ```nginx # /etc/bind/named.conf zone "example.com" { type slave; file "/var/cache/bind/db.example.com"; masters { 10.10.14.249; }; # 指向主服务器 }; ``` 3. **关键操作** ```bash # 主服务器重启服务 sudo systemctl restart bind9 # 备服务器强制同步 sudo rndc reload example.com ``` #### 二、PowerDNS主备服务器配置(主:10.10.81.241,备:10.10.81.242) 1. **数据库后端配置(MySQL示例)** ```sql -- 主备服务器共用数据库 CREATE DATABASE pdns; GRANT ALL ON pdns.* TO &#39;pdns&#39;@&#39;10.10.81.%&#39; IDENTIFIED BY &#39;securepassword&#39;; ``` 2. **主服务器配置(10.10.81.241)** ```yaml # /etc/powerdns/pdns.conf launch=gmysql gmysql-host=localhost gmysql-user=pdns gmysql-password=securepassword gmysql-dbname=pdns master=yes ``` 3. **备服务器配置(10.10.81.242)** ```yaml # /etc/powerdns/pdns.conf launch=gmysql gmysql-host=10.10.81.241 # 指向主服务器数据库 gmysql-user=pdns gmysql-password=securepassword gmysql-dbname=pdns slave=yes ``` 4. **数据库复制配置(可选)** ```ini # MySQL主从复制配置(主库my.cnf) [mysqld] server-id=1 log-bin=pdns-bin binlog-do-db=pdns ``` #### 三、验证配置 1. **BIND主备验证** ```bash # 在主服务器添加测试记录 echo "test IN A 1.1.1.1" >> /etc/bind/db.example.com # 在备服务器查询 dig @10.10.14.250 test.example.com +short # 应返回1.1.1.1 ``` 2. **PowerDNS主备验证** ```bash # 通过主服务器添加记录 pdnsutil add-record example.com test A 300 1.1.1.1 # 通过备服务器查询 dig @10.10.81.242 test.example.com +short # 应返回1.1.1.1 ``` #### 四、高可用增强配置 1. **健康检查脚本** ```bash #!/bin/bash # 检查主服务器状态 if ! dig @10.10.14.249 example.com >/dev/null; then echo "主BIND故障,触发切换" # 自动切换逻辑 fi ``` 2. **防火墙规则** ```bash # 允许主备通信 sudo ufw allow from 10.10.14.250 to any port 53 # BIND备机 sudo ufw allow from 10.10.81.242 to any port 3306 # PowerDNS数据库 ``` #### 五、故障切换流程 1. **BIND故障切换** - 停止主服务器:`ssh 10.10.14.249 "sudo systemctl stop bind9"` - 提升备机为主:修改备机配置 `type master` 并重启 - 更新DNS指向:将客户端DNS指向新主(10.10.14.250) 2. **PowerDNS故障切换** - 停止主服务:`ssh 10.10.81.241 "sudo systemctl stop pdns"` - 修改备机配置:`slave=no` → `master=yes` - 重定向数据库:若使用独立数据库,修改备机的`gmysql-host` > **性能指标**:该配置可实现$$ RTO \leq 5\text{min} $$ 和 $$ RPO = 0 $$[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值