
CentOS8 + Apache + Nginx + MariaDBでVPSサーバーに環境構築をする(#4:DBサーバー・phpMyAdminのインストール)
前回記事「CentOS8 + Apache + Nginx + MariaDBでVPSサーバーに環境構築をする(#3:ウェブサーバー・PHPのインストール)」ではウェブサーバーとPHPをVPSサーバーにインストールして、静的ウェブページの表示やサーバーサイドのプログラムが実行できる環境が整いました。今回は続いてデータベースを利用できるようにDBサーバーをインストールしていきます。
以前にも等メディアサイトの記事でVPSサーバーにDBサーバーをインストールしていく方法をまとめた記事を公開していましたが、その時に使ったものは「MySQL」というDBサーバーでした。今回はその後継となる「MariaDB」というDBサーバーをインストールしていきます。
前回のウェブサーバーに引き続き、今回はデータベース周りの環境を整えていきました。これでデータを登録できるウェブアプリケーションやWordPressなどのCMSも運用することができますね。次回以降もいろいろなツールやサーバー環境を構築していきたいと思いますので、また改めて記事にまとめていきますね。
1. DBサーバーのインストール
すでにMySQLサーバーが入っている場合には競合する可能性もあるので、インストールされているパッケージを確認しておきます。インストールされている場合には関連パッケージごと削除します。何も表示されなければOKです。# dnf list installed | grep mysql下記コマンドで「MariaDB」をインストールしていきます。
# dnf install -y mariadb-server mariadb mariadb-devel Installed: .............. Complete!インストールが終わったら、バージョンを表示させて確認しておきます。
# mysql --version mysql Ver 15.1 Distrib 10.3.17-MariaDB, for Linux (x86_64) using readline 5.1念の為、一緒にインストールされた関連するパッケージも確認しておきます。
# dnf list installed | grep mariadb mariadb.x86_64 mariadb-backup.x86_64 mariadb-common.x86_64 mariadb-connector-c.x86_64 mariadb-connector-c-config.noarch mariadb-connector-c-devel.x86_64 mariadb-devel.x86_64 mariadb-errmsg.x86_64 mariadb-gssapi-server.x86_64 mariadb-server.x86_64 mariadb-server-utils.x86_64システムの起動時に自動で起動されるように有効化設定を行います。その後ステータスを確認します。「enabled」と表示されたらOKです。
# systemctl start mariadb # systemctl enable mariadb # systemctl is-enabled mariadb enabled念の為、問題なく起動しているかMariaDBのステータスも確認しておきます。
# systemctl status mariadb mariadb.service - MariaDB 10.3 database server ............ Active: active (running)これでDBサーバーのインストールと最初に行う作業が完了しました。
2. DBサーバーのセキュリティ対策
DBサーバーは初期設定のままですとセキュリティが弱いままとなっています。続いてDBサーバーのセキュリティ対策を行なっていきます。下記のコマンドを入力するだけで、初期設定のセットアップが進んできます。# mysql_secure_installationコマンド実行後は表示されるメッセージに応答しながら進めていきます。まず最初の質問にはそのまま何も入力せずにEnterキーを入力します。(まだrootユーザーのパスワードを設定していないため)
Enter current password for root (enter for none):2つ目の質問には、rootユーザーのパスワードを設定します。最初の設問で「Y」を入力し、新しいパスワードを設定していきます。
Set root password? [Y/n] y New password: [PASSWORD] Re-enter new password: [PASSWORD] Reloading privilege tables.. ... Success!3つ目の質問は匿名ユーザーを削除するかどうかの質問です、削除するので「Y」と入力していきます。
Remove anonymous users? [Y/n] y ... Success!4つ目ではリモートでの操作において管理者のログインを許可しないように設定します。こちらも同じく「Y」を入力して進めていきます。
Disallow root login remotely? [Y/n] y ... Success!5つめではテスト用のデータベースを削除するかどうかを選びます、不要なデータベースになるので削除するために「Y」と入力します。
Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success!これで最後の質問です。これまでの設定した内容を今すぐ反映させるので「Y」を選びます。
Reload privilege tables now? [Y/n] y ... Success! ............ All done!これで基本的なDBサーバーのセキュリティ対策が完了しました。引き続きDBサーバーの初期設定を進めていきます。
3. DBサーバーの設定
これまでと同じようにMariaDBにも設定ファイルが存在します。設定ファイルである「mariadb-server.cnf」がある場所まで移動し、設定ファイルのバックアップを済ませておきます。そして下記のようにエディタで編集していきます。# cd /etc/my.cnf.d/ # cp mariadb-server.cnf mariadb-server.cnf.copy # vim mariadb-server.cnf設定ファイル内では主に文字コードの指定を変更しています。 【/etc/my.cnf.d/mariadb-server.cnf】
// 追加前 [mariadb] ↓ // 追加後 [mariadb] character-set-server = utf8mb4 [client-mariadb] default-character-set = utf8mb4上記設定後はファイルを保存し、反映させるためにMariaDBを再起動させます。合わせてステータスも再度確認しておきます。
# systemctl restart mariadb # systemctl status mariadb ............ Active: active (running)問題なく動作しているようであれば、実際にMariaDBへ管理者ユーザーでログインできるか確認しておきます。無事にログインが確認できれば「quit」と入力してログアウトしておきます。
# mysql -u root -p Enter password: [PASSWORD] ............ MariaDB [(none)]>これでDBサーバーに関する諸々の設定が完了しました。DBを操作するにはmysqlコマンドなどを使うコマンドラインでの方法と、データベースを操作できるGUIツールを使う方法があります。続いてWebブラウザから簡単にデータベースを操作できる「phpMyAdmin」というものをインストールしていきます。
4. phpMyAdminのインストール
phpMyAdminはPHPでできたブラウザからデータベースを操作することができるGUIツールです。無料で使えることもあり、この機会にぜひ使ってみましょう。まずは「/etc/yum.repos.d/」まで移動し「remi.repo」ファイルをバックアップしておきます。# cd /etc/yum.repos.d/ # cp remi.repo remi.repo.copyremi.repoファイル内に下記の項目を追記します。そして、enabled=1に変更しリポジトリを有効にします。こうすることでremiリポジトリにあるphpMyAdmin に依存するパッケージのみを有効化し、不要なパッケージのインストールを避けることができます。 【remi.repo】
[remi] ............ enabled=1 ............ includepkgs=phpMyAdmin php-tcpdf php-tcpdf-dejavu-sans-fonts php-pragmarx-google2fa-qrcode php-pragmarx-google2fa5 php-symfony4-dependency-injection php-symfony4-config php-symfony4-yaml php-symfony4-common php-phpmyadmin-sql-parser5 php-williamdes-mariadb-mysql-kbs php-symfony4-expression-language php-symfony4-cache php-symfony4-filesystem php-twig2 php-phpmyadmin-twig-i18n-extension php-twig php-phpmyadmin-motranslator php-symfony-polyfill上記のリポジトリ有効化は、代わりに下記のコマンドで実行することでも可能です。
# yum-config-manager --enable remiここまでできたら実際にphpMyAdminをインストールしていきます。
# dnf install phpMyAdmin Installed: ............ Complete!続いてphpMyAdminの初期設定を行います。「/etc/httpd/conf.d/」に移動し、phpMyAdminの設定ファイル「phpMyAdmin.conf」のバックアップを行ったのち、phpMyAdmin.confをエディタで次のように編集していきます。
# cd /etc/httpd/conf.d/ # cp phpMyAdmin.conf phpMyAdmin.conf.copy # vim phpMyAdmin.conf設定ファイルの変更ですが、元々のエイリアス適用を外して、外部からアクセスできるようにしていきます。 【/etc/httpd/conf.d/phpMyAdmin.conf】
// 変更前 Alias /phpMyAdmin /usr/share/phpMyAdmin Alias /phpmyadmin /usr/share/phpMyAdmin <Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 Require local </Directory> ↓ // 変更後 # Alias /phpMyAdmin /usr/share/phpMyAdmin # Alias /phpmyadmin /usr/share/phpMyAdmin <Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 # Require local Require all granted </Directory>設定ファイルへの変更を反映させるために、httpdを再起動します。
# systemctl restart httpdこれで、ブラウザからphpMyAdminにアクセスすることができます。実際に「http://IPアドレス/phpMyAdmin/」にアクセスし、phpMyAdminのログイン画面が表示され、rootユーザーでログインできるかを確認していきます。 (補足)上記はリポジトリからのインストールでしたが、ドキュメントルートまで移動し、下記のコマンドでphpMyAdminのzipファイルを直接ダウンロードして解凍することでもphpMyAdminを使えるようになります。
# cd /var/www/html/ # wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.zip # unzip phpMyAdmin-5.0.2-all-languages.zipこれでphpMyAdminが使えるようになりましたが、初期状態のままですとセキュリティが弱いので大事なデータベースが壊されてしまう恐れがあります。続いてphpMyAdminのセキュリティ対策を行なっていきます。
5. phpMyAdminののセキュリティ対策
デフォルトではディレクトリのパスが「phpMyAdmin」となっているため、簡単に推測されてしまいます。また、ログイン時の通信も暗号化されていないと平文が送信されるのでパスワードがバレてしまいます。そこでこれらを設定していきます。ますは下記のようにエイリアスの名前を変更します。# cd /etc/httpd/conf.d/ # vim phpMyAdmin.conf先ほどの設定ファイルに追記しますが、この時エイリアス名にはランダムな英数字を指定しておくといいですね。もちろんURLは控えておきましょう。 【/etc/httpd/conf.d/phpMyAdmin.conf】
Alias /[変更後のURLパス] /usr/share/phpMyAdmin下記コマンドでhttpdを再起動し設定を反映させ、変更後のURLでアクセスおよびログインできるかを確認します、「http://IPアドレス/変更後のURLパス」でブラウザからアクセスしましょう。
# systemctl restart httpd問題なくアクセスできたら、続いてSSL通信ができるようにしていきます。下記コマンドでApacheのSSL拡張パッケージをインストールしてhttpsでアクセスできるようにしておきます。
# dnf -y install mod_ssl念の為、問題なくインストールできているかを確認しておきます。「mod_ssl.x86_64」のモジュールが含まれていたらOKです。
# dnf list installed | grep mod_ssl mod_ssl.x86_64「https://IPアドレス/変更後のURLパス」でphpMyAdminにアクセスしてログインできるかを確認します。なお正規の認証局が発行したSSL証明書では無いためブラウザに警告が表示されるが、例外としてそのまま表示させて進めていって大丈夫です。 HTTPSでphpMyAdminにアクセスできたら、HTTP通信でのアクセスをできないようにしておきます。下記のようにphpMyAdmin.confを編集します。 【/etc/httpd/conf.d/phpMyAdmin.conf】
// 変更前 <Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 # Require local Require all granted </Directory> ↓ // 変更後 <Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 SSLRequireSSL # Require local Require all granted </Directory>下記コマンドでhttpdを再起動し設定を反映させて、httpのプロトコルでしかアクセスできないようになっているかを確認していきます。
# systemctl restart httpdこれで安心してphpMyAdminを使うことができますね。データベースの操作はmysqlのコマンドを使ってもできますが、GUIでブラウザから利用できるのは大きなメリットがあるのではないでしょうか。
前回のウェブサーバーに引き続き、今回はデータベース周りの環境を整えていきました。これでデータを登録できるウェブアプリケーションやWordPressなどのCMSも運用することができますね。次回以降もいろいろなツールやサーバー環境を構築していきたいと思いますので、また改めて記事にまとめていきますね。