PowerDNS là phần mềm máy chủ DNS miễn phí và mã nguồn mở. Nó có thể được sử dụng như một máy chủ tên và trình đệ quy DNS có thẩm quyền. PowerDNS được viết bằng C++ và hỗ trợ nhiều hệ điều hành, bao gồm BSD, Linux và macOS.
PowerDNS là máy chủ DNS cao cấp và hiệu suất cao hỗ trợ nhiều loại chương trình phụ trợ như BIND và chương trình phụ trợ RDBMS như MySQL/MariaDB, PostgreSQL và cơ sở dữ liệu Oracle.
Máy chủ PowerDNS có hiệu suất cao, có thể xử lý hàng chục nghìn lượt truy cập đồng thời, hỗ trợ DNSSEC và cung cấp khả năng lập trình cao với Lua.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt PowerDNS và PowerDNS-Admin trên hệ thống Rocky Linux. Chúng tôi sẽ chạy PowerDNS với cơ sở dữ liệu MySQL/MariaDB và thiết lập PowerDNS-Admin sẽ được sử dụng làm công cụ quản lý dựa trên web cho máy chủ PowerDNS.
Hướng dẫn này cũng chỉ ra cách cài đặt các gói Python cho các dự án dựa trên Flask và cấu hình Nginx và Gunicorn sẽ được sử dụng làm proxy ngược cho ứng dụng web PowerDNS-Admin.
Bây giờ bạn sẽ bắt đầu bằng cách cài đặt và cấu hình cơ sở dữ liệu MariaDB trên máy chủ Rocky Linux. Bạn sẽ thiết lập PowerDNS với MariaDB làm cơ sở dữ liệu phụ trợ.
Kho lưu trữ Rocky Linux mặc định cung cấp nhiều phiên bản gói máy chủ MariaDB. Chạy lệnh dnf bên dưới để cài đặt máy chủ cơ sở dữ liệu MariaDB.
Khi được nhắc xác nhận, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22408%22%3E%3C/svg%3E
Sau khi máy chủ MariaDB được cài đặt, hãy chạy lệnh systemctl bên dưới để khởi động và kích hoạt MariaDB dịch vụ.
Bây giờ máy chủ MariaDB sẽ chạy và được bật. Chạy lệnh bên dưới để xác minh dịch vụ MariaDB và đảm bảo rằng dịch vụ đang chạy.
Bạn sẽ thấy đầu ra sau - Dịch vụ MariaDB đang chạy và được bật, nghĩa là dịch vụ sẽ tự động chạy khi khởi động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22295%22%3E%3C/svg%3E
Bây giờ máy chủ MariaDB đang chạy, sau đó bạn sẽ thiết lập và bảo mật cài đặt MariaDB thông qua công cụ dòng lệnh 'mysql_secure_installation'.
Chạy lệnh sau để bắt đầu bảo mật triển khai máy chủ MariaDB.
Sau đó, bạn sẽ được yêu cầu cung cấp một số cấu hình của máy chủ MariaDB.
Để bắt đầu, hãy chạy lệnh mysql bên dưới để đăng nhập vào shell MariaDB với tư cách là người dùng gốc MariaDB.
Khi được yêu cầu nhập mật khẩu, hãy nhập mật khẩu của người dùng gốc MariaDB của bạn.
Tiếp theo, hãy chạy các truy vấn sau để tạo cơ sở dữ liệu MariaDB và người dùng mới. Trong ví dụ này, bạn sẽ tạo một cơ sở dữ liệu pdns mới với người dùng pdnsadmin và mật khẩu là 'password'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22174%22%3E%3C/svg%3E
Bây giờ hãy chạy các truy vấn sau để xác minh các đặc quyền của người dùng MariaDB pdnsadmin@localhost. Điều này sẽ hiển thị cho bạn danh sách các đặc quyền của người dùng MariaDB pdnsadmin@localhost.
Bạn sẽ thấy kết quả sau - Người dùng MariaDB pdnsadmin@localhost có các đặc quyền đối với pdns của cơ sở dữ liệu PowerDNS.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22165%22%3E%3C/svg%3E
Bây giờ hãy nhập 'quit' để thoát khỏi shell MariaDB.
Khi máy chủ MariaDB đang chạy, bạn sẽ cài đặt và cấu hình máy chủ PowerDNS với phần phụ trợ cơ sở dữ liệu MariaDB.
Đối với các hệ điều hành dựa trên RHEL, PowerDNS có sẵn trên kho lưu trữ EPEL. Vì vậy, trước khi cài đặt PowerDNS, bạn phải thêm kho lưu trữ EPEL vào hệ thống của mình.
Chạy lệnh dnf sau để cài đặt kho lưu trữ EPEL.
Sau khi kho lưu trữ EPEL được thêm vào, hãy chạy lệnh dnf sau để cài đặt PowerDNS và PowerDNS MySQL backend.
Khi được yêu cầu xác nhận, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22253%22%3E%3C/svg%3E
Sau khi cài đặt PowerDNS hoàn tất, hãy chạy lệnh mysql sau để nhập lược đồ cơ sở dữ liệu cho PowerDNS. Lệnh sau sẽ nhập lược đồ cơ sở dữ liệu thông qua người dùng MariaDB pdnsadmin vào cơ sở dữ liệu pdns.
Nhập mật khẩu cho người dùng pdnsadmin và nhấn ENTER để xác nhận và tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22114%22%3E%3C/svg%3E
Tiếp theo, chỉnh sửa cấu hình PowerDNS '/etc/pdns/pdns.conf' bằng lệnh nano editor sau.
Bỏ chú thích cấu hình phụ trợ MariaDB và thay đổi tên cơ sở dữ liệu, người dùng và mật khẩu chi tiết. Hãy đảm bảo sử dụng đúng thông tin chi tiết về cơ sở dữ liệu MariaDB mà bạn đã tạo.
Tiếp theo, bỏ ghi chú 'api' và thay đổi giá trị thành 'yes'. Sau đó, bỏ ghi chú tùy chọn 'api-key' và thay đổi khóa mặc định. API PowerDNS sau đây sẽ được sử dụng để quản lý máy chủ PowerDNS thông qua ứng dụng web PowerDNS-Admin.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Sau khi cấu hình máy chủ PowerDNS, hãy chạy lệnh sau để xác minh cấu hình PowerDNS.
Bạn sẽ thấy đầu ra như sau - Kết nối PowerDNS với cơ sở dữ liệu MariaDB đã thành công, bây giờ bạn có thể nhấn 'Ctrl+c' để kết thúc quá trình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22187%22%3E%3C/svg%3E
Bây giờ hãy chạy lệnh systemctl sau để khởi động và kích hoạt PowerDNS dịch vụ.
Cuối cùng, hãy xác minh dịch vụ PowerDNS để đảm bảo rằng PowerDNS đang chạy và được bật.
Trong đầu ra bên dưới, bạn sẽ thấy trạng thái hiện tại của dịch vụ PowerDNS đang chạy và được bật, điều này có nghĩa là dịch vụ sẽ tự động chạy khi quá trình khởi động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22275%22%3E%3C/svg%3E
Lúc này, bạn đã hoàn tất việc cài đặt máy chủ PowerDNS. Tiếp theo, bạn sẽ bắt đầu cài đặt PowerDNS-Admin, được sử dụng làm giao diện quản lý web cho máy chủ PowerDNS.
Dưới đây là một số bước bạn phải thực hiện để cài đặt PowerDNS-Admin trên Rocky Linux
Trước khi bắt đầu, hãy chạy lệnh dnf bên dưới để bật kho lưu trữ 'powertools' trên Rocky Linux của bạn hệ thống.
Sau khi kích hoạt kho lưu trữ 'powertools', hãy cài đặt các gói Python thông qua lệnh dnf bên dưới.
Khi được nhắc xác nhận, hãy nhập y và nhấn ENTER để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22298%22%3E%3C/svg%3E
Tiếp theo, thêm kho lưu trữ Node.js và Yarn vào hệ thống của bạn thông qua lệnh bên dưới. Gói Node.js và Yarn sẽ được sử dụng để tạo các tệp tĩnh cho ứng dụng web PowerAdmin. Ví dụ này sử dụng Node.js v16.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22236%22%3E%3C/svg%3E
Sau khi thêm kho lưu trữ, hãy chạy lệnh dnf bên dưới để cài đặt gói Node.js và Yarn quản lý.
Nhập y và nhấn ENTER khi được nhắc cài đặt.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22198%22%3E%3C/svg%3E
Ngoài ra, khi được nhắc xác nhận khóa GPG, hãy nhập y và nhấn ENTER.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22678%22%20height=%22317%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh pip3 bên dưới để cập nhật gói pip Python và cài đặt virtualenv vào hệ thống của bạn.
Python pip và virtualenv bây giờ sẽ được cài đặt trong thư mục '/usr/local/bin'. Thêm thư mục '/usr/local/bin' vào biến môi trường hệ thống $PATH thông qua lệnh bên dưới.
Bây giờ hãy áp dụng những thay đổi mới trong tệp '~/.bashrc' bằng lệnh bên dưới. Bây giờ bạn nên chạy lệnh 'pip' và 'virtualenv'.
Sao chép mã nguồn PowerDNS-Admin vào thư mục '/opt/powerdns-admin' bằng lệnh git sau lệnh.
Sau khi tải xuống mã nguồn, hãy di chuyển thư mục làm việc đến '/opt/powerdns-admin' và tạo một môi trường ảo Python mới 'flask'.
Bây giờ hãy kích hoạt môi trường ảo Python 'flask' thông qua lệnh bên dưới.
Khi được kích hoạt, bây giờ bạn sẽ thấy dấu nhắc trở thành như thế này '(flask) [user@hostname /directory/path]#'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22654%22%20height=%22310%22%3E%3C/svg%3E
Từ đây, môi trường làm việc của bạn sẽ luôn ở trong môi trường ảo Python 'flask'.
Chạy lệnh pip sau để cài đặt các phụ thuộc Python cho PowerDNS-Admin.
Bây giờ quá trình cài đặt sẽ bắt đầu - Thao tác này sẽ cài đặt các phụ thuộc Python cần thiết cho PowerDNS-Admin, được lưu trữ trong tệp 'requirements.txt'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22715%22%20height=%22282%22%3E%3C/svg%3E
Bây giờ bạn đã cài đặt các phụ thuộc Python, bạn đã sẵn sàng để thiết lập và cấu hình PowerDNS-Admin với cơ sở dữ liệu MariaDB.
Bây giờ hãy chỉnh sửa tệp '/opt/powerdns-admin/powerdnsadmin/default_config.py' bằng lệnh trình chỉnh sửa nano sau.
Thay đổi cấu hình thành bên dưới.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Đầu tiên, hãy chạy lệnh sau để di chuyển cơ sở dữ liệu của PowerDNS-Admin. Lệnh này sẽ chèn một lược đồ cơ sở dữ liệu mới vào cơ sở dữ liệu sẽ được sử dụng cho PowerDNS-Admin.
Dưới đây là kết quả bạn sẽ nhận được khi quá trình di chuyển cơ sở dữ liệu hoàn tất.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22425%22%3E%3C/svg%3E
Sau khi quá trình di chuyển cơ sở dữ liệu hoàn tất, hãy chạy lệnh sau để tạo các tệp tĩnh cho PowerDNS-Admin.
Dưới đây, bạn có thể thấy quá trình cài đặt một số phụ thuộc JavaScript thông qua trình quản lý gói yarn và quá trình tạo tệp tĩnh cho PowerDNS-Admin.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22332%22%3E%3C/svg%3E
Khi các tệp tĩnh được tạo, hãy chạy lệnh sau để hủy kích hoạt máy ảo Python environment.
Tại thời điểm này, bạn đã hoàn tất cài đặt cơ bản PowerDNS-Admin với máy chủ cơ sở dữ liệu MariaDB. Bây giờ bạn có thể khởi động ứng dụng PowerDNS-Admin thông qua dòng lệnh, nhưng bạn cũng có thể chạy PowerDNS-Admin dưới dạng dịch vụ systemd.
Để bắt đầu, hãy tạo một tệp dịch vụ systemd mới '/etc/systemd/system/powerdns-admin.service' bằng lệnh nano editor sau.
Thêm cấu hình bên dưới vào tệp. Với cấu hình này, bạn sẽ chạy ứng dụng PowerDNS-Admin thông qua gunicorn và chạy với tư cách là người dùng và nhóm 'pdns'. Ngoài ra, PowerDNS-Admin sẽ được chạy với tệp socket UNIX '/run/powerdns-admin/socket'.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Tiếp theo, tạo tệp socket systemd mới cho PowerDNS-Admin '/etc/systemd/system/powerdns-admin.socket' bằng cách sử dụng nano bên dưới biên tập viên.
Thêm cấu hình sau vào tệp.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Bây giờ hãy tạo tệp cấu hình mới '/etc/tmpfiles.d/powerdns-admin.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Thêm cấu hình sau vào tệp.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Sau khi thêm tệp dịch vụ systemd mới và cấu hình mới, hãy chạy lệnh sau để tải lại trình quản lý systemd và áp dụng các tệp dịch vụ mới trên systemd.
Bây giờ hãy khởi động và bật dịch vụ PowerDNS-Admin thông qua lệnh systemctl sau lệnh. PowerDNS-Admin hiện sẽ chạy với gunicorn và mở tệp socket có sẵn tại thư mục '/run/powerdns-admin/'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22736%22%20height=%22300%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh sau để xác minh Dịch vụ PowerDNS-Admin và đảm bảo rằng dịch vụ đang chạy.
Trong kết quả đầu ra bên dưới, powerdns-admin.service và powerdns-admin.socket đang chạy và cả hai đều được bật. Cả hai dịch vụ sẽ tự động chạy khi hệ thống khởi động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22412%22%3E%3C/svg%3E
Chạy lệnh dnf sau để cài đặt Nginx vào máy chủ Rocky Linux của bạn. Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.
Tiếp theo, tạo khối máy chủ Nginx mới '/etc/nginx/conf.d/pdns.conf' bằng trình chỉnh sửa nano sau.
Thêm cấu hình sau vào tệp và đảm bảo thay đổi tên miền. Ví dụ này sử dụng tên miền 'pdns.howtoforge.local' cho PowerDNS-Admin.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Tiếp theo, chạy lệnh sau để xác minh cấu hình Nginx và đảm bảo cấu hình là chính xác. Bạn sẽ thấy thông báo đầu ra như 'cú pháp ok - thử nghiệm thành công'.
Bây giờ hãy chạy lệnh systemctl sau để khởi động và kích hoạt dịch vụ Nginx.
Cuối cùng, hãy xác minh dịch vụ Nginx thông qua lệnh sau để đảm bảo dịch vụ đang chạy.
Bạn sẽ thấy đầu ra cho biết dịch vụ nginx đang chạy và được bật. Với lệnh này, dịch vụ Nginx sẽ tự động chạy khi hệ thống khởi động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22227%22%3E%3C/svg%3E
Nhấp vào liên kết 'Tạo tài khoản' để thiết lập người dùng quản trị viên mới cho PowerDNS-Admin.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22635%22%20height=%22492%22%3E%3C/svg%3E
Bây giờ hãy nhập thông tin người dùng mới, email và mật khẩu. Sau đó nhấp vào 'Đăng ký' để xác nhận.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22640%22%20height=%22700%22%3E%3C/svg%3E
Sau khi người dùng quản trị viên được tạo, bạn sẽ được chuyển hướng lại đến trang đăng nhập PowerDNS-Admin. Đăng nhập bằng tên người dùng quản trị và mật khẩu mới của bạn, sau đó nhấp vào 'Đăng nhập'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22638%22%20height=%22522%22%3E%3C/svg%3E
Bây giờ bạn sẽ nhận được bảng điều khiển PowerDNS-Admin. PowerDNS-Admin đang chạy, nhưng vẫn chưa được kết nối với máy chủ PowerDNS.
Để thiết lập máy chủ PowerDNS với PowerDNS-Admin, bạn phải thêm khóa API mà bạn đã định cấu hình qua máy chủ PowerDNS vào PowerDNS-Admin.
Nhập API chi tiết của máy chủ PowerDNS vào phần 'Cài đặt PDNS' và nhấp vào 'Cập nhật'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22408%22%3E%3C/svg%3E
Khi PowerDNS-Admin và máy chủ PowerDNS được kết nối qua API, bảng điều khiển của bạn sẽ trông như sau ảnh chụp màn hình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22457%22%3E%3C/svg%3E
Từ đây, giờ đây bạn có thể dễ dàng thêm bản ghi DNS mới hoặc sửa đổi bản ghi DNS hiện có thông qua bảng điều khiển PowerDNS-Admin.
Với máy chủ PowerDNS và PowerDNS-Admin đang chạy, giờ đây bạn có thể quản lý máy chủ DNS của mình thông qua bảng điều khiển quản trị web. Bạn có thể thêm, chỉnh sửa hoặc xóa bản ghi DNS thông qua bảng điều khiển quản trị PowerDNS-Admin.
PowerDNS là máy chủ DNS cao cấp và hiệu suất cao hỗ trợ nhiều loại chương trình phụ trợ như BIND và chương trình phụ trợ RDBMS như MySQL/MariaDB, PostgreSQL và cơ sở dữ liệu Oracle.
Máy chủ PowerDNS có hiệu suất cao, có thể xử lý hàng chục nghìn lượt truy cập đồng thời, hỗ trợ DNSSEC và cung cấp khả năng lập trình cao với Lua.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt PowerDNS và PowerDNS-Admin trên hệ thống Rocky Linux. Chúng tôi sẽ chạy PowerDNS với cơ sở dữ liệu MySQL/MariaDB và thiết lập PowerDNS-Admin sẽ được sử dụng làm công cụ quản lý dựa trên web cho máy chủ PowerDNS.
Hướng dẫn này cũng chỉ ra cách cài đặt các gói Python cho các dự án dựa trên Flask và cấu hình Nginx và Gunicorn sẽ được sử dụng làm proxy ngược cho ứng dụng web PowerDNS-Admin.
Điều kiện tiên quyết
Để bắt đầu với hướng dẫn này, bạn sẽ cần các yêu cầu sau:- Máy chủ Rocky Linux - Bạn có thể sử dụng Rocky Linux v8 hoặc v9.
- Người dùng không phải root có quyền quản trị viên sudo/root.
Cài đặt và cấu hình máy chủ cơ sở dữ liệu MariaDB
PowerDNS là phần mềm máy chủ DNS có khả năng mở rộng hỗ trợ nhiều nền tảng như PostgreSQL, MariaDB/MySQL và SQLite. Đối với các triển khai lớn, bạn nên cân nhắc sử dụng PostgreSQL hoặc MySQL/MariaDB làm cơ sở dữ liệu phụ trợ.Bây giờ bạn sẽ bắt đầu bằng cách cài đặt và cấu hình cơ sở dữ liệu MariaDB trên máy chủ Rocky Linux. Bạn sẽ thiết lập PowerDNS với MariaDB làm cơ sở dữ liệu phụ trợ.
Kho lưu trữ Rocky Linux mặc định cung cấp nhiều phiên bản gói máy chủ MariaDB. Chạy lệnh dnf bên dưới để cài đặt máy chủ cơ sở dữ liệu MariaDB.
Mã:
sudo dnf install mariadb-server
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22408%22%3E%3C/svg%3E
Sau khi máy chủ MariaDB được cài đặt, hãy chạy lệnh systemctl bên dưới để khởi động và kích hoạt MariaDB dịch vụ.
Mã:
sudo systemctl start mariadb
sudo systemctl enable mariadb
Mã:
sudo systemctl status mariadb
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22295%22%3E%3C/svg%3E
Bây giờ máy chủ MariaDB đang chạy, sau đó bạn sẽ thiết lập và bảo mật cài đặt MariaDB thông qua công cụ dòng lệnh 'mysql_secure_installation'.
Chạy lệnh sau để bắt đầu bảo mật triển khai máy chủ MariaDB.
Mã:
sudo mysql_secure_installation
- Thiết lập mật khẩu gốc MariaDB? Nhập y để xác nhận và nhập mật khẩu mới cho máy chủ MariaDB của bạn, sau đó nhập lại mật khẩu.
- Vô hiệu hóa đăng nhập từ xa cho người dùng gốc MariaDB? Nhập y để xác nhận và vô hiệu hóa.
- Xóa người dùng ẩn danh mặc định khỏi MariaDB? Nhập y để xác nhận.
- Xóa bài kiểm tra cơ sở dữ liệu mặc định khỏi MariaDB? Nhập y một lần nữa để xác nhận.
- Cuối cùng, tải lại các đặc quyền của bảng để áp dụng các thay đổi mới? Nhập y để xác nhận và MariaDB sẽ tải lại tất cả các đặc quyền và áp dụng các thiết lập mới.
Để bắt đầu, hãy chạy lệnh mysql bên dưới để đăng nhập vào shell MariaDB với tư cách là người dùng gốc MariaDB.
Mã:
sudo mysql -u root -p
Tiếp theo, hãy chạy các truy vấn sau để tạo cơ sở dữ liệu MariaDB và người dùng mới. Trong ví dụ này, bạn sẽ tạo một cơ sở dữ liệu pdns mới với người dùng pdnsadmin và mật khẩu là 'password'.
Mã:
CREATE DATABASE pdns;
GRANT ALL ON pdns.* TO pdnsadmin@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22174%22%3E%3C/svg%3E
Bây giờ hãy chạy các truy vấn sau để xác minh các đặc quyền của người dùng MariaDB pdnsadmin@localhost. Điều này sẽ hiển thị cho bạn danh sách các đặc quyền của người dùng MariaDB pdnsadmin@localhost.
Mã:
SHOW GRANTS FOR pdnsadmin@localhost;
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22165%22%3E%3C/svg%3E
Bây giờ hãy nhập 'quit' để thoát khỏi shell MariaDB.
Khi máy chủ MariaDB đang chạy, bạn sẽ cài đặt và cấu hình máy chủ PowerDNS với phần phụ trợ cơ sở dữ liệu MariaDB.
Cài đặt và cấu hình PowerDNS
Sau khi cài đặt máy chủ cơ sở dữ liệu MariaDB, bây giờ bạn sẽ cài đặt máy chủ PowerDNS và thiết lập PowerDNS với phần phụ trợ cơ sở dữ liệu MariaDB.Đối với các hệ điều hành dựa trên RHEL, PowerDNS có sẵn trên kho lưu trữ EPEL. Vì vậy, trước khi cài đặt PowerDNS, bạn phải thêm kho lưu trữ EPEL vào hệ thống của mình.
Chạy lệnh dnf sau để cài đặt kho lưu trữ EPEL.
Mã:
sudo dnf install epel-release -y
Mã:
sudo dnf install pdns pdns-backend-mysql
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22253%22%3E%3C/svg%3E
Sau khi cài đặt PowerDNS hoàn tất, hãy chạy lệnh mysql sau để nhập lược đồ cơ sở dữ liệu cho PowerDNS. Lệnh sau sẽ nhập lược đồ cơ sở dữ liệu thông qua người dùng MariaDB pdnsadmin vào cơ sở dữ liệu pdns.
Mã:
sudo mysql -u pdnsadmin -p pdns < /usr/share/doc/pdns/schema.mysql.sql
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22114%22%3E%3C/svg%3E
Tiếp theo, chỉnh sửa cấu hình PowerDNS '/etc/pdns/pdns.conf' bằng lệnh nano editor sau.
Mã:
sudo nano /etc/pdns/pdns.conf
Mã:
#################################
# 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
Mã:
#################################
# 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
Sau khi cấu hình máy chủ PowerDNS, hãy chạy lệnh sau để xác minh cấu hình PowerDNS.
Mã:
pdns_server --daemon=no --guardian=no --loglevel=9
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22187%22%3E%3C/svg%3E
Bây giờ hãy chạy lệnh systemctl sau để khởi động và kích hoạt PowerDNS dịch vụ.
Mã:
sudo systemctl start pdns
sudo systemctl enable pdns
Mã:
sudo systemctl status pdns
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22275%22%3E%3C/svg%3E
Lúc này, bạn đã hoàn tất việc cài đặt máy chủ PowerDNS. Tiếp theo, bạn sẽ bắt đầu cài đặt PowerDNS-Admin, được sử dụng làm giao diện quản lý web cho máy chủ PowerDNS.
Cài đặt PowerDNS-Admin
Khi PowerDNS đang chạy, bây giờ bạn sẽ cài đặt và cấu hình PowerDNS-Admin trên máy chủ Rocky Linux. PowerDNS-Admin là ứng dụng web dựa trên Python Flask, vì vậy quá trình cài đặt PowerDNS-Admin khá giống với quá trình cài đặt khung web Flask.Dưới đây là một số bước bạn phải thực hiện để cài đặt PowerDNS-Admin trên Rocky Linux
- Cài đặt các gói phụ thuộc
- Thiết lập môi trường ảo Python
- Cài đặt các gói phụ thuộc
- Cấu hình PowerDNS-Admin với cơ sở dữ liệu MariaDB
- Tạo lược đồ cơ sở dữ liệu và xây dựng các tệp tĩnh
Cài đặt các gói phụ thuộc
Bước đầu tiên cần thực hiện để cài đặt PowerDNS-Admin là cài đặt các gói phụ thuộc như Python3, Pip, Node.js và Yarn.Trước khi bắt đầu, hãy chạy lệnh dnf bên dưới để bật kho lưu trữ 'powertools' trên Rocky Linux của bạn hệ thống.
Mã:
sudo dnf config-manager --set-enabled powertools
Mã:
sudo dnf install python3 python3-devel python3-pip python3-xmlsec gcc git mariadb-devel openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-devel
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22298%22%3E%3C/svg%3E
Tiếp theo, thêm kho lưu trữ Node.js và Yarn vào hệ thống của bạn thông qua lệnh bên dưới. Gói Node.js và Yarn sẽ được sử dụng để tạo các tệp tĩnh cho ứng dụng web PowerAdmin. Ví dụ này sử dụng Node.js v16.
Mã:
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
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22236%22%3E%3C/svg%3E
Sau khi thêm kho lưu trữ, hãy chạy lệnh dnf bên dưới để cài đặt gói Node.js và Yarn quản lý.
Mã:
sudo dnf install nodejs yarn
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22198%22%3E%3C/svg%3E
Ngoài ra, khi được nhắc xác nhận khóa GPG, hãy nhập y và nhấn ENTER.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22678%22%20height=%22317%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh pip3 bên dưới để cập nhật gói pip Python và cài đặt virtualenv vào hệ thống của bạn.
Mã:
pip3 install -U pip
pip3 install -U virtualenv
Mã:
echo "export PATH="/usr/local/bin:$PATH"" >> ~/.bashrc
Mã:
source ~/.bashrc
Thiết lập Môi trường ảo Python
Sau khi cài đặt các gói phụ thuộc, bây giờ bạn sẽ tải xuống mã nguồn PowerDNS-Admin và thiết lập môi trường ảo Python cho PowerDNS-Admin.Sao chép mã nguồn PowerDNS-Admin vào thư mục '/opt/powerdns-admin' bằng lệnh git sau lệnh.
Mã:
git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /opt/powerdns-admin
Mã:
cd /opt/powerdns-admin
virtualenv -p python3 flask
Mã:
source flask/bin/activate
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22654%22%20height=%22310%22%3E%3C/svg%3E
Từ đây, môi trường làm việc của bạn sẽ luôn ở trong môi trường ảo Python 'flask'.
Cài đặt các phụ thuộc python
Sau khi thiết lập môi trường ảo Python và cate nó, bạn sẽ cài đặt các phụ thuộc Python thông qua lệnh pip.Chạy lệnh pip sau để cài đặt các phụ thuộc Python cho PowerDNS-Admin.
Mã:
pip install python-dotenv
pip install -r requirements.txt
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22715%22%20height=%22282%22%3E%3C/svg%3E
Bây giờ bạn đã cài đặt các phụ thuộc Python, bạn đã sẵn sàng để thiết lập và cấu hình PowerDNS-Admin với cơ sở dữ liệu MariaDB.
Cấu hình PowerDNS-Admin với Cơ sở dữ liệu MariaDB
Sau khi cài đặt các phụ thuộc Python, bây giờ bạn sẽ thiết lập PowerDNS-Admin với MariaDB cơ sở dữ liệu. Chi tiết cơ sở dữ liệu cho PowerDNS-Admin sẽ giống với cơ sở dữ liệu của máy chủ PowerDNS.Bây giờ hãy chỉnh sửa tệp '/opt/powerdns-admin/powerdnsadmin/default_config.py' bằng lệnh trình chỉnh sửa nano sau.
Mã:
nano /opt/powerdns-admin/powerdnsadmin/default_config.py
Mã:
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
Tạo lược đồ cơ sở dữ liệu và xây dựng tệp tĩnh
Sau khi cấu hình cơ sở dữ liệu MariaDB trên PowerDNS-Admin, bạn sẽ di chuyển cơ sở dữ liệu và tạo tệp tĩnh cho PowerDNS-Admin.Đầu tiên, hãy chạy lệnh sau để di chuyển cơ sở dữ liệu của PowerDNS-Admin. Lệnh này sẽ chèn một lược đồ cơ sở dữ liệu mới vào cơ sở dữ liệu sẽ được sử dụng cho PowerDNS-Admin.
Mã:
export FLASK_APP=powerdnsadmin/__init__.py
flask db upgrade
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22425%22%3E%3C/svg%3E
Sau khi quá trình di chuyển cơ sở dữ liệu hoàn tất, hãy chạy lệnh sau để tạo các tệp tĩnh cho PowerDNS-Admin.
Mã:
yarn install --pure-lockfile
flask assets build
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22332%22%3E%3C/svg%3E
Khi các tệp tĩnh được tạo, hãy chạy lệnh sau để hủy kích hoạt máy ảo Python environment.
Mã:
deactivate
Thiết lập dịch vụ Systemd cho PowerDNS-Admin
Trong bước này, bạn sẽ thiết lập tệp dịch vụ systemd mới cho ứng dụng PowerDNS-Admin. Điều này cho phép bạn dễ dàng quản lý và duy trì PowerDNS-Admin thông qua lệnh systemd. Ngoài ra, điều này sẽ đơn giản hóa cấu hình của PowerDNS-Admin.Để bắt đầu, hãy tạo một tệp dịch vụ systemd mới '/etc/systemd/system/powerdns-admin.service' bằng lệnh nano editor sau.
Mã:
sudo nano /etc/systemd/system/powerdns-admin.service
Mã:
[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
Tiếp theo, tạo tệp socket systemd mới cho PowerDNS-Admin '/etc/systemd/system/powerdns-admin.socket' bằng cách sử dụng nano bên dưới biên tập viên.
Mã:
sudo nano /etc/systemd/system/powerdns-admin.socket
Mã:
[Unit]
Description=PowerDNS-Admin socket
[Socket]
ListenStream=/run/powerdns-admin/socket
[Install]
WantedBy=sockets.target
Bây giờ hãy tạo tệp cấu hình mới '/etc/tmpfiles.d/powerdns-admin.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/tmpfiles.d/powerdns-admin.conf
Mã:
d /run/powerdns-admin 0755 pdns pdns -
Sau khi thêm tệp dịch vụ systemd mới và cấu hình mới, hãy chạy lệnh sau để tải lại trình quản lý systemd và áp dụng các tệp dịch vụ mới trên systemd.
Mã:
sudo systemctl daemon-reload
Mã:
sudo systemctl start powerdns-admin.socket powerdns-admin.service
sudo systemctl enable powerdns-admin.socket powerdns-admin.service
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22736%22%20height=%22300%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh sau để xác minh Dịch vụ PowerDNS-Admin và đảm bảo rằng dịch vụ đang chạy.
Mã:
sudo systemctl status powerdns-admin.service powerdns-admin.socket
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22412%22%3E%3C/svg%3E
Cài đặt Nginx làm Proxy ngược cho PowerDNS-Admin
Trong bước này, bạn sẽ thiết lập Nginx làm proxy ngược cho PowerDNS-Admin.Chạy lệnh dnf sau để cài đặt Nginx vào máy chủ Rocky Linux của bạn. Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.
Mã:
sudo dnf install nginx
Mã:
sudo nano /etc/nginx/conf.d/pdns.conf
Mã:
server {
listen 80;
server_name pdns.howtoforge.local;
return 301 https://$http_host$request_uri;
}
server {
listen 443 ssl http2;
server_name pdns.howtoforge.local;
index index.html index.htm;
error_log /var/log/nginx/error_powerdnsadmin.log error;
access_log off;
ssl_certificate /etc/letsencrypt/live/pdns.howtoforge.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pdns.howtoforge.local/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://;
}
}
Tiếp theo, chạy lệnh sau để xác minh cấu hình Nginx và đảm bảo cấu hình là chính xác. Bạn sẽ thấy thông báo đầu ra như 'cú pháp ok - thử nghiệm thành công'.
Mã:
sudo nginx -t
Mã:
sudo systemctl start nginx
sudo systemctl enable nginx
Cuối cùng, hãy xác minh dịch vụ Nginx thông qua lệnh sau để đảm bảo dịch vụ đang chạy.
Mã:
sudo systemctl status nginx
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22227%22%3E%3C/svg%3E
Truy cập cài đặt PowerDNS-Admin
Mở trình duyệt web và truy cập tên miền cài đặt PowerDNS-Admin của bạn (ví dụ: https://pdns.howtoforge.local) và bạn sẽ thấy trang đăng nhập PowerDNS-Admin.Nhấp vào liên kết 'Tạo tài khoản' để thiết lập người dùng quản trị viên mới cho PowerDNS-Admin.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22635%22%20height=%22492%22%3E%3C/svg%3E
Bây giờ hãy nhập thông tin người dùng mới, email và mật khẩu. Sau đó nhấp vào 'Đăng ký' để xác nhận.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22640%22%20height=%22700%22%3E%3C/svg%3E
Sau khi người dùng quản trị viên được tạo, bạn sẽ được chuyển hướng lại đến trang đăng nhập PowerDNS-Admin. Đăng nhập bằng tên người dùng quản trị và mật khẩu mới của bạn, sau đó nhấp vào 'Đăng nhập'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22638%22%20height=%22522%22%3E%3C/svg%3E
Bây giờ bạn sẽ nhận được bảng điều khiển PowerDNS-Admin. PowerDNS-Admin đang chạy, nhưng vẫn chưa được kết nối với máy chủ PowerDNS.
Để thiết lập máy chủ PowerDNS với PowerDNS-Admin, bạn phải thêm khóa API mà bạn đã định cấu hình qua máy chủ PowerDNS vào PowerDNS-Admin.
Nhập API chi tiết của máy chủ PowerDNS vào phần 'Cài đặt PDNS' và nhấp vào 'Cập nhật'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22408%22%3E%3C/svg%3E
Khi PowerDNS-Admin và máy chủ PowerDNS được kết nối qua API, bảng điều khiển của bạn sẽ trông như sau ảnh chụp màn hình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22457%22%3E%3C/svg%3E
Từ đây, giờ đây bạn có thể dễ dàng thêm bản ghi DNS mới hoặc sửa đổi bản ghi DNS hiện có thông qua bảng điều khiển PowerDNS-Admin.
Kết luận
Trong hướng dẫn này, bạn đã học cách cài đặt máy chủ PowerDNS với cơ sở dữ liệu MySQL/MariaDB trên máy chủ Rocky Linux. Bạn cũng đã học cách triển khai cơ bản cơ sở dữ liệu MariaDB trên Rocky Linux. Cuối cùng, bạn đã học cách cài đặt và cấu hình PowerDNS-Admin sẽ được sử dụng làm công cụ quản lý dựa trên web cho máy chủ PowerDNS. PowerDNS-Admin chạy với Nginx làm proxy ngược và cơ sở dữ liệu MariaDB.Với máy chủ PowerDNS và PowerDNS-Admin đang chạy, giờ đây bạn có thể quản lý máy chủ DNS của mình thông qua bảng điều khiển quản trị web. Bạn có thể thêm, chỉnh sửa hoặc xóa bản ghi DNS thông qua bảng điều khiển quản trị PowerDNS-Admin.