Raspberry Pi 2 + RASPBIAN JESSIE LITE でサーバー構築 (WEB サーバー)

2016/11/17

WEBサーバーは情報の豊富な apache2 をインストールします。

いきなり Wordpress をインストールしても依存関係で apache2 もインストールされると思いますが、問題が発生した時の対処方法を学ぶためにもひとつひとつ積み重ねていこうと思います。


apache2  のインストール

サクッとインストールします。 apache2 はバージョンによりディレクトリ構成が変わるのでバージョンの確認は結構大切です。

 root@raspberrypi:~# apt-get update
 root@raspberrypi:~# apt-get install -y apache2

 root@raspberrypi:~# /usr/sbin/apache2 -v バージョンを確認してみます。
 Server version: Apache/2.4.10 (Raspbian)

外部からサイトにアクセスしてみる

ファイヤーウォールの設定を行い、携帯電話などの外部よりサイトにアクセスしてみる。 なお、DDNS、ポート開放の手順等は詳しいサイトがあるのでここでは割愛する。

Apache2 Debian Default Page が表示されればとりあえず問題なし。

 root@raspberrypi:~# ufw allow 80 ポート80(http)のアクセスを許可
 root@raspberrypi:~# ufw allow 8080 ポート8080(http)のアクセスを許可

apache2  の設定

設定の前に Apache のユーザーグループを確認しておき、アクセスするユーザーをグループに追加しておきます。

 root@raspberrypi:~# cat /etc/apache2/emvvars
 export APACHE_RUN_USER=www-data
 export APACHE_RUN_GROUP=www-data

 root@raspberrypi:~# gpasswd -a ユーザー名 www-data

apache2 で複数のファイルで設定を行います。

初めに /etc/apache2/conf-available/security.conf を編集します。

 root@raspberrypi:~# vi /etc/apache2/conf-available/security.conf

 =該当箇所を修正= 先頭の # はコメント削除 は修正・追記

   #ServerSignature Off
   #ServerSignature On #を付けコメントアウト

ServerSignature が On 場合、エラードキュメントにサーバー情報が付加され攻撃者に情報を与えることとなるので Off にしておきます。 なお、確認で表示した Apache2 の標準ページがサイトのルートに残っているのでこれを削除し、新しいテストページを作成しておきます。

 root@raspberrypi:~# rm /var/www/html/index.html

 root@raspberrypi:~# echo "<html><title>Test</title><body>Test Page</body></html>" >> /var/www/html/index.html

Debian の apache2 では主要な設定は apache2.conf で行うが、モジュールや個別サイトの設定は /mods-enabled /sites-enabled に記述します。ただ、前記箇所に記述しただけでは有効とならず、専用コマンドで有効化させます。 有効化されると/mods-available /sites-available にリンクが貼られます。

標準サイトの設定は /etc/apache2/sites-available/ 000-default.conf で行っているので、これを編集します。

<Directory ○○> ~</Directory> で囲まれた部分をディレクティブと呼び、○○以下のディレクトリに対しての有効となる制限を定義します。

 root@raspberrypi:~# vi /etc/apache2/sites-available/000-default.conf


   ServerAdmin webmaster@localhost
   DocumentRoot /var/www/html

   =上記表記の後に追記=

   <Directory /var/www/html/>
           Options FollowSymLinks シンボリックリンクファイルを認識させる
           AllowOverride All .htaccess で設計可能なものを有効にする
           Require all granted どこからアクセスがあっても許可する
   </Directory>

以上の設定をしたら、設定ファイルのチェックを行ってみます。 とりあえず Syntax OK と出たら apache2 を再起動しアクセスをテストしてみます。

 root@raspberrypi:~# apache2ctl configtest

 root@raspberrypi:~# service apache2 restart

PHP のインストール

サイトによって初期インストール時のライブラリ指定に差があり、何が必要なのかはっきりしないので、とりあえず先人の設定を真似してみます。

 root@raspberrypi:~# apt-get install -y php5 php5-cli php5-gd php5-mysqlnd php5-pgsql php5-mcrypt php5-dev

 root@raspberrypi:~# php -v バージョンを確認してみます。

 PHP 5.6.27-0+deb8u1 (cli) (built: Oct 24 2016 18:22:27)

PHP の設定とテスト

タイムゾーンのみ設定します。

 root@raspberrypi:~# vi /etc/php5/apache2/php.ini

   =該当箇所を修正= 先頭の # はコメント削除 は修正・追記

   ;date.timezone = Asia/Tokyo

テストファイルを作成します。

 root@raspberrypi:~# echo "<?php phpinfo();" >> /var/www/html/test.php

apache2 を再起動し外部からサイトにアクセスしで PHP の環境変数リストが表示されれば問題なしです。

MySQL のインストール

 MySQL をインストールします。 MySQL のインストールは対話型となっており、インストール中に root のパスワードを入力する必要があるのであらかじめ用意しておきます。

 root@raspberrypi:~# apt-get install -y mysql-server

MySQL にアクセス

コマンドラインで MySQL サーバーにアクセスします。

 root@raspberrypi:~# mysql -u root -p
 Enter password: インストール時に設定した MySQL root のパスワードを入力

 mysql> show variables like 'char%'; 文字コードを確認してみます。
 +--------------------------+----------------------------+
 | 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)

 mysql> exit

Server の文字コードが latin1 になっているため utf8 に変更します。

 root@raspberrypi:~# vi /etc/mysql/my.cnf

 [mysqld]

 =上記表示の下に以下を追記=
 character-set-server=utf8

MySQL を再起動し再度文字コードを確認します。

 root@raspberrypi:~# service mysql restart

 root@raspberrypi:~# mysql -u root -p
 Enter password:

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

 mysql> exit

phpMyAdmin のインストール

phpMyAdmin のインストールで MySQL をブラウザで操作できるようになります。 インストール中に使用する WEB サーバーを尋ねられますが apache2 に * を入れ先に進みます。

dbconfig-common で設定しますか? と尋ねられたら <NO> で先に進みます。

 root@raspberrypi:~# apt-get install -y phpmyadmin

phpMyAdmin にアクセス

インストールが終了したら外部から http://アドレス/phpmyadmin/ にアクセスしログイン画面が出れば問題ありません。

上記のように /phpmyadmin/ と入力すればログイン画面が表示されるため、標準の phpmyadmin ではなく自分だけがわかる任意の文字列でエイリアスを設定します。

 root@raspberrypi:~# vi /etc/phpmyadlin/apache.conf

   = 3 行目を修正= は修正・追記

   Alias /phpmyadmin /usr/share/任意の文字列

修正後、apache2 を再起動しアクセスできるか確認します。

Wordpress 用データベースの作成

やっと Wordpress をインストールできる状態まで来ました。

その前に wordpress で使用するデータベースを作成します。

phpMyAdmin で作成しても良いですが、ここは Linux サーバーらしくコマンドラインで行います。

 root@raspberrypi:~# mysql -u root -p MySQL にログイン
 Enter password:

 mysql> create database データベース名; ← データベースを作成
 grant all privileges on データベース名.* to 'ユーザー名'@'localhost' identified by 'パスワード';
 ※データベース名、ユーザー名、ホスト名(localhost)、パスワード
  以上は wordpress 起動時に必要になるので控えておく。
 mysql> quit

補足ですが、 MySQL のコマンドをいくつか上げておきます。

 root@raspberrypi:~# mysql -u root -p
 password:

 mysql> show databases; データベースのリストを表示

 mysql> drop user 'ユーザー名'@'ホスト名' ユーザーの削除

 mysql> drop database データベース名; データベースの削除

Wordpress のインストール

データベースの作成が終了したので wordpress をインストールします。 インストールは wget でダウンロードすることもできるのですが、wordpress 日本語版が出ているので、wget でダウンロードします。

 root@raspberrypi:~# cd /var/www/html

 root@raspberrypi:/var/www/html# wget https://ja.wordpress.org/latest-ja.tar.gz
 日本語版サイトより wordpress の最新版をダウンロードする

 root@raspberrypi:/var/www/html# tar zxvf ja.wordpress.org/latest-ja.tar.gz
 ダウンロードしたファイルを解凍する

 root@raspberrypi:/var/www/html# chown -R www-data.www-data wordpress
 ディレクトリの所有権を変更する

 root@raspberrypi:/var/www/html# find wordpress -type d | xargs chmod 775
 ディレクトリのパーミッションを 775 に変更

 root@raspberrypi:/var/www/html# find wordpress -type f | sudo xargs chmod 664
 ファイルのパーミッションを 664 に変更

 root@raspberrypi:/var/www/html# rm ja.wordpress.org/latest-ja.tar.gz
 圧縮ファイルは不要なので削除する

wp-config.php の設定

ダウンロードした日本語版 wordpress を解凍した段階では wp-config.php が無いのでサンプルファイルをリネームして編集する。

 root@raspberrypi:/var/www/html# cd /

 root@raspberrypi:~# cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
 ※サンプルファイルをコピーし設定ファイルとする。

 root@raspberrypi:~# vi /var/www/html/wordpress/wp-config.php 設定ファイルを編集

   =該当箇所を修正= は修正・追記

   define('DB_NAME', 'データベース名');
   define('DB_USER', 'ユーザー名');
   define('DB_PASSWORD', 'パスワード');


以上の設定が終了したら、外部よりサイトにアクセスします。 http://アドレス/wordpress/

後は wordpress の設定画面にしたがって Install Wordpress のボタンを押します。

インストールが終了したら外部から http://アドレス/phpmyadmin/ にアクセスしログイン画面が出れば問題ありません。


以上で基本的な設定は全て終了で、ブログの運用を開始することができます。

次章では本来の目的であるバックアップ関連とセキュリティ関係をまとめます。