解放你的 hosts 文件!从零开始内网搭建 DNS 服务器 CoreDNS 实战

本文介绍如何从零开始在内网环境中搭建并配置CoreDNS服务器,解决大规模设备hosts文件管理难题,实现高效域名解析。

本文结合实际场景,从零开始搭建内网 CoreDNS 服务器并完成配置
内网中物理机、虚拟机等设备较多,配置 hosts 文件太麻烦,因此想到利用一台设备搭建 DNS 服务器以解救 hosts 文件
由于之前没有搭建 DNS 服务器的经验,在 GitHub 上搜了一下后,选择了 CoreDNS

前言

以前内网都是通过 hosts 管理内网的域名解析,如果设备少还好说,设备多了后,逐个设备维护 hosts 文件非常不现实。
如果能够在内网搭建 DNS 服务器,并调整路由器的 DNS 实现内网域名解析,就能够省去 hosts 配置的时间。

本文实践环境网络拓扑图:
网络拓扑图

clone 源码,编译,测试

clone & make

本地 Golang 环境直接编译

CoreDNS 使用 Golang 开发,因此编译需要 Golang 环境。
clone 源码并编译

git clone https://github.com/coredns/coredns
cd coredns
make

如果网络环境访问 GitHub 有困难,可以使用 Gitee 提供的镜像源 coredns

git clone https://gitee.com/mirrors/coredns.git
cd coredns
make

基于 Docker Golang 编译

同样,先 clone 项目到本地

git clone https://github.com/coredns/coredns
cd coredns

如果本地没有 Golang 环境,也可以直接用 Docker 拉一个 Golang 镜像编译,以下为官方文档给出的命令

docker run --rm -i -t -v $PWD:/v -w /v golang:1.12 make

考虑到网络环境的问题,国内用户建议指定环境变量 GOPROXY

docker run --rm -i -t -e GOPROXY="https://goproxy.cn" -v $PWD:/v -w /v golang:1.12 make

测试

编译完成后,项目目录下多了一个 40MB 的二进制可执行文件 coredns

pi@rpi4:~/CoreDNS$ ls -lh
total 40M
-rw-r--r--  1 pi sudo 3.6K Mar  9 00:39 ADOPTERS.md
lrwxrwxrwx  1 pi sudo   26 Mar  9 00:39 CODE_OF_CONDUCT.md -> .github/CODE_OF_CONDUCT.md
-rw-r--r--  1 pi sudo 2.4K Mar  9 00:39 CODEOWNERS
lrwxrwxrwx  1 pi sudo   23 Mar  9 00:39 CONTRIBUTING.md -> .github/CONTRIBUTING.md
drwxr-xr-x  4 pi sudo 4.0K Mar  9 00:39 core

-rwxr-xr-x  1 pi sudo  40M Mar 10 20:56 coredns

-rw-r--r--  1 pi sudo 1.4K Mar  9 00:39 coredns.1.md
-rw-r--r--  1 pi sudo  246 Mar  9 00:39 coredns.go
-rw-r--r--  1 pi sudo 3.3K Mar  9 00:39 corefile.5.md
drwxr-xr-x  2 pi sudo 4.0K Mar  9 00:39 coremain
-rw-r--r--  1 pi sudo 2.4K Mar  9 00:39 directives_generate.go
-rw-r--r--  1 pi sudo  254 Mar  9 00:39 Dockerfile
-rw-r--r--  1 pi sudo 2.2K Mar  9 00:39 go.mod
-rw-r--r--  1 pi sudo  62K Mar  9 00:39 go.sum
-rw-r--r--  1 pi 
<think>好的,我现在需要帮助用户从零开始搭建it-helpdesk项目,不使用Composer和Laravel框架,而是通过宝塔面板。用户已经用宝塔新建了站点,网站名是内网地址192.168.29.60,并且使用了root用户,宝塔也创建了数据库。用户想知道接下来该做什么。 首先,我需要理清用户的需求。用户之前尝试使用Composer和Laravel时遇到了依赖问题,现在改用宝塔面板,可能对服务器环境配置不太熟悉。宝塔面板简化了很多操作,但用户可能还是需要指导如何部署项目,特别是涉及到PHP环境、数据库配置、文件上传等步骤。 接下来,我需要考虑用户可能已经完成的部分。用户已经新建了站点,创建了数据库,但可能还没有上传项目代码,配置域名或伪静态,以及设置数据库连接。此外,用户提到使用root用户,可能需要提醒权限问题,虽然宝塔通常会处理权限,但最好确认文件和目录的权限是否正确。 用户的项目是it-helpdesk,可能是一个PHP应用,比如基于ThinkPHP或其他框架,或者是自定义的。需要假设项目结构,可能需要特定的PHP版本,扩展模块(如fileinfo、exif等),伪静态规则(比如Apache的.htaccess或Nginx的配置),以及数据库导入。 可能的步骤包括: 1. 确认PHP版本和安装必要扩展。 2. 上传项目文件到网站目录,并设置正确的文件权限。 3. 配置数据库,创建用户并导入SQL文件。 4. 修改项目中的数据库配置文件。 5. 配置域名或内网访问,设置伪静态。 6. 处理可能出现的权限问题,比如关闭防跨站或调整目录权限。 7. 最后通过浏览器访问安装向导或首页,检查是否正常运行。 需要详细解释每一步的具体操作,尤其是如何通过宝塔面板完成这些步骤,比如在哪里上传文件,如何修改PHP设置,如何导入数据库等。同时,提醒用户使用root用户可能存在安全风险,建议使用普通用户,但宝塔通常会自动处理权限,所以可能只需要注意文件权限是否正确。 另外,用户之前遇到Composer的问题,现在换用宝塔,可能需要确保项目不依赖于Composer,或者用户已经手动处理了依赖,或者项目是完整的无需Composer安装。需要假设用户的项目是直接上传的完整代码,不需要额外的依赖安装。 最后,可能需要检查常见错误,比如数据库连接失败,文件权限不足,PHP扩展缺失等,并提供解决方法,比如检查配置文件中的数据库信息是否正确,重启PHP服务,查看日志文件等。</think>以下是基于宝塔面板搭建 **it-helpdesk** 项目的详细步骤指南(无需 Composer 和 Laravel): --- ### **第一步:准备项目文件** 1. **上传代码到网站目录** - 进入宝塔面板 → 点击左侧 **网站** → 找到你的站点(192.168.29.60)→ 点击 **根目录**。 - 删除默认的 `index.html`(如果有)。 - 将你的 `it-helpdesk` 项目文件(PHP+HTML代码)压缩为 `.zip` 或 `.tar.gz`,通过宝塔文件管理器上传到网站根目录,然后解压。 2. **检查文件权限** - 确保关键目录(如 `runtime`、`uploads` 等)有写入权限(一般设置为 `755` 或 `www` 用户组权限)。 - 宝塔默认用户组为 `www`,可在终端执行(替换路径为你的实际目录): ```bash chown -R www:www /www/wwwroot/192.168.29.60 chmod -R 755 /www/wwwroot/192.168.29.60 ``` --- ### **第二步:配置 PHP 环境** 1. **选择 PHP 版本** - 进入宝塔 → **网站** → 点击站点 → **PHP版本**,选择项目所需的 PHP 版本(建议 7.4+)。 - 如果项目要求特定扩展(如 `fileinfo`、`exif`、`pdo_mysql`),在 **PHP管理** → **安装扩展** 中启用。 2. **关闭防跨站攻击(可选)** - 如果项目涉及文件上传或动态路径,进入 **网站** → 站点 → **防跨站攻击** → 关闭此功能。 --- ### **第三步:配置数据库** 1. **导入数据库文件** - 进入宝塔 → **数据库** → 点击你创建的数据库 → **管理**(phpMyAdmin)。 - 登录后,选择左侧数据库名 → **导入** → 上传项目的 SQL 文件(如 `it-helpdesk.sql`)。 2. **修改数据库连接配置** - 打开项目中的数据库配置文件(通常是 `config.php`、`.env` 或 `database.php`)。 - 填写以下信息(以实际值为准): ```php DB_HOST = 'localhost' // 数据库服务器 DB_NAME = '宝塔创建的数据库名' DB_USER = '宝塔创建的数据库用户名' DB_PASS = '宝塔生成的数据库密码' ``` --- ### **第四步:配置域名访问** 1. **绑定内网地址(可选)** - 进入站点设置 → **域名管理** → 添加 `192.168.29.60`(确保内网其他设备可通过此 IP 访问)。 - 如需通过域名访问,需在内网 DNShosts 文件中解析此 IP。 2. **设置伪静态** - 如果项目使用路由(如 ThinkPHP、CodeIgniter),进入站点 → **伪静态** → 选择对应的规则: - **ThinkPHP**: ```nginx location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; break; } } ``` - **通用 PHP 项目**:直接选择 `thinkphp` 或 `laravel` 规则(宝塔会自动匹配)。 --- ### **第五步:测试访问** 1. **浏览器访问** - 打开 `http://192.168.29.60` 或 `http://192.168.29.60/install`(如果有安装向导)。 - 根据提示完成安装(如创建管理员账号)。 2. **排查常见问题** - **白屏/500错误**:检查 PHP 错误日志(宝塔 → 网站 → 站点 → **日志**)。 - **数据库连接失败**:核对配置文件中的用户名、密码、数据库名。 - **文件权限问题**:确保 `runtime`、`uploads` 等目录可写。 --- ### **附:安全建议** 1. **避免长期使用 root 用户** - 宝塔默认以 `www` 用户运行,无需手动切换,但服务器 SSH 登录建议使用普通用户。 2. **定期备份** - 在宝塔 → **计划任务** 中设置自动备份网站文件和数据库。 3. **防火墙设置** - 仅开放必要端口(如 80, 443),关闭 22 端口或限制内网访问。 --- 按此流程操作后,你的 IT 服务台项目应能正常运行。如果遇到具体报错,可提供截图或日志进一步分析!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wuweijie@apache.org

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值