「apache httpd 2.4」「php7.3」「mariadb」のインストー …webサーバ apache httpd 2.4...

20
1 / 20 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストールと初期設定 ●yum とは? yum は「Yellowdog Updater Modified」の略だ。 元々は Yellow Dog Linux のパッケージ管理システムである YUP「Yellowdog Updater」というものが前身にあった。その統合 パッケージ管理システムを RedHat へ改変移植したものが現在の yum となる。 役割としては RPM パッケージを統合管理するというものだ。RPM 単体ではパッケージ情報、依存関係などの情報を持ち合わせて いるものの、それを統合的に管理運用するシステムがない。ユーザの手間を減らすためにできたのが yum だ。 yum は RPM の情報を管理し統合、依存関係を自動的に解決してくれる。Debian でいうところの APT と同じ立ち位置になる。 yum を使用することでディストリビューションのパッケージアップデートやパッケージの検索、パッケージ削除、パッケージの情報表示 などができるようになる。 yum コマンドの使い方 # yum check-update リポジトリにアップデートがないかチェックをかける。 # yum update リポジトリにアップデート、チェックおよび実際にアップデートする。 # yum install <pkg> リポジトリからパッケージをインストールする。依存関係にあるパッケージも自動的に解決してくれる。 # yum search <pkg> リポジトリからパッケージを検索する。 # yum remove <pkg> インストールされているパッケージを削除する。 # yum info <pkg> インストールされているパッケージの情報を表示する。 # yum list installed インストールされているパッケージ一覧を表示 yum の設定ファイルを確認してみる # vi /etc/yum.conf 他のリポジトリに関しては「/etc/yum.repos.d」にファイルを別途用意記述するようになっている。 リポジトリを追加する リポジトリとはパッケージの提供元のことだ。作成元ということではなく、配布してくれている場所だと思ってほしい。 リポジトリは世界中にたくさんあり、それぞれ配っているパッケージが違う。そのため yum はリポジトリを追加することによって、パッケー ジのバリエーションを増やすことができる。 最終的には手動で repo ファイルを用意すれば、事実上どこのリポジトリも追加できるが、安易にリポジトリを追加するのはセキュリ ティ上良くない。そのため、どのようなものなのかの概要は把握しておくこと。 今回は EPEL というリポジトリを追加してみる https://fedoraproject.org/wiki/EPEL/ja EPEL は RHEL 向けの高品質アドオンパッケージ郡である。Fedora プロジェクトで有志によって作成されている。信頼度が高い ため、安心して使えるリポジトリだ。 # yum install epel-release 追加したら最新の状態に保とう。 # yum update この時点で GPG のキー取り込みに関して聞かれるが「y」で問題ない。 リポジトリ有効化リポジトリ無効化は repo ファイルの記述などから指定可能だ。追加したリポジトリが有効かどうかは # yum repolist all で確認できる。画像は grep で絞り込んであるがメインの「epel/x86_64」が有効になっていれば問題ない。

Upload: others

Post on 21-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

1 / 20

「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストールと初期設定

●yum とは?

yum は「Yellowdog Updater Modified」の略だ。

元々は Yellow Dog Linux のパッケージ管理システムである YUP「Yellowdog Updater」というものが前身にあった。その統合

パッケージ管理システムを RedHat へ改変移植したものが現在の yum となる。

役割としては RPM パッケージを統合管理するというものだ。RPM 単体ではパッケージ情報、依存関係などの情報を持ち合わせて

いるものの、それを統合的に管理運用するシステムがない。ユーザの手間を減らすためにできたのが yum だ。

yum は RPM の情報を管理し統合、依存関係を自動的に解決してくれる。Debian でいうところの APT と同じ立ち位置になる。

yum を使用することでディストリビューションのパッケージアップデートやパッケージの検索、パッケージ削除、パッケージの情報表示

などができるようになる。

yum コマンドの使い方

# yum check-update リポジトリにアップデートがないかチェックをかける。

# yum update リポジトリにアップデート、チェックおよび実際にアップデートする。

# yum install <pkg> リポジトリからパッケージをインストールする。依存関係にあるパッケージも自動的に解決してくれる。

# yum search <pkg> リポジトリからパッケージを検索する。

# yum remove <pkg> インストールされているパッケージを削除する。

# yum info <pkg> インストールされているパッケージの情報を表示する。

# yum list installed インストールされているパッケージ一覧を表示

yum の設定ファイルを確認してみる

# vi /etc/yum.conf

他のリポジトリに関しては「/etc/yum.repos.d」にファイルを別途用意記述するようになっている。

リポジトリを追加する

リポジトリとはパッケージの提供元のことだ。作成元ということではなく、配布してくれている場所だと思ってほしい。

リポジトリは世界中にたくさんあり、それぞれ配っているパッケージが違う。そのため yum はリポジトリを追加することによって、パッケー

ジのバリエーションを増やすことができる。

最終的には手動で repo ファイルを用意すれば、事実上どこのリポジトリも追加できるが、安易にリポジトリを追加するのはセキュリ

ティ上良くない。そのため、どのようなものなのかの概要は把握しておくこと。

今回は EPEL というリポジトリを追加してみる

https://fedoraproject.org/wiki/EPEL/ja

EPEL は RHEL 向けの高品質アドオンパッケージ郡である。Fedora プロジェクトで有志によって作成されている。信頼度が高い

ため、安心して使えるリポジトリだ。

# yum install epel-release

追加したら最新の状態に保とう。

# yum update

この時点で GPG のキー取り込みに関して聞かれるが「y」で問題ない。

リポジトリ有効化リポジトリ無効化は repo ファイルの記述などから指定可能だ。追加したリポジトリが有効かどうかは

# yum repolist all

で確認できる。画像は grep で絞り込んであるがメインの「epel/x86_64」が有効になっていれば問題ない。

Page 2: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

2 / 20

epel 以外にも有用なリポジトリは多々ある。必要なときに随時「リポジトリ名 インストール方法」で検索するといいだろう。基本的

には

• yum --enablerepo=レポジトリ名 ですでに使えるか確認し

• なければ wget で取得、rpm でインストール

• 必要であれば vi コマンドで加工

という手順になる。

●Web サーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順

# yum -y install httpd // -y は、すべての問いに「yes」と回答したものとして実行するオプションです。

Apache の起動と停止

起動

# systemctl start httpd CentOS 6 以下は、service コマンドを使ってください。

起動の確認 # systemctl status httpd

たくさん文字が出てきますが、Active: active (running)とどこかにあれば動いている証しです。

停止 # systemctl stop httpd

自動起動の設定

これは、CentOS の起動・再起動の際に一緒に Apache httpd も起動するようにする設定です。

# systemctl enable httpd.service CentOS 6 以下は、chkconfig コマンドを使ってください。

ブラウザ確認

まずは、CentOS がデフォルトで firewalld が動いていてアクセス制御されているので、httpd を許容するように設定します。

これも、コマンドでできちゃいます。

# firewall-cmd --add-service=http --zone=public --permanent

# firewall-cmd --reload //反映

# firewall-cmd –list-all //firewall の設定確認

あとは、ブラウザで http://CentOS の IP アドレスを叩けば、以下の画面が表示されて完了です。

Page 3: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

3 / 20

●CentOS 7 に PHP 7.3 をインストールして Apache と連携させる方法

. PHP 導入の前提条件

PHP の導入にあたって、前提条件は以下の通りです。

OS のバージョンは 2019 年 6 月現在で、最新の CentOS 7.6 を利用します。実際のバージョンを確認してみます。

# cat /etc/redhat-release

CentOS Linux release 7.6.1810 (Core)

上記から 7.6 であることが確認できました。

併せて Apache httpd のバージョンについても確認します。Apache httpd のバージョンは以下のコマンドで確認できます。

# httpd -V | head -n 1

Server version: Apache/2.4.6 (CentOS)

上記から Apache httpd のバージョンが 2.4.6 であることが確認できました。

PHP インストール前の事前準備

PHP 7.3 系のインストール前に事前準備を行います。作業としては、導入する環境に Base レポジトリからの PHP がインストール

されていないかを確認することと、PHP 7.3 系をインストールするのに必要なレポジトリである remi レポジトリの追加になります。

3-1. PHP5.4 系のインストール確認

PHP 7.3 系をインストールする前に CentOS の Base レポジトリからインストールされた PHP 5.4 系がないことを確認します。

PHP5.4 系がインストールされていると、設定ファイルやモジュールの読み込み時に混乱する可能性があります。以下のコマンドで

PHP がインストールされていないことを確認します。

# yum list installed | grep php

PHP に関するパッケージが表示されないことが確認できれば、完了です。もし出力結果に php が含まれている場合は

# yum remove php* などで PHP5 系のパッケージを削除してください。

3-2. remi レポジトリの設定

OS デフォルトでは PHP 7.3 系に関するパッケージを探してみても見つかりません。これは OS のベースに用意されているレポジトリ

には PHP の 7.3 系は含まれていなことが原因です。

3-2-1. remi レポジトリの追加

remi の目的ですが、最新バージョンの PHP モジュールを RHEL 系のディストリビューションに提供することです。このレポジトリをイ

ンストールします。URL が更新されている可能性があります。ダウンロードできない場合は、最新の URL を確認して下さい。

# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

レポジトリファイルは/etc/yum.repos.d/以下に含まれています。

3-2-2. remi レポジトリの追加の確認

remi レポジトリで PHP7.3 系の導入に利用するレポジトリは"remi-php73"レポジトリになります。remi-php73 レポジト

リはデフォルトでは有効になっていません。それ程、使用頻度も高くないことから php7.3 系に関連した yum コマンドを実行す

る際だけ有効にするようにします。

この場合は yum コマンドにオプションである”--enable-repo=remi,remi-php73”を付与します。例えば php パッケージ

の詳細を表示する場合には以下のように実行します。

# yum info --enablerepo=remi,remi-php73 php

# yum search --enablerepo=remi,remi-php73 php PHP のパッケージを探してみます。

Page 4: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

4 / 20

4-1. PHP パッケージの情報確認

php73 パッケージのインストール前に、パッケージの情報を確認しておきます。

# yum info --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd

php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql

各パッケージの役割などを確認しておくと、インストールするパッケージの意味合いをイメージしやすいと思います。

4-2. PHP のインストール

項目 4-1. で必要なパッケージの情報が確認できましたので、以下のコマンドでインストールします。

# yum -y install --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-

gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql

上記では yum コマンドに-y オプションを付けることでインストール時の確認応答を省いています。パッケージを複数インストールする

場合はスペースを入れてパッケージ名を列記します。

4-3. インストールされた PHP パッケージの確認

# yum list installed | grep php

4-4. PHP 7.3 cli の動作確認

PHP は cli から動作させることも可能です。php コマンドを使ってバージョンを確認してみます。

# php -v

5. PHP の基本的な設定

PHP の場合、この状態でも動作しますが、基本的な設定を行うことをお勧めします、本記事では運用するにあたって最低限、

必要になる設定を行います。設定の前提は以下の通りです。

• 最低限のセキュリティ設定

• アップロードサイズの変更(2M から 20MB へ)

• タイムゾーンの設定

• マルチバイト対応(日本語対応)

5-1. php.ini の変更

PHP の設定は/etc/以下にある php.ini ファイルで行います。php.ini の設定変更前に、既存のファイルをバックアップしておきま

す。具体的には以下の手順でコピーを行います。

# cp -p /etc/php.ini /etc/php.ini.org

バックアップの完了後、エディタで設定ファイルを開いて変更を行います。

# vi /etc/php.ini

※行数を表示したい場合は # :set number 逆に非表示にしたいときは # :set nonumber とタイプする。

また # :<行番号> とすると、指定した行までカーソルを移動できる。

5-1-1. PHP のセキュリティ設定

PHP はデフォルトの設定では http ヘッダーにバージョンを表示します。バージョンは公開しないほうがセキュアになりますので、php

のバージョンを非表示にする設定を行います。374 行目にある

code

expose_php = On

を、以下のように変更します。

code

expose_php = Off

Page 5: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

5 / 20

5-1-2. アップロードサイズの変更

PHP のデフォルト設定ではアップロードできるファイルのサイズが 2MB だと少ないため、20M に変更します。

まずは POST データの最大サイズを設定する post_max_size を変更します。デフォルトでは 8M ですが、これを 20M に変更

します。

672 行目にある

post_max_size = 8M

を、以下のように変更します。

post_max_size = 20M

post_max_size の変更だけでは、ファイルのアップロード容量を増やせないため、併せて upload_max_filesize を変更します。

825 行目にある

upload_max_filesize = 2M

を、以下のように変更します。

upload_max_filesize = 20M

5-1-3. タイムゾーンの設定

タイムゾーンの設定を行います。これを設定しないとエラーが大量に出力されます。勿論、アプリケーションが時間を扱う時にも運用

環境に合わせて設定が行われていないと問題になります。日本の場合は”Asia/Tokyo”になりますので、これを date.timezone

として設定を行います。

902 行目

;date.timezone =

を、以下のように設定します。

date.timezone = "Asia/Tokyo"

5-1-4. マルチバイト対応(日本語対応)設定

以下の項目は日本語を利用するうえでの設定変更になります。一般的な設定を紹介していますが、日本語の扱いは運用環境

によって異なると思います。動作するアプリケーションに応じて、適宜、変更してください。

まずは mbstring で使用される言語のデフォルト値を定義する mbstring.language を設定します。

1509 行目のパラメーター

;mbstring.language = Japanese

を、以下のように最初のセミコロンを削除します。

mbstring.language = Japanese

続いて内部文字エンコーディングのデフォルト値を定義する mbstring.internal_encoding を設定します。ここでは OS に合わ

せて UTF-8 を指定しています。

1516 行目のパラメーター

;mbstring.internal_encoding =

を、以下のように、最初のセミコロンを削除し、UTF-8 を設定します。

mbstring.internal_encoding = UTF-8

HTTP 通信の時のインプット文字コードを指定する mbstring.http_input を設定します。ここでは UTF-8 を指定しています。

1524 行目のパラメーター

;mbstring.http_input =

を、以下のように変更します。

mbstring.http_input = UTF-8

Page 6: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

6 / 20

HTTP 出力文字コードを指定する mbstring.http_output を設定します。ここでは pass を指定して自動変換を行わないよ

うにします。

1534 行目のパラメーター

;mbstring.http_output =

を、以下のように、最初のセミコロンを削除し、pass と設定します。

mbstring.http_output = pass

HTTP 入力変換を有効にする mbstring.encoding_translation を On にします。文字化けが発生した場合は Off にしま

す。

1542 行目のパラメーター

;mbstring.encoding_translation = Off

を、以下のように、最初のセミコロンを削除し、on に設定します。

mbstring.encoding_translation = On

文字コード自動検出の優先順位を定義するパラメーターである mbstring.detect_order を設定します。auto の場合、UTF-

8 が最初に選択されるため、ここは auto で問題ないかと思います。コメントである”;”を削除します。

1547 行目のパラメーター

;mbstring.detect_order = auto

を、以下のように、最初のセミコロンを削除します。

mbstring.detect_order = auto

コードとして変換できない文字がある場合に、代替の文字を出力しないよう mbstring.substitute_character を設定します。

コメントである”;”を削除します。

1552 行目のパラメーター

;mbstring.substitute_character = none

mbstring.substitute_character = none

に変更します。

以上で php.ini の設定変更は完了です。変更したファイルを保存します。

6. php.ini 設定ファイルの反映と httpd の確認

変更した設定を反映するために httpd(apache)を再起動します。systemctl を以下のように実行します。

# systemctl restart httpd

エラーが出力されなければ、httpd は正常に再起動しています。再起動後に httpd の status を確認します。

# systemctl status httpd

併せて httpd 側に php がモジュールとして組み込まれていることを確認します。確認は httpd コマンドに-M を付けて実行します。

# httpd -M | grep php 結果として php7_module が表示されれば、確認は完了です。

7. 動作確認

項目 6. までで PHP の設定が完了しましたので、ここからは実際に CLI からのテストと、ブラウザでサイトへ接続して、正常に PHP

が動作していることを確認していきます。利用しているブラウザは Google Chrome になります。

7-1. CLI での PHP 動作確認

コマンドライン(CLI)から php コマンドを利用して PHP の動作を確認することができます。以下のコマンドを実行します。

# php -r 'phpinfo();'

Page 7: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

7 / 20

7-2. ブラウザでの PHP 動作確認

ブラウザからも動作を確認しておきます。設定した Apache httpd のドキュメントルートに動作確認用のファイルを作成して、ブラウ

ザからアクセスを行います。

7-2-1. 動作確認用のファイルを作成

動作確認用のファイルを作成します。ここではドキュメントルートとして/home/www/html が設定されている前提です。

ディレクトリを移動します。

# cd /home/www/html

# ls

index.html

vi コマンドで index.php というファイル名を作成します。

# vi index.php

ファイルの内容は以下の1行になります。

<?php phpinfo(); ?>

変更後にファイルを保存してください。これで動作確認用ファイルの作成は完了です。

7-2-2. ブラウザからアクセスする

ブラウザから phpinfo の画面が表示できることを確認します。

サイトがローカルにある場合は、ブラウザに localhost/index.php と入力します。

正常に設定ができている場合、以下のような php の情報が画面に表示されます。

これで PHP の動作確認は完了です。テスト用に作成した index.php ファイルはセキュリティホールになりますので、削除して

おきます。

Page 8: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

8 / 20

● MariaDB インストール、及び初期設定

MariaDB は、Oracle よって買収された MySQL のフォーク版です。強いて言えば、RHEL と CentOS みたいなもので、

MySQL のフォーク版であるため、使い方も MySQL と同じです。

CentOS 7 以降では、この MariaDB がデフォルト DB として採用されています。

Step 1. 古いバージョンの MariaDB 削除

MariaDB は、yum でインストールするので、インストール自体は簡単ですが、OS インストール時にデフォルトで mariadb-

5.5 のように結構古いバージョンがインストールされている場合があるので、rpm リストを出してみて見つかったらキレイに消してお

きます。

既存の MariaDB バージョンの確認

# rpm -qa | grep -i "mariadb"

既存の MariaDB を削除

# yum remove mariadb mariadb-libs

# rpm -qa | grep -i "mariadb" ※何も表示されなかったら OK

CentOS 7 では、mariadb-libs を削除すると postfix も削除されます

そのため、自分で postfix 設定をいじってる方は、事前に postfix 設定をバックアップしてください。

Conaha とか VPS の場合は、普通に消されたとしても postfix を入れ直すだけでメール送信できるようになります。 (が、念

のためバックアップは取っておいた方が良いと思います)

# yum remove mariadb-libs

# yum -y install postfix

# systemctl enable postfix.service

# systemctl start postfix.service

# systemctl list-unit-files --type service | grep "postfix"

postfix.service enabled

CentOS 8 で試した時に消されることはなかったのですが、OS のバージョンに関係なく、削除する前にどんなパッケージが依存関

係で削除されるかくらいは確認しておいた方が良いかもしれません。

Step 2. MariaDB リポジトリの追加 (二通り)

MariaDB のリポジトリを追加・作成する方法としては、以下の二通りあります。

• リポジトリゼネレータを使ってコードを生成し、直接リポジトリファイルを作成する方法

• リポジトリ自動追加用のシェルスクリプト mariadb_repo_setup を実行する方法

MariaDB リポジトリの追加 その 1. リポジトリゼネレータを使ってコードを生成し、直接リポジトリファイルを作成する方法

MariaDB 用のリポジトリを追加する一番目の方法は、本家サイトのリポジトリジェネレータを使う方法です。

リポジトリコードはリポジトリジェネレータから取得できますが、OS 内のリポジトリファイルは自分で作成する必要があります。

以下に本家サイトのリンクを記載しますので、ご興味のある方は、一読してみてください。 CentOS、RHEL、Fedora など、各デ

ィストリビューション向けのリポジトリジェネレータを提供しており、OS のバージョンに合わせてリポジトリを自動生成・取得できるので

便利です。

特に、自分でディストリビューションと OS のバージョンを選択するとリポジトリコードが自動的に生成されます。

• MariaDB Foundation : MariaDB リポジトリ生成ツール (英語)

以下の例では、CentOS 7 で試した時のリポジトリ (MariaDB 安定版 10.1) と CentOS 8 で試した時のリポジトリ

(MariaDB 安定版 10.4) をそれぞれ作成していますが、リポジトリ生成ツールを使って環境に合わせて設定してください。

Vi エディタで以下のファイルを root ユーザで新規作成します。

Page 9: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

9 / 20

# vi /etc/yum.repos.d/MariaDB.repo 赤枠をファイル内に入力する。

# MariaDB 10.4 CentOS repository list - created 2019-12-03 21:56 UTC

# http://downloads.mariadb.org/mariadb/repositories/

[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.4/centos8-amd64

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1

リポジトリツールによって生成された中身には、enabled が記載されてないですが、デフォルトで enabled=1 になっています。

MariaDB リポジトリの追加 その 2. リポジトリ自動追加用のシェルスクリプト mariadb_repo_setup を実行する方

MariaDB の リポ ジ ト リを 追加 す る もう 一 つ の方 法 は 、curl で リ ポ ジ ト リ 自動 作成・ 追加 用 の シ ェ ル ス ク リプ ト

(mariadb_repo_setup) を読込むと同時に bash で実行することです。

コマンド一発で自動的にリポジトリを追加してくれるので、シンプルで速いです。

最新のリポジトリを追加することも、特定のバージョンを指定してリポジトリを自動作成することも出来ます。

まずは、どんなオプションが使えるか軽く目を通しておきます。

# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash -s -- --help

最新安定版の MariaDB リポジトリを自動作成する方法です。

特にバージョン指定がなければ、デフォルトでコマンドを実行した時点での最新バージョンが指定されます。

このコマンドを実行した (2019.12) 時点で最新安定版は、MariaDB 10.4 です。

最新安定版 MariaDB のリポジトリ自動追加・作成

# ls -l /etc/yum.repos.d/

# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash

# ls -l /etc/yum.repos.d/

# cat /etc/yum.repos.d/mariadb.repo

特定バージョンの MariaDB リポジトリを自動作成したい場合は、以下のようにします。

この例では、MariaDB 10.1 がインストールされるようにバージョンを指定してコマンドを実行しています。

ちなみに、既に mariadb.repo が存在する場合は、mariadb.repo_NN みたいな感じで自動的にバックアップされるようにな

っています。

特定バージョンの MariaDB リポジトリ自動追加・作成

# ls -l /etc/yum.repos.d/

# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash -s -- --

mariadb-server-version=mariadb-10.1

# ls -l /etc/yum.repos.d/

# cat /etc/yum.repos.d/mariadb.repo

Step 3. MariaDB インストール

先ほどリポジトリを追加したので、--enablerepo=mariadb オプション付きで MariaDB をインストールします。

# yum -y install boost-program-options

# rpm -qa | grep boost-program

Page 10: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

10 / 20

# yum install --enablerepo=mariadb* MariaDB-server MariaDB-client --

disablerepo=AppStream

# rpm -qa | grep "MariaDB"

Step 4. MariaDB 初期設定

デフォルト設定ファイルは、/etc/my.cnf ですが、中身は空っぽで /etc/my.cnf.d/ 配下の設定ファイルをインクルードするように

なっています。

/etc/my.cnf 確認 # ls -l /etc/my.cnf -rw-r--r-- 1 root root 202 5 月 8 19:49 /etc/my.cnf # cat /etc/my.cnf -------------------- ここから -------------------- # # This group is read both both by the client and the server # use it for options that affect everything # [client-server] # # include all files from the config directory # !includedir /etc/my.cnf.d -------------------- ここまで -------------------- # ls -l /etc/my.cnf.d/ 合計 12 -rw-r--r-- 1 root root 763 11 月 7 14:52 enable_encryption.preset -rw-r--r-- 1 root root 232 11 月 7 14:52 mysql-clients.cnf -rw-r--r-- 1 root root 1080 11 月 7 14:52 server.cnf

ちなみに、/etc/my.cnf.d/ ディレクトリ内にあるファイルの中身はほとんど設定が入ってないので、MariaDB 10.2 までは データ

ベースの規模に応じて使えるように、MySQL の各種サンプル設定ファイルが入っているディレクトリ /usr/share/mysql/ から設

定ファイルを持ってきて設定する方法がありました。しかし、2017 年度に MariaDB 設定ファイルに関する方針変更により、

10.3.1 あたりからサンプル設定ファイルが削除されています。

要するに、基本的にはデフォルト設定で良くて、バッファーサイズ、キャッシュサイズのような詳細パラメータについては、公式マニ

ュアル等を参考にし、必要に応じて適宜追加・設定して使ってくれ という意図が含まれているようです。

というわけで、初期設定としては、サーバとクライアントの最低限の設定のみ実施します。

• ポート番号設定

• 文字化けしないように [client] と [mysqld] に UTF-8 を設定

• ソケットのファイルパス設定

• データベースの保存先 (データが格納される場所) として datadir=/var/lib/mysql を設定

• サーバを識別するための Unique ID 設定

ちなみに、MariaDB をインストールするとデフォルトで /var/lib/mysql が作成されますが、もしディレクトリが存在しなかったら作

成してください。

/etc/my.cnf.d/server.cnf

# # These groups are read by MariaDB server. # Use it for options that only the server (but not clients) should see # # See the examples of server my.cnf files in /usr/share/mysql/ # [client] #### 追加

Page 11: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

11 / 20

port = 3306 #### 追加 socket = /var/lib/mysql/mysql.sock #### 追加 default-character-set = utf8 #### 追加 # this is read by the standalone daemon and embedded servers [server] # this is only for the mysqld standalone daemon [mysqld] port = 3306 #### 追加 socket = /var/lib/mysql/mysql.sock #### 追加 datadir = /var/lib/mysql #### 追加 character-set-server = utf8 #### 追加 server-id = 1 #### 追加 # # * Galera-related settings # [galera] # Mandatory settings #wsrep_on=ON #wsrep_provider= #wsrep_cluster_address= #binlog_format=row #default_storage_engine=InnoDB #innodb_autoinc_lock_mode=2 # # Allow server to accept connections on all interfaces. # #bind-address=0.0.0.0 # # Optional setting #wsrep_slave_threads=1 #innodb_flush_log_at_trx_commit=0 # this is only for embedded server [embedded] # This group is only read by MariaDB servers, not by MySQL. # If you use the same .cnf file for MySQL and MariaDB, # you can put MariaDB-only options here [mariadb] # This group is only read by MariaDB-10.4 servers. # If you use the same .cnf file for MariaDB of different versions, # use this group for options that older servers don't understand [mariadb-10.4]

utf8 設定時の注意点

[client] セクションと [mysqld] セクション側の utf8 の設定パラメータ名が違うので、間違えないように注意してください。

[client]

default-character-set = utf8

[mysqld]

character-set-server = utf8

Page 12: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

12 / 20

pid-file 設定時の注意点

pid-file を設定しなかった場合、基本的には、/var/run ディレクトリの直下に生成されますが、明示的に pid-file を設定する

場合は、以下のように [mysqld] セクションに設定してくだささい。

[mysqld]

pid-file = /var/run/mysqld/mysqld.pid

特に、/var/run 直下に pid 専用のディレクトリを掘る際には、注意が必要なので、以下をご一読ください。

• CentOS 7~8 : /var/run 直下に作ったディレクトリが消えないようにする

また、念のためですが、pid は基本的にプロセス名に合わせるため、mariadb.pid ではなく、mysqld.pid にしています。

MariaDB のインストールと初期設定はこれで完了です。

mysql_secure_installation を用いたセキュリティ設定

初期状態だと テスト用のデータベース、 アノニマスユーザ (匿名のログインユーザ) 等。 不要なものが入っているため、キレイな状

態にしておく必要があります。

また、ルートユーザのパスワード設定、 遠隔からのルートユーザのログインを許可するかどうか 等。 一連の作業を対話形式で

簡単に設定できるように、 mysql_secure_installation というツールが用意されています。

Step 1. MariaDB サービス有効化、及びサービス開始

mysql_secure_installation は、サービスが開始状態でないと使えないので、まずは、サービスを起動します。

mariadb.service サービスを起動すると mysqld プロセスが起動することが分かります。

MariaDB サービス登録・起動

# systemctl enable mariadb.service

# systemctl start mariadb.service

# ps -ef | grep "mysql" | grep -v "grep"

mysql 22979 1 0 16:21 ? 00:00:02 /usr/sbin/mysqld

systemctl enable がエラーで失敗した場合には

失敗した場合は、無効なリンクが張られている、または systemctl 実行時に有効なサービス名が指定されてない可能性が

高いので、以下を試して見てください。 (unlink はリンクを消すコマンドです)

# systemctl enable mysqld.service

Failed to execute operation: Too many levels of symbolic links

# ls -l /etc/systemd/system/mysql*

lrwxrwxrwx 1 root root 39 5 月 8 19:49 /etc/systemd/system/mysql.service ->

/usr/lib/systemd/system/mariadb.service

lrwxrwxrwx 1 root root 39 5 月 8 19:49 /etc/systemd/system/mysqld.service ->

/usr/lib/systemd/system/mariadb.service

# unlink /etc/systemd/system/mysql.service

# unlink /etc/systemd/system/mysqld.service

# ls -l /usr/lib/systemd/system | egrep "(mysql|mariadb)"

-rw-r--r-- 1 root root 4511 6 月 16 10:23 mariadb.service

# systemctl enable mariadb.service

Page 13: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

13 / 20

Step 2. MariaDB セキュリティ設定 (推奨)

後は、mysql_secure_installation を実行し、一連のセキュリティ設定を実施します。

公式ページにも記載がありますが、本番環境の場合は、必ず実行することが推奨されています。

• 現在の root パスワード入力 : 最初は Enter で良い

• root パスワード設定

• root パスワード設定 (再入力)

• 匿名ユーザ削除

• root ユーザのリモートログインをブロック

• テストデータベース削除

• ユーザ権限が保存されている privilege テーブルのリロード

ちなみに、mysql_secure_installation は、/usr/bin に入っています。

mysql_secure_installation を用いたセキュリティ設定

# whereis mysql_secure_installation

mysql_secure_installation:/usr/bin/mysql_secure_installation/usr/share/man/man1/mysql_secure_in

stallation.1.gz

あとは、mysql_secure_installation コマンドを実行し、セキュリティ設定を実施します。以下、2通りあります。

mysql_secure_installation を用いたセキュリティ設定 (ソケット認証追加前の Ver)[開く]

# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): #### Enter OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] Y #### root パスワードを設定するか New password: #### root パスワード入力 Re-enter new password: #### root パスワード再入力 Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y #### 匿名ユーザを削除するか ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Y #### root ユーザのリモートログインを無効にするか ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.

Page 14: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

14 / 20

Remove test database and access to it? [Y/n] Y #### テスト DB を削除するか - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Y #### ユーザ権限テーブルをリロードするか ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!

mysql_secure_installation を用いたセキュリティ設定 (ソケット認証追加後の Ver)[開く]

# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and haven't set the root password yet, you should just press enter here. Enter current password for root (enter for none): #### Enter OK, successfully used password, moving on... Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] n #### ソケット認証を有効にするか ... skipping. You already have your root account protected, so you can safely answer 'n'. Change the root password? [Y/n] n #### root パスワードを変更するか ... skipping. By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y #### 匿名ユーザを削除するか ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Y #### root ユーザのリモートログインを無効にするか ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Y #### テスト DB を削除するか - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Y #### ユーザ権限テーブルをリロードするか ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!

Page 15: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

15 / 20

ソケット認証を無効化する方法

MariaDB 10.4 で新しく追加されたソケット認証を有効にした方がセキュリティは向上しますが、後から有効化できるため、この例

では一旦無効にしています。

すでにソケット認証が有効化されていて、何らかの問題が発生した場合には、以下のやり方でソケット認証を無効にすることも可能

です。

/etc/my.cnf.d/server.cnf

[mariadb]

disable_unix_socket

# systemctl restart mariadb

Step 3. MariaDB へログイン

最後に、MariaDB へログイン出来ることを確認します。

# mysql -uroot -p

Enter password: #### root パスワード入力

Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 14 Server version: 10.4.10-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +-------------------------+ | Database | +-------------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ MariaDB [(none)]> quit; ##ログアウト

●FTP サーバの構築

FTP 接続用ユーザ作成

まずは FTP で接続するためのユーザを作成する。

# useradd ftp-user

# passwd ftp-user # パスワード設定

FTP 用のディレクトリ作成

FTP では通常 chroot といって、上位のディレクトリ

に接続できないような設定を入れることが通常で

す。

なので、まずは FTP で接続したときにデフォルトでた

どり着くディレクトリを作成しておきます。(今回は

/var/www/ftp_dir とします。)

作成したら権限変更もしておきましょう。

# mkdir -p /var/www/ftp_dir

# chown ftp-user /var/www/ftp_dir

# chmod 755 /var/www/ftp_dir

Page 16: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

16 / 20

FTP のインストール

# yum -y install vsftpd

FTP の設定

/etc/vsftpd/vsftpd.conf

# 以下を追記します。 # userlist_file で指定指定したユーザを有効にする(接続できる) userlist_enable=YES # ア ク セ ス フ ァ イ ル( /etc/hosts.allow, /etc/hosts.deny)をアクセス制御に利用しない tcp_wrappers=NO # パッシブモードの接続を許可する pasv_enable=YES # FTP サーバの IP アドレスを指定(パッシブモードで接続時) pasv_address=[FTP サ ー バ ー のIP] ※上記の IP は固定となります。 # ポート指定 pasv_min_port=60001 pasv_max_port=60010 ※ポートはハイポートであれば特に指定はありません # ドットから始まるファイルを含めた一覧を返す force_dot_files=YES # ファイル(またはディレクトリ)のタイムスタンプの表示をローカルタイムで表示する use_localtime=YES #ユーザー毎の設定ファイルの場所を指定する。 user_config_dir=/etc/vsftpd/user_conf /etc/vsftpd/vsftpd.conf # 以下のコメントを外します。 chroot_local_user=NO #chroot を有効化する。 chroot_list_enable=YES #chroot 対象のユーザーリストファイルの場所を指定する。 chroot_list_file=/etc/vsftpd/chroot_list

FTP 接続用ユーザの登録

/etc/vsftpd/chroot_list

ftp-user

# mkdir /etc/vsftpd/user_conf

# vi /etc/vsftpd/user_conf/ftp-user

以下を設定することで ftp-user で接続したときの chroot は「/var/www/ftp_dir」となる。

Page 17: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

17 / 20

/etc/vsftpd/user_conf/ftp-user

local_root=/var/www/ftp_dir

サービス起動

# systemctl start vsftpd

接続確認

自分の PC からコマンドプロンプトを起動し、接続確認を

行います。

>ftp [FTP サーバーの IP アドレス]

[FTP サーバーの IP アドレス]に接続しました。

220 (vsFTPd x.0.x)

200 Always in UTF8 mode.

ユーザー ([FTP サーバーの IP アドレス]:(none)): ←FTP 接続ユーザ名

331 Please specify the password. ←パスワードを入力

パスワード: user

230 Login successful. ←これがでていれば接続 OK

試しに dir を打ってみると、chroot に設定したフォルダ配下のファイルが確認できる。

★上記設定の追記事項

制御コネクションのポート番号をデフォルトの

【21】から【61234】に変更します。

設定ファイルは【/etc/vsftpd/vsftpd.conf】になります。

listen_port=61234(追加)

6.接続アカウントの設定

【vsftpd】の設定が完了したら

次は、【/etc/vsftpd.user_list】を編集します。

ここに FTP サーバーへの接続を許可するアカウント名を記載します。

[root@localhost ~]# vi /etc/vsftpd/user_list # vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers # for users that are denied. root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody

デフォルトでは上記の記述になっていますが全て削除し、1 ユーザーのみ記述しておきます。

Page 18: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

18 / 20

今回は以前作成した【ftp-user】と【ftp-hogehoge】のみの記述に設定しました。

※ユーザーの作成方法はこちら

www.chuken-engineer.com # vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers # for users that are denied. ftp-user ftp-hogehoge

設定が完了したら【vsftpd】の自動起動設定を行います。

[root@localhost ~]# systemctl enable vsftpd.service

Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to

/usr/lib/systemd/system/vsftpd.service

【vsftpd】を再起動します。

[root@localhost ~]# systemctl restart vsftpd

firewall のポートを開放する

制御コネクション用の【61234】と

デ ー タ コ ネ ク シ ョ ン 用 の 【 61000 】 ~

【61005】を開放します。

【firewall】で ftp ポートを開放

[root@localhost ~]# firewall-cmd --permanent --add-port=61234/tcp

success

[root@localhost ~]# firewall-cmd --permanent --add-port=61000-61005/tcp

success

【firewall】を再起動

[root@localhost ~]# systemctl restart

firewalld.service

以上で設定は完了です。

Page 19: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

19 / 20

設定の確認する

ではちゃんと設定されたか確認してみます。

確認用にフリーソフトの【FFFTP】を使用しました。

①【FFFTP】というソフトを起動し【新規ホスト】をクリックします。

②【基本】タブで【ホスト名】【ユーザー名】【パスワード】を入力し【OK】をクリックします。

③【拡張】タブで【ポート番号】に【61234】と入力し【OK】をクリックします。

この時【PASV】モードを使うにチェックが入っていることを確認します。

④ホスト一覧から先ほど登録したホスト名を選択し【接続】をクリック

⑤無事に接続が完了しました。 デフォルトのフォルダパスは【/home/testuser】になっています。

ではこのフォルダにファイル転送して Linux 上で確認してみます。

今回は text.txt という名前のファイルを使用します。

中身は【This is a test.】と書いてるだけのものです。

Page 20: 「Apache httpd 2.4」「PHP7.3」「MariaDB」のインストー …Webサーバ Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 # yum -y install httpd

20 / 20

【FFFTP】画面からドラッグドロップでファイルを

転送します。

SSH 接続の画面で以下のコマンドを実行しま

す。

[root@localhost ~]# cat

/home/testuser/test.txt

しっかりとファイル転送が出来ていることを確認

出来ました。