| Works
PowerDNS-Adminをインストール
PowerDNSをインストールしたので、管理のためのWeb UIです。
GitHubのWikiにいろいろとリストアップされているので、ここからPowerDNS-Adminを選びました。
PowerDNSとはAPIで連携、Python、最近も更新されている、なんとなくモダンな感じという適当な理由です。
以前使っていたPoweradminはちょっと前に見たときはしばらく更新がなくて取り消し線が付いていたと思いますが、また復活していましたね。
それでは早速インストールしていきますが、PowerDNS-Adminのインストール方法はWikiにまとまっているので、あまり迷うこともないと思います。
環境の前提は前回のPowerDNSインストールを完了していること。PowerDNSと同じサーバに同居させます。
まずは、諸般の事情でSELinuxを無効します。
# setenforce 0
次は、PowerDNS用データベースとは別に、PowerDNS-Admin用のデータベースを準備します。
データベース名"pdnsadmin"、ユーザー名"pda"、パスワード"password"としています。
> CREATE DATABASE pdnsadmin CHARACTER SET utf8 COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON pdnsadmin.* TO 'pda'@'%' IDENTIFIED BY 'password';
> FLUSH PRIVILEGES;
> EOF
Python 3.6を使うためIUSレポジトリを使います。
ついでに後で必要となる開発系のパッケージもインストールしておきます。
# yum -y install python36u python36u-devel python36u-pip git python-pip python-devel openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-devel MySQL-python
Python 3.6のパッケージを入れたら、"pip"と"virtualenv"の最新化、"python3"コマンドの作成をしておきます。
# pip install -U virtualenv
# ln -s /usr/bin/python3.6 /usr/bin/python3
Yarnと依存性で必要になるNode.jsをインストールします。
# curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo
# yum -y install yarn
GitHubからPowerDNS-Adminのレポジトリをクローンします。
ここでは"/opt/PowerDNS-Admin"に配置します。
# git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git
PowerDNS-Adminのディレクトリに移動し、Python 3.6用に"virtualenv"を使います。
# virtualenv -p python3 env
Python 3.6の環境に入ってPythonの各種パッケージをインストールします。
(env) # pip install python-dotenv
(env) # pip install -r requirements.txt
設定ファイルのテンプレートをコピーして、データベース情報の修正とリモートアクセスのためネットワーク情報を設定します。
(env) # sed -i "s/SQLA_DB_USER \=.*$/SQLA_DB_USER = \'pda\'/g" ./config.py
(env) # sed -i "s/SQLA_DB_PASSWORD \=.*$/SQLA_DB_PASSWORD = \'password\'/g" ./config.py
(env) # sed -i "s/SQLA_DB_NAME \=.*$/SQLA_DB_NAME = \'pdnsadmin\'/g" ./config.py
(env) # sed -i "s/BIND_ADDRESS \=.*$/BIND_ADDRESS = \'0.0.0.0\'/g" ./config.py
データベースの初期化とAssetファイル生成を実行します。
(env) # flask db upgrade
(env) # yarn install --pure-lockfile
(env) # flask assets build
ファイアウォールでポートを開放してからPowerDNS-Adminを起動します。
(env) # firewall-cmd --reload
(env) # ./run.py
この時点では、フォアグラウンドかつデバッグモードで起動します。
"http://<IPアドレス>:9191" へアクセスするとログイン画面が表示されるので、最初にユーザーを作成してからログインします(最初に作ったユーザーが管理ユーザーになります)。
初回ログイン時に接続するPowerDNSのAPIエンドポイントやキーを設定してください。正しく設定できればPowerDNSの操作ができるはずです。
これで動作確認はできましたが、実際に使うためにはサービス化する必要があると思います。
そこでターミナルに戻って、[Ctrl]+[c]を押下してPowerDNS-Adminを終了してください。
今回はアプリケーションサーバとしてGunicornを使っています。
PowerDNS-Adminの"requirements.txt"にGunicornは記述してあるので、既にインストールされています。
systemdで起動するためユニットファイル"/etc/systemd/system/pdns-admin.service"を以下の内容で作成します。
[Unit]
Description=PowerDNS-Admin with Gunicorn
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/opt/PowerDNS-Admin
ExecStart=/opt/PowerDNS-Admin/env/bin/gunicorn --workers 2 --bind 0.0.0.0:8080 app:app
[Install]
WantedBy=multi-user.target
TCPポート8080を使用していますが、環境に応じて適当に変更してください。
あとはサービスの起動とファイアウォールのポート開放です。
# systemctl start pdns-admin.service
# systemctl enable pdns-admin.service
# firewall-cmd --permanent --add-port=8080/tcp --zone=public
# firewall-cmd --reload
これで"http://<IPアドレス>:8080"でPowerDNS-Adminへアクセスできるようになったはずです。
さらに考えるなら、Webサーバを使ってHTTPSにするとかでしょうか。
とりあえず今回はここまで。