如何在 Rocky Linux 上安装 PowerDNS 和 PowerAdmin如何在 Rocky Linux 上安装 PowerDNS 和 PowerAdmin如何在 Rocky Linux 上安装 PowerDNS 和 PowerAdmin如何在 Rocky Linux 上安装 PowerDNS 和 PowerAdmin
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Rocky Linux 上安装 PowerDNS 和 PowerAdmin

在此页

  1. 先决条件
  2. 安装和配置 MariaDB 数据库服务器
  3. 安装和配置 PowerDNS
  4. 安装 PowerDNS-Admin
    1. 安装包依赖
    2. 设置 Python 虚拟环境
    3. 安装 python 依赖项
    4. 使用 MariaDB 数据库配置 PowerDNS-Admin
    5. 生成数据库架构和构建静态文件

    PowerDNS 是一个免费的开源 DNS 服务器软件。它可以用作权威名称服务器和 DNS 递归器。 PowerDNS 使用 C++ 编写,支持多种操作系统,包括 BSD、Linux 和 macOS。

    PowerDNS是一款高端、高性能的DNS服务器,支持BIND等多种后端,以及MySQL/MariaDB、PostgreSQL、Oracle数据库等RDBMS后端。

    PowerDNS 服务器是高性能的,可以处理数万个并发,支持 DNSSEC,并提供与 Lua 的高脚本化。

    在本指南中,我们将向您展示如何在 Rocky Linux 系统上安装 PowerDNS 和 PowerDNS-Admin。我们将使用 MySQL/MariaDB 数据库后端运行 PowerDNS,并设置将用作 PowerDNS 服务器的基于 Web 的管理工具的 PowerDNS-Admin。

    本指南还介绍了为基于 Flask 的项目安装 Python 包以及配置将用作 PowerDNS-Admin Web 应用程序反向代理的 Nginx 和 Gunicorn。

    先决条件

    要开始使用本指南,您需要满足以下要求:

    • Rocky Linux 服务器 - 您可以使用 Rocky Linux v8 或 v9。
    • 具有 sudo/root 管理员权限的非 root 用户。

    安装和配置 MariaDB 数据库服务器

    PowerDNS 是一款可扩展的 DNS 服务器软件,支持 PostgreSQL、MariaDB/MySQL 和 SQLite 等多种后端。对于大型部署,您应该考虑使用 PostgreSQL 或 MySQL/MariaDB 作为数据库后端。

    您现在将开始在 Rocky Linux 服务器上安装和配置 MariaDB 数据库。您将使用 MariaDB 作为数据库后端来设置 PowerDNS。

    默认的 Rocky Linux 存储库提供了多个版本的 MariaDB 服务器包。运行下面的 dnf 命令来安装 MariaDB 数据库服务器。

    sudo dnf install mariadb-server

    当提示确认时,输入 y 确认并按 ENTER 继续。

    安装 MariaDB 服务器后,运行以下 systemctl 命令启动并启用 MariaDB 服务。

    sudo systemctl start mariadb
    sudo systemctl enable mariadb

    现在 MariaDB 服务器应该正在运行并且应该已启用。运行以下命令来验证 MariaDB 服务并确保该服务正在运行。

    sudo systemctl status mariadb

    您将看到以下输出 - MariaDB 服务正在运行并已启用,这意味着该服务将在启动时自动运行。

    现在 MariaDB 服务器正在运行,您将通过命令行工具 mysql_secure_installation 设置和保护 MariaDB 安装。

    运行以下命令以开始保护 MariaDB 服务器部署。

    sudo mysql_secure_installation

    然后,您将被要求提供 MariaDB 服务器的一些配置。

    • 设置 MariaDB root 密码?输入 y 以确认并键入 MariaDB 服务器的新密码,然后重复密码。
    • 禁用 MariaDB root 用户的远程登录?输入 y 确认并禁用它。
    • 从 MariaDB 中删除默认的匿名用户?输入 y 确认。
    • 从 MariaDB 中删除默认数据库测试?再次输入 y 确认。
    • 最后,重新加载表权限以应用新更改?输入 y 确认,MariaDB 将重新加载所有权限并应用新设置。

    现在您已经保护了 MariaDB 部署,接下来您将为 PowerDNS 设置一个新的 MariaDB 数据库和用户。

    首先,运行下面的 mysql 命令以 MariaDB root 用户身份登录到 MariaDB shell。

    sudo mysql -u root -p

    当要求输入密码时,输入您的 MariaDB root 用户的密码。

    接下来,运行以下查询以创建新的 MariaDB 数据库和用户。在此示例中,您将使用用户 pdnsadmin 创建一个新的数据库 pdns,密码为 password。

    CREATE DATABASE pdns;
    GRANT ALL ON pdns.* TO IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;

    现在运行以下查询来验证 MariaDB 用户 [email 的权限。

    SHOW GRANTS FOR ;

    您将看到以下输出 - MariaDB 用户 [email 具有访问 PowerDNS 数据库 pdns 的权限。

    现在键入 quit 退出 MariaDB shell。

    在 MariaDB 服务器运行的情况下,您将使用 MariaDB 数据库后端安装和配置 PowerDNS 服务器。

    安装和配置 PowerDNS

    安装 MariaDB 数据库服务器后,您现在将安装 PowerDNS 服务器并使用 MariaDB 数据库后端设置 PowerDNS。

    对于基于 RHEL 的操作系统,PowerDNS 在 EPEL 存储库中可用。因此,在安装 PowerDNS 之前,您必须将 EPEL 存储库添加到您的系统中。

    运行以下 dnf 命令来安装 EPEL 存储库。

    sudo dnf install epel-release -y

    添加 EPEL 存储库后,运行以下 dnf 命令安装 PowerDNS 和 PowerDNS MySQL 后端。

    sudo dnf install pdns pdns-backend-mysql

    当要求确认时,输入 y 确认并按 ENTER 继续。

    PowerDNS 安装完成后,运行以下 mysql 命令导入 PowerDNS 的数据库架构。以下命令将通过 MariaDB 用户 pdnsadmin 将数据库模式导入到数据库 pdns。

    sudo mysql -u pdnsadmin -p pdns < /usr/share/doc/pdns/schema.mysql.sql

    输入 pdnsadmin 用户的密码,然后按 ENTER 确认并继续。

    接下来,使用以下 nano 编辑器命令编辑 PowerDNS 配置 /etc/pdns/pdns.conf。

    sudo nano /etc/pdns/pdns.conf

    取消注释 MariaDB 后端配置并更改详细信息数据库名称、用户和密码。请务必使用您创建的正确 MariaDB 数据库详细信息。

    #################################
    # launch        Which backends to launch and order to query them in
    #
    launch=gmysql

    gmysql-host=localhost
    gmysql-user=pdnsadmin
    gmysql-password=password
    gmysql-dbname=pdns

    接下来,取消注释 api 并将值更改为 yes。然后,取消注释 api-key 选项并更改默认密钥。以下 PowerDNS API 将用于通过 PowerDNS-Admin Web 应用程序管理 PowerDNS 服务器。

    #################################
    # api   Enable/disable the REST API (including HTTP listener)
    #
    api=yes

    #################################
    # api-key       Static pre-shared authentication key for access to the REST API
    #
    api-key=CHANGEME

    完成后保存文件并退出编辑器。

    配置 PowerDNS 服务器后,运行以下命令来验证 PowerDNS 配置。

    pdns_server --daemon=no --guardian=no --loglevel=9

    您将看到如下输出 - PowerDNS 与 MariaDB 数据库后端的连接成功,您现在可以按 Ctrl+c 终止该过程。

    现在运行以下 systemctl 命令来启动和启用 PowerDNS 服务。

    sudo systemctl start pdns
    sudo systemctl enable pdns

    最后,验证 PowerDNS 服务以确保 PowerDNS 正在运行并已启用。

    sudo systemctl status pdns

    在下面的输出中,您将看到 PowerDNS 服务的当前状态正在运行并已启用,这意味着它将在启动过程中自动运行。

    此时,您已经完成了 PowerDNS 服务器的安装。接下来您将开始安装 PowerDNS-Admin,它将用作 PowerDNS 服务器的 Web 前端管理。

    安装 PowerDNS-Admin

    随着 PowerDNS 的运行,您现在将在 Rocky Linux 服务器上安装和配置 PowerDNS-Admin。 PowerDNS-Admin 是一个基于 Python Flask 的 Web 应用程序,因此 PowerDNS-Admin 的安装与 Flask Web 框架的安装完全相同。

    以下是在 Rocky Linux 上安装 PowerDNS-Admin 必须执行的一些步骤

    • 安装包依赖
    • 设置 Python 虚拟环境
    • 安装 Python 依赖项
    • 使用 MariaDB 数据库配置 PowerDNS-Admin
    • 生成数据库架构和构建静态文件

    现在让我们开始 PowerDNS-Admin 安装

    安装包依赖

    安装 PowerDNS-Admin 的第一步是安装包依赖项,例如 Python3、Pip、Node.js 和 Yarn。

    在开始之前,请运行下面的 dnf 命令以在您的 Rocky Linux 系统上启用 powertools 存储库。

    sudo dnf config-manager --set-enabled powertools

    启用 powertools 存储库后,通过下面的 dnf 命令安装 Python 包。

    sudo dnf install python3 python3-devel python3-pip python3-xmlsec gcc git mariadb-devel openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-devel

    当提示确认时,输入 y 并按 ENTER 继续。

    接下来,通过以下命令将 Node.js 和 Yarn 存储库添加到您的系统。 Node.js 和 Yarn 包将用于为 PowerAdmin Web 应用程序生成静态文件。此示例使用 Node.js v16。

    curl -sL https://rpm.nodesource.com/setup_16.x | bash -
    curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo

    添加存储库后,运行下面的 dnf 命令来安装 Node.js 和 Yarn 包管理器。

    sudo dnf install nodejs yarn

    输入 y 并在提示安装时按 ENTER。

    此外,当提示确认 GPG 密钥时,输入 y 并按 ENTER。

    接下来,运行下面的 pip3 命令更新 Python pip 包并将 virtualenv 安装到您的系统。

    pip3 install -U pip
    pip3 install -U virtualenv

    Python pip 和 virtualenv 现在将安装在 /usr/local/bin 目录中。通过以下命令将目录 /usr/local/bin 添加到系统 PATH 环境变量中。

    echo "export PATH="/usr/local/bin:$PATH"" >> ~/.bashrc

    现在使用以下命令在 ~/.bashrc 文件中应用新更改。您现在应该运行 pip 和 virtualenv 命令。

    source ~/.bashrc

    设置 Python 虚拟环境

    安装包依赖项后,您现在将下载 PowerDNS-Admin 源代码并为 PowerDNS-Admin 设置 Python 虚拟环境。

    使用以下 git 命令将 PowerDNS-Admin 源代码克隆到 /opt/powerdns-admin 目录。

    git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /opt/powerdns-admin

    下载源代码后,将工作目录移动到/opt/powerdns-admin 并创建一个新的Python 虚拟环境flask。

    cd /opt/powerdns-admin
    virtualenv -p python3 flask

    现在通过以下命令激活 flask Python 虚拟环境。

    source flask/bin/activate

    激活后,您现在应该会看到提示变为 (flask) [[email /directory/path]#。

    从这里开始,您的工作环境应该始终在 Python 虚拟环境 flask 中。

    安装 python 依赖项

    在设置 Python 虚拟环境并对其进行分类后,您将通过 pip 命令安装 Python 依赖项。

    运行以下 pip 命令为 PowerDNS-Admin 安装 Python 依赖项。

    pip install python-dotenv
    pip install -r requirements.txt

    现在开始安装 - 这将安装 PowerDNS-Admin 所需的 Python 依赖项,这些依赖项存储在 requirements.txt 文件中。

    现在您已经安装了 Python 依赖项,您已准备好使用 MariaDB 数据库设置和配置 PowerDNS-Admin。

    使用 MariaDB 数据库配置 PowerDNS-Admin

    安装 Python 依赖项后,您现在将使用 MariaDB 数据库设置 PowerDNS-Admin。 PowerDNS-Admin 的数据库详细信息将是与 PowerDNS 服务器相同的数据库。

    现在使用以下 nano 编辑器命令编辑文件 /opt/powerdns-admin/powerdnsadmin/default_config.py。

    nano /opt/powerdns-admin/powerdnsadmin/default_config.py

    更改配置如下。

    SALT = 'RANDOM-GENERATED'
    SECRET_KEY = 'RANDOM-GENERATED'
    BIND_ADDRESS = '0.0.0.0'
    PORT = 9191
    HSTS_ENABLED = False
    OFFLINE_MODE = False

    SQLA_DB_USER = 'pdnsadmin'
    SQLA_DB_PASSWORD = 'password'
    SQLA_DB_HOST = '127.0.0.1'
    SQLA_DB_NAME = 'pdns'
    SQLALCHEMY_TRACK_MODIFICATIONS = True

    完成后保存文件并退出编辑器。

    生成数据库模式和构建静态文件

    在 PowerDNS-Admin 上配置 MariaDB 数据库后,您将迁移数据库并为 PowerDNS-Admin 生成静态文件。

    首先,运行以下命令迁移 PowerDNS-Admin 的数据库。这会将一个新的数据库模式插入到将用于 PowerDNS-Admin 的数据库中。

    export FLASK_APP=powerdnsadmin/__init__.py
    flask db upgrade

    以下是数据库迁移完成后您将获得的输出。

    数据库迁移完成后,运行以下命令为PowerDNS-Admin生成静态文件。

    yarn install --pure-lockfile
    flask assets build

    您可以在下面看到通过 yarn 包管理器安装一些 JavaScript 依赖项以及为 PowerDNS-Admin 生成静态文件的过程。

    生成静态文件后,运行以下命令停用Python虚拟环境。

    deactivate

    此时,您已经完成了带有 MariaDB 数据库服务器的 PowerDNS-Admin 的基本安装。您现在可以通过命令行启动 PowerDNS-Admin 应用程序,也可以将 PowerDNS-Admin 作为 systemd 服务运行。

    为 PowerDNS-Admin 设置 Systemd 服务

    在此步骤中,您将为 PowerDNS-Admin 应用程序设置一个新的 systemd 服务文件。这使您可以通过 systemd 命令轻松管理和维护 PowerDNS-Admin。此外,这将简化 PowerDNS-Admin 的配置。

    首先,使用以下 nano 编辑器命令创建一个新的 systemd 服务文件 /etc/systemd/system/powerdns-admin.service。

    sudo nano /etc/systemd/system/powerdns-admin.service

    将以下配置添加到文件中。使用此配置,您将通过 gunicorn 运行 PowerDNS-Admin 应用程序并作为用户和组运行 pdns。此外,PowerDNS-Admin 将使用 UNIX 套接字文件 /run/powerdns-admin/socket 运行。

    [Unit]
    Description=PowerDNS-Admin
    Requires=powerdns-admin.socket
    After=network.target

    [Service]
    PIDFile=/run/powerdns-admin/pid
    User=pdns
    Group=pdns
    WorkingDirectory=/opt/powerdns-admin
    ExecStartPre=+mkdir -p /run/powerdns-admin/
    ExecStartPre=+chown pdns:pdns -R /run/powerdns-admin/
    ExecStart=/usr/local/bin/gunicorn --pid /run/powerdns-admin/pid --bind unix:/run/powerdns-admin/socket 'powerdnsadmin:create_app()'
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s TERM $MAINPID
    PrivateTmp=true

    [Install]
    WantedBy=multi-user.target

    完成后保存文件并退出编辑器。

    接下来,使用以下 nano 编辑器为 PowerDNS-Admin /etc/systemd/system/powerdns-admin.socket 创建一个新的 systemd 套接字文件。

    sudo nano /etc/systemd/system/powerdns-admin.socket

    将以下配置添加到文件中。

    [Unit]
    Description=PowerDNS-Admin socket

    [Socket]
    ListenStream=/run/powerdns-admin/socket

    [Install]
    WantedBy=sockets.target

    完成后保存文件并退出编辑器。

    现在使用以下 nano 编辑器命令创建一个新的配置文件 /etc/tmpfiles.d/powerdns-admin.conf。

    sudo nano /etc/tmpfiles.d/powerdns-admin.conf

    将以下配置添加到文件中。

    d /run/powerdns-admin 0755 pdns pdns -

    完成后保存文件并退出编辑器。

    添加新的 systemd 服务文件和新配置后,运行以下命令重新加载 systemd 管理器并在 systemd 上应用新的服务文件。

    sudo systemctl daemon-reload

    现在通过以下 systemctl 命令启动并启用 PowerDNS-Admin 服务。 PowerDNS-Admin 现在应该与 gunicorn 一起运行并打开 /run/powerdns-admin/ 目录中可用的套接字文件。

    sudo systemctl start powerdns-admin.socket powerdns-admin.service
    sudo systemctl enable powerdns-admin.socket powerdns-admin.service

    最后,运行以下命令来验证 PowerDNS-Admin 服务并确保该服务正在运行。

    sudo systemctl status powerdns-admin.service powerdns-admin.socket

    在下面的输出中,powerdns-admin.service 和 powerdns-admin.socket 正在运行并且都已启用。两种服务都将在系统启动时自动运行。

    安装 Nginx 作为 PowerDNS-Admin 的反向代理

    在此步骤中,您将设置 Nginx 作为 PowerDNS-Admin 的反向代理。

    运行以下 dnf 命令将 Nginx 安装到您的 Rocky Linux 服务器。出现提示时,输入 y 确认并按 ENTER 继续。

    sudo dnf install nginx

    接下来,使用以下 nano 编辑器创建一个新的 Nginx 服务器块 /etc/nginx/conf.d/pdns.conf。

    sudo nano /etc/nginx/conf.d/pdns.conf

    在文件中添加如下配置,并确保更改域名。此示例将域 pdns.hwdomain.io 用于 PowerDNS-Admin。

    server {
            listen                  80;
            server_name             pdns.hwdomain.io;
            return 301 https://$http_host$request_uri;
    }

    server {
            listen                  443 ssl http2;
            server_name              pdns.hwdomain.io;
            index                   index.html index.htm;
            error_log               /var/log/nginx/error_powerdnsadmin.log error;
            access_log              off;

            ssl_certificate                 /etc/letsencrypt/live/pdns.hwdomain.io/fullchain.pem;
            ssl_certificate_key             /etc/letsencrypt/live/pdns.hwdomain.io/privkey.pem;
            #ssl_dhparam                     path_to_your_dhparam.pem;
            ssl_prefer_server_ciphers       on;
            ssl_ciphers                     'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
            ssl_session_cache               shared:SSL:10m;

            client_max_body_size            10m;
            client_body_buffer_size         128k;
            proxy_redirect                  off;
            proxy_connect_timeout           90;
            proxy_send_timeout              90;
            proxy_read_timeout              90;
            proxy_buffers                   32 4k;
            proxy_buffer_size               8k;
            proxy_set_header                Host $http_host;
            proxy_set_header                X-Scheme $scheme;
            proxy_set_header                X-Real-IP $remote_addr;
            proxy_set_header                X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header                X-Forwarded-Proto $scheme;
            proxy_headers_hash_bucket_size  64;

            location ~ ^/static/  {
                    include         mime.types;
                    root            /opt/powerdns-admin/powerdnsadmin;
                    location        ~* \.(jpg|jpeg|png|gif)$ { expires 365d; }
                    location        ~* ^.+.(css|js)$ { expires 7d; }
            }

            location ~ ^/upload/  {
                    include         mime.types;
                    root            /opt/powerdns-admin;
                    location        ~* \.(jpg|jpeg|png|gif)$ { expires 365d; }
                    location        ~* ^.+.(css|js)$ { expires 7d; }
            }

            location / {
                    proxy_pass              http://unix:/run/powerdns-admin/socket;
                    proxy_read_timeout      120;
                    proxy_connect_timeout   120;
                    proxy_redirect          http:// $scheme://;
            }
    }

    完成后保存文件并退出编辑器。

    接下来,运行以下命令来验证Nginx配置并确保配置正确。您应该会看到输出消息,例如 syntax ok - test is successful。

    sudo nginx -t

    现在运行以下 systemctl 命令来启动和启用 Nginx 服务。

    sudo systemctl start nginx
    sudo systemctl enable nginx

    最后,通过以下命令验证 Nginx 服务以确保该服务正在运行。

    sudo systemctl status nginx

    您应该看到 nginx 服务正在运行并已启用的输出。这样,Nginx 服务将在系统启动时自动运行。

    访问 PowerDNS-Admin 安装

    打开 Web 浏览器并访问 PowerDNS-Admin 安装的域名(即:https://pdns.hwdomain.io),您应该会看到 PowerDNS-Admin 登录页面。

    单击链接创建一个帐户,为 PowerDNS-Admin 设置一个新的管理员用户。

    现在输入新用户、电子邮件和密码的详细信息。然后单击注册以确认。

    创建管理员用户后,您将再次被重定向到 PowerDNS-Admin 登录页面。使用您的新用户管理员和密码登录,然后单击登录。

    您现在应该获得 PowerDNS-Admin 仪表板。 PowerDNS-Admin 正在运行,但仍未连接到 PowerDNS 服务器。

    要使用 PowerDNS-Admin 设置 PowerDNS 服务器,您必须将通过 PowerDNS 服务器配置的 API 密钥添加到 PowerDNS-Admin。

    在 PDNS 设置部分输入 PowerDNS 服务器的详细信息 API,然后单击更新。

    当 PowerDNS-Admin 和 PowerDNS 服务器通过 API 连接时,您的仪表板应类似于以下屏幕截图。

    从这里,您现在可以通过 PowerDNS-Admin 仪表板轻松添加新的 DNS 记录或修改现有的 DNS 记录。

    结论

    在本指南中,您学习了如何在 Rocky Linux 服务器上安装带有 MySQL/MariaDB 数据库的 PowerDNS 服务器。您还了解了 MariaDB 数据库在 Rocky Linux 上的基本部署。最后,您学习了安装和配置 PowerDNS-Admin,它将用作 PowerDNS 服务器的基于 Web 的管理工具。 PowerDNS-Admin 以 Nginx 作为反向代理和 MariaDB 数据库后端运行。

    随着 PowerDNS 服务器和 PowerDNS-Admin 的运行,您现在可以通过 Web 管理仪表板管理您的 DNS 服务器。您可以通过 PowerDNS-Admin 管理仪表板添加、编辑或删除 DNS 记录。

©2015-2025 艾丽卡 support@alaica.com