Ownedmedia ウェブ制作に役立つコンテンツを発信中!

サーバー構築 2020.08.12

CentOS8 + Apache + Nginx + MariaDBでVPSサーバーに環境構築をする(#4:DBサーバー・phpMyAdminのインストール)

Tags: ,,,,

前回記事「CentOS8 + Apache + Nginx + MariaDBでVPSサーバーに環境構築をする(#3:ウェブサーバー・PHPのインストール)」ではウェブサーバーとPHPをVPSサーバーにインストールして、静的ウェブページの表示やサーバーサイドのプログラムが実行できる環境が整いました。今回は続いてデータベースを利用できるようにDBサーバーをインストールしていきます。

 

以前にも等メディアサイトの記事でVPSサーバーにDBサーバーをインストールしていく方法をまとめた記事を公開していましたが、その時に使ったものは「MySQL」というDBサーバーでした。今回はその後継となる「MariaDB」というDBサーバーをインストールしていきます。

 

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.copy

 

remi.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も運用することができますね。次回以降もいろいろなツールやサーバー環境を構築していきたいと思いますので、また改めて記事にまとめていきますね。

この記事を書いた人

オガワ シンヤ

DesignSupply.代表 / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はチョコレートが欠かせない三十路Webクリエイター。

  • Twitter

コメントフォーム

記事に関するご質問やご意見などありましたら下記のコメントフォームよりお気軽に投稿ください。なおメールアドレスは公開されませんのでご安心ください。

内容に問題なければ、お名前・ハンドルネームとメールアドレスを入力いただき、下記の「コメントを送信」ボタンを押してください。

CAPTCHA


この記事もよく読まれています

Scroll to Top
ご質問・ご相談はありませんか ?