从零搭建内网开发环境:用Bind9+Apache在银河麒麟上实现test.com本地访问

张开发
2026/4/16 2:17:34 15 分钟阅读

分享文章

从零搭建内网开发环境:用Bind9+Apache在银河麒麟上实现test.com本地访问
银河麒麟Bind9Apache全栈开发环境搭建实战在国产化技术浪潮下越来越多的开发团队开始基于银河麒麟操作系统构建开发环境。本文将手把手带你在银河麒麟V10上搭建完整的本地开发环境实现通过test.com域名访问内网Web服务。不同于简单的工具堆砌我们将从实际开发场景出发构建一个真正可用的全栈开发环境。1. 环境规划与准备1.1 网络拓扑设计一个合理的开发环境需要清晰的网络规划。我们采用经典的双节点架构服务器节点银河麒麟V10系统承担DNS服务和Web服务开发机节点Ubuntu系统模拟开发人员工作环境关键网络参数配置示例节点类型IP地址角色说明DNS服务器192.168.157.131运行Bind9和Apache服务开发机192.168.157.132开发测试环境1.2 系统基础配置在银河麒麟服务器上执行以下基础环境准备# 更新系统软件包 sudo yum update -y # 安装必要工具 sudo yum install -y vim net-tools bind-utils提示银河麒麟基于CentOS生态使用yum作为包管理器与Ubuntu的apt命令不同2. DNS服务部署与配置2.1 Bind9安装与核心配置安装Bind9 DNS服务sudo yum install bind bind-utils -y关键配置文件说明主配置文件/etc/named.conf选项文件/etc/named.conf.options本地区域文件/etc/named.conf.local区域数据文件/etc/bind/db.test.com2.2 详细配置解析编辑/etc/named.conf.optionsoptions { directory /var/named; listen-on port 53 { 127.0.0.1; 192.168.157.131; }; allow-query { 127.0.0.1; 192.168.157.0/24; }; recursion no; dnssec-validation no; };创建区域配置文件/etc/named.conf.localzone test.com IN { type master; file db.test.com; allow-update { none; }; };2.3 区域文件编写技巧db.test.com文件示例$TTL 86400 IN SOA ns1.test.com. admin.test.com. ( 2024060101 ; Serial 3600 ; Refresh 900 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) IN NS ns1.test.com. IN A 192.168.157.131 ns1 IN A 192.168.157.131 www IN A 192.168.157.131 api IN A 192.168.157.131注意每次修改区域文件后需要递增Serial值通常采用YYYYMMDDNN格式3. 解决systemd-resolved冲突问题银河麒麟默认使用systemd-resolved管理DNS会与Bind9服务产生端口冲突。解决方案# 停止并禁用systemd-resolved sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved # 删除自动生成的resolv.conf sudo rm /etc/resolv.conf # 手动创建resolv.conf echo nameserver 127.0.0.1 | sudo tee /etc/resolv.conf验证DNS解析# 本地测试 nslookup test.com 127.0.0.1 # 从开发机测试 nslookup test.com 192.168.157.1314. Apache Web服务集成4.1 Apache安装与虚拟主机配置安装Apache服务sudo yum install httpd -y sudo systemctl start httpd sudo systemctl enable httpd创建虚拟主机配置文件/etc/httpd/conf.d/test.com.confVirtualHost *:80 ServerName test.com ServerAlias www.test.com *.test.com DocumentRoot /var/www/test.com/html Directory /var/www/test.com/html Options Indexes FollowSymLinks AllowOverride All Require all granted /Directory ErrorLog /var/log/httpd/test.com_error.log CustomLog /var/log/httpd/test.com_access.log combined /VirtualHost4.2 项目目录结构与权限设置创建项目目录结构sudo mkdir -p /var/www/test.com/html sudo chown -R apache:apache /var/www/test.com sudo chmod -R 755 /var/www/test.com添加测试页面echo h1Test.com Development Environment Ready/h1 | sudo tee /var/www/test.com/html/index.html重启服务生效sudo systemctl restart named httpd5. 开发机环境配置在Ubuntu开发机上配置使用我们的DNS服务# 编辑网络配置 sudo vi /etc/netplan/01-netcfg.yaml添加DNS服务器配置network: version: 2 ethernets: ens33: dhcp4: no addresses: [192.168.157.132/24] gateway4: 192.168.157.1 nameservers: addresses: [192.168.157.131]应用网络配置sudo netplan apply测试环境连通性# 测试DNS解析 ping test.com nslookup test.com # 测试Web访问 curl http://test.com6. 高级配置与优化技巧6.1 多项目环境配置实际开发中常需要同时运行多个项目可以通过以下方式扩展/var/www/ ├── project1.com │ ├── html │ ├── logs │ └── conf ├── project2.com │ ├── html │ └── conf └── test.com ├── html └── logs对应的DNS配置dev IN A 192.168.157.131 project1 IN A 192.168.157.131 project2 IN A 192.168.157.1316.2 开发效率提升技巧本地hosts快速测试在开发机/etc/hosts中添加临时解析日志实时监控tail -f /var/log/httpd/test.com_access.log快速重启服务脚本#!/bin/bash sudo systemctl restart named httpd echo Services restarted at $(date)6.3 安全加固建议配置防火墙规则sudo firewall-cmd --permanent --add-servicehttp sudo firewall-cmd --permanent --add-servicedns sudo firewall-cmd --reload限制DNS查询范围allow-query { 127.0.0.1; 192.168.157.0/24; };定期备份配置文件sudo tar czvf /backups/bind_config_$(date %Y%m%d).tar.gz /etc/named*7. 常见问题排查指南7.1 DNS解析失败排查步骤检查Bind9服务状态sudo systemctl status named查看DNS查询日志sudo journalctl -u named -f使用dig工具诊断dig 192.168.157.131 test.com7.2 Apache服务问题排查检查配置文件语法sudo apachectl configtest查看错误日志sudo tail -50 /var/log/httpd/error_log验证端口监听sudo netstat -tulnp | grep httpd7.3 网络连通性检查基础网络测试ping 192.168.157.131 traceroute 192.168.157.131防火墙规则检查sudo firewall-cmd --list-allSELinux状态检查sudo getenforce sudo setenforce 0 # 临时关闭用于测试在实际项目部署中我们团队发现银河麒麟的SELinux策略可能会导致一些权限问题。通过审计日志/var/log/audit/audit.log可以快速定位这类问题必要时可以添加自定义策略或适当调整SELinux布尔值。

更多文章