サーバー

さくらのVPS3日目 PHPとMariaDBのセットアップ

上図はテストプログラム「hello.php」の結果です。

phpのインストール

PHP7.1はremiリポジトリにあり、デフォルトのリポジトリ(公式リポジトリとEPELリポジトリ)には置かれていないため、remiリポジトリを利用できるようにします。

# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

PHPのインストールは、本体と合わせて拡張パッケージを指定します。次のコマンドでパッケージリストを表示、確認します。

# yum search php71

インストールを実行します。

# yum install --enablerepo=remi,remi-php71 php php-cli php-common php-devel php-gd php-mbstring php-mysqlnd php-pdo php-soap php-xml php-xmlrpc

当方が指定したパッケージは次の通りです。パッケージの内容は詳しくありませんので、とりあえず以下のパッケージを指定しました。

  • php
    PHP本体
  • php-cli
    コマンドラインからPHPプログラムを実行する
  • php-devel
    PHP拡張を構築する際のコンパイルに必要、らしい
  • php-common
    他のパッケージから利用される共通ファイル、と推測
  • php-gd
    グラフィック関係の処理に必要なライブラリ
  • php-mbstring
    日本語利用で必要なライブラリ
  • php-mysqlnd
    MySQLを利用するためのライブラリ
  • php-pdo
    ODBCドライバを利用してDBにアクセスするためのライブラリ
  • php-soap
    SOAPを利用するためのライブラリ
  • php-xml
    XMLを利用するためのライブラリ
  • php-xmlrpc
    XML-RPCプロトコルを利用するためのライブラリ

本体以外に必要と思われるのはphp-mbstring,php-mysqlndなのですが、他のブログとか確認しながら上記のようにしました。

次にphp.iniの設定ですが、タイムゾーン、エラー出力、エラー表示は、.htaccessファイル内で設定することにして、PHP起動時はプログラムでファイルをアップロードするときのサイズ指定だけ変更しました。

# vim /etc/php.ini

upload_max_filesize = 128M

さて、モジュールモードでPHPを動作させる場合のphp.iniの設定は、.htaccessファイル内で設定できます。そこで、日付時間取り扱いのローカルタイムとエラーログ出力先を、同ファイル内に設定します。

操作しているHTMLのドキュメントディレクトリは「/var/www/html」です。

# vim /var/www/html/.htaccess

php_value date.timezone "Asia/Tokyo"
php_value error_log /var/log/php_error

ここまでの設定でPHPを起動すると、エラーログが出力できません。

調べてみると、どうやらSELinuxでログファイルの書き込みができるように設定しなければならないことが分かりました。

そこで、プロセスがPHPエラーをログファイルに書き込めるように、ファイルパーミションのオーナーとSELinuxのラベルを書き換えます。

# touch /var/log/php_error

# chown apache:apache /var/log/php_error

# chcon -t httpd_log_t /var/log/php_error

ようやく準備が整いましたので、Apacheを再起動して以下のテストプログラムを実行します。

<html>
 <body style="text-align:center; margin-top:70px;">
<?php
 echo "Hello World!<br>";
 echo '<img border="0" src="data:image/png;base64,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" alt="PHP logo">';
?>
 </body>
</html>

PHPのロゴは、phpinfo()を実行した際表示された画像データをコピーしました。

MariaDBのインストール

WordPressが標準で利用するデータベースはMySQLです。MariaDBはMySQLの開発者が開発した互換製品で、インストールして同じように利用できるようです(利用は今回が初めてです)。

yumコマンドでインストール後、mysql_secure_installationコマンドを利用してMariaDBのrootユーザーのパスワードを設定します。

このrootユーザーはMariaDBの管理者ユーザー名で、MariaDBのユーザー管理はデータベース上でユーザー登録、アクセス管理の設定をします。

# yum install mariadb-server

# systemctl start mariadb

# mysql_secure_installation

yumでインストールの際、インストール時のオプションで全てyesを返すときは、yum -y install のように-yオプションを設定すればOKです。

次に、データベースで扱う文字コードをUTF-8に設定します。

mysqlコマンドでMariaDBにログインし、キャラクターセットを確認してみましょう。

# mysql -u root -p

[MariaDB [(none)]> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
[MariaDB [(none)]> exit;

MariaDBのデフォルトキャクターセットをlatin1からUTF-8へ変更するため、環境ファイル(/etc/my.cnf.d/server.cnf)を編集します。

下記の内容は、[] で囲われた各セクションにおいて追加設定するキャラクターセットの情報です。

# vim /etc/my.cnf.d/client.cnf
[client]
default-character-set=utf8
# vim /etc/my.cnt.d/server.cnf
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

編集が終了したらMariaDBサーバーをリスタートして、mysqlでログイン後上記コマンドを利用して再度キャラクターセットを表示して、latin1がutf8に変更されたことを確認します。

引き続いて、WordPressで利用するデータベースの作成とユーザー登録をします。なおデータベースのアクセスはローカルのみ有効とし、LANやWANなどネットワークからのアクセスはデフォルトで禁止状態になっており、PHPプログラムで利用する場合もローカルからの利用となります。

よって登録するユーザーは、ローカル接続のユーザーとします。

# mysql -u root -p mysql

[MariaDB [mysql]> create database testdb;

[MariaDB [mysql]> grant all privileges on testdb.* to testuser@localhost identified by 'xxx';

操作の内容はデータベース「testdb」を作成し、管理者ユーザー「testuser」をパスワード「xxx(任意)」で登録しました。

以上がWordPressのwp-config.phpに設定するデータベース名、ユーザー名、パスワードとなります。

 

以下参考にさせていただいたページのリンクです。

CentOSでPHPのエラーログが出力されない
CentOS7.1 64bit SELinuxによるアクセス制御
CentOS7 MariaDB インストール、及び初期設定
Setting Character Sets and Collations
MariaDBのインストールと初期設定 | CentOS 7

MySQLに関して当方の備忘録が以下にありますので参考まで。

MySQL

 

記事に関して質問をいただいても回答できませのでご了承ください。