Contents
PowerDNS是建立DNS服務器的軟件,它不僅支持普通的BIND配制文件文件,還可以從MySQL,PostgreSQL,Oracle等數據庫中讀取數據。 Poweradmin則是它的Web管理軟件,以實現WEB管理DNS記錄。 這裏以在Gentoo Linux中的安裝為例。
安裝PowerDNS(net-dns/pdns),poweradmin,PHP,Apache組件
開始安裝并創建PowerDNS,poweradmin用戶和數據庫文件
PostgreSQL的配制過程如下:
postgres@brightmoon ~ $ initdb --encoding UTF8 --locale=zh_CN.UTF-8 -D /srv/postgres/ postgres@brightmoon ~ $ postgres -D /srv/postgres/ & [1] 22904 postgres@brightmoon ~ $ LOG: database system was shut down at 2012-12-01 16:12:44 HKT LOG: database system is ready to accept connections LOG: autovacuum launcher started postgres@brightmoon ~ $ psql psql (9.2.1) Type "help" for help. postgres=# CREATE USER powerdns WITH PASSWORD '654321^%$#@!'; CREATE ROLE postgres=# select * from pg_shadow; usename | usesysid | usecreatedb | usesuper | usecatupd | userepl | passwd | valuntil | useconfig ----------+----------+-------------+----------+-----------+---------+-------------------------------------+----------+----------- postgres | 10 | t | t | t | t | | | powerdns | 16384 | f | f | f | f | md52e403b2f716b7cf1edb457cf4c32206a | | (2 rows) postgres=# CREATE DATABASE powerdns; CREATE DATABASE postgres=# \connect powerdns; You are now connected to database "powerdns" as user "postgres". powerdns=#
PostgreSQL輸入以下psql. PostgreSQL PowerDNS
1 create table domains (
2 id SERIAL PRIMARY KEY,
3 name VARCHAR(255) NOT NULL,
4 master VARCHAR(128) DEFAULT NULL,
5 last_check INT DEFAULT NULL,
6 type VARCHAR(6) NOT NULL,
7 notified_serial INT DEFAULT NULL,
8 account VARCHAR(40) DEFAULT NULL
9 );
10 CREATE UNIQUE INDEX name_index ON domains(name);
11
12 CREATE TABLE records (
13 id SERIAL PRIMARY KEY,
14 domain_id INT DEFAULT NULL,
15 name VARCHAR(255) DEFAULT NULL,
16 type VARCHAR(10) DEFAULT NULL,
17 content VARCHAR(65535) DEFAULT NULL,
18 ttl INT DEFAULT NULL,
19 prio INT DEFAULT NULL,
20 change_date INT DEFAULT NULL,
21 CONSTRAINT domain_exists
22 FOREIGN KEY(domain_id) REFERENCES domains(id)
23 ON DELETE CASCADE,
24 CONSTRAINT c_lowercase_name CHECK (((name)::text = lower((name)::text)))
25 );
26
27 CREATE INDEX rec_name_index ON records(name);
28 CREATE INDEX nametype_index ON records(name,type);
29 CREATE INDEX domain_id ON records(domain_id);
30
31 create table supermasters (
32 ip VARCHAR(25) NOT NULL,
33 nameserver VARCHAR(255) NOT NULL,
34 account VARCHAR(40) DEFAULT NULL
35 );
36
37 -- GRANT SELECT ON supermasters TO powerdns;
38 -- GRANT ALL ON domains TO powerdns;
39 -- GRANT ALL ON domains_id_seq TO powerdns;
40 -- GRANT ALL ON records TO powerdns;
41 -- GRANT ALL ON records_id_seq TO powerdns;
MySQL的配制過程如下
# /etc/init.d/mysql start $ mysql -u root -p CREATE DATABASE powerdns; GRANT ALL ON powerdns.* TO 'power_admin'@'localhost' IDENTIFIED BY '654321^%$#@!'; FLUSH PRIVILEGES; USE powerdns; create table domains ( id INT auto_increment, name VARCHAR(255) NOT NULL, master VARCHAR(128) DEFAULT NULL, last_check INT DEFAULT NULL, type VARCHAR(6) NOT NULL, notified_serial INT DEFAULT NULL, account VARCHAR(40) DEFAULT NULL, primary key (id) ) Engine=InnoDB; CREATE UNIQUE INDEX name_index ON domains(name); CREATE TABLE records ( id INT auto_increment, domain_id INT DEFAULT NULL, name VARCHAR(255) DEFAULT NULL, type VARCHAR(10) DEFAULT NULL, content VARCHAR(64000) DEFAULT NULL, ttl INT DEFAULT NULL, prio INT DEFAULT NULL, change_date INT DEFAULT NULL, primary key(id) ) Engine=InnoDB; CREATE INDEX rec_name_index ON records(name); CREATE INDEX nametype_index ON records(name,type); CREATE INDEX domain_id ON records(domain_id); create table supermasters ( ip VARCHAR(25) NOT NULL, nameserver VARCHAR(255) NOT NULL, account VARCHAR(40) DEFAULT NULL ) Engine=InnoDB;
- 修改pdns.conf文件
$ sed '/\#/d;/^$/d' /etc/powerdns/pdns.conf setgid=pdns setuid=pdns launch=gpgsql gpgsql-host=127.0.0.1 gpgsql-user=powerdns gpgsql-dbname=powerdns gpgsql-password=654321^%$#@! # MySQL引擎配制。 #launch=gmysql #gmysql-host=127.0.0.1 #gmysql-user=powerdns #gmysql-password=654321^%$#@! #gmysql-dbname=powerdns
- 啟動pdns服務,PostgreSQL數據庫。
訪問 http://localhost:8080/poweradmin/install/ 進行安裝。Apache服務器端口這裏改成了8080
在第三步時填寫powerdns數據庫的用戶名和密碼。以及poweradmin(admin)的密碼。
在第四步時為收集信息,需填寫poweradmin的用戶名和密碼及hostmaster等信息。
在第五步時運行如下腳本。
- PostgreSQL運行(示例)
$ createuser -E -P poweradmin Enter password for new role: 654321 Enter it again: 654321 Shall the new role be a superuser? (y/n) n Shall the new user be allowed to create databases? (y/n) n Shall the new user be allowed to create more new users? (y/n) n CREATE USER $ psql powerdns psql> GRANT SELECT, INSERT, DELETE, UPDATE ON supermasters TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON domains TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON records TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON perm_items TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON perm_templ TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON perm_templ_items TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON users TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON zones TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON zone_templ TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON zone_templ_records TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE domains_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE records_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE perm_items_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE perm_templ_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE perm_templ_items_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE users_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE zones_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE zone_templ_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE zone_templ_records_id_seq TO poweradmin;
- MySQL運行此命令。
mysql
在第六步的時候運行以下命令/腳本。
for PostgreSQL
$ createuser -E -P poweradmin Enter password for new role: 654321^%$#@! Enter it again: 654321^%$#@! Shall the new role be a superuser? (y/n) n Shall the new user be allowed to create databases? (y/n) n Shall the new user be allowed to create more new users? (y/n) n CREATE USER $ psql powerdns psql> GRANT SELECT, INSERT, DELETE, UPDATE ON supermasters TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON domains TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON records TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON perm_items TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON perm_templ TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON perm_templ_items TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON users TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON zones TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON zone_templ TO poweradmin; GRANT SELECT, INSERT, DELETE, UPDATE ON zone_templ_records TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE domains_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE records_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE perm_items_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE perm_templ_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE perm_templ_items_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE users_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE zones_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE zone_templ_id_seq TO poweradmin; GRANT USAGE, SELECT ON SEQUENCE zone_templ_records_id_seq TO poweradmin; After you have added the new user, proceed with this installation procedure.
For MySQL(none)
完成安裝
Installation step 7 Now we have finished the configuration, you should (must!) remove the directory "install/" from the Poweradmin root directory. You will not be able to use Poweradmin if it exists. Do it now. After you have removed the directory, you can login to Poweradmin with username "admin" and password "654321^%$#@!". You are highly encouraged to change these as soon as you are logged in.
http://serverfault.com/questions/235963/mamp-unable-to-turn-off-php-e-strict-error-reporting
