どうも!職業訓練生のがっちゃんです!
ただいま、長期人材育成「情報セキュリティ管理者資格コース」を絶賛受講中です!
学校ではチームとしての進級ワークショップとして「WordPressでホームページを作成」という課題がありました。私たちのチームは「日本酒の蔵元を応援するサイトを作ろう!」ということで、教室内にWebサーバを作り、そこにWordPressをインストしてホームページ作りをしました。
進級ワークショップの復習もかねて「それを自宅でできないかな!?出来上がったら子どもにブログの作り方を教えられるよなぁ」と思いつき、自宅のラズパイを利用して「自宅専用ブログサイト」を作成してみることにしました。
まずはRaspbianの更新から
今回、ラズパイには「Raspbian」がインストール済みであることを前提に話をすすめていきます。ご了承ください。
まずは下準備、各ソフトの更新作業です。
パッケージリストとパッケージの更新
$ sudo apt-get update
$ sudo apt-get upgrade
OSの更新
$ sudo apt-get dist-upgrade
ファームウェアの更新
$ sudo apt-get install rpi-update
$ sudo rpi-update
$ sudo reboot #最後に再起動しましょう。
raspi-configの更新
$ sudo raspi-config #以下のような画面が出ますので「8 Update」を選択。
apt-get updateがうまくいかないとき
以下のようなメッセージが出て、アップデートが出来ない理由は、「更新のために見に行くミラーサーバが、何らかの理由で安全でないから更新を無効にするよ」と言っているようです。
これを解消させるため、不要なキャッシュを消し、最新のミラーサーバを見に行くように設定し直します。
$ sudo apt-get clean #不要なキャッシュを消去
$ sudo rm -rf /var/lib/apt/lists/*
$ nano /etc/apt/sources.list #見に行くミラーサーバを最新のサイトに書き換えます。
以下のように、今まで見に行っていたミラーサーバは#でコメントアウトし、先頭に、見に行くミラーサーバのURLを書き込みます。
2020.3.7現在、日本の最新ミラーサイトに書き換えました。Raspbianのミラーサイト一覧で、お住まいの地域に一番近いサーバを確認して書き換えることをおすすめします。
上記ミラーサーバの変更を実行しても、まだうまくインストールできない場合は、OS側とリポジトリ側の「パッケージのバージョン」が一致しているのかを確認しましょう。
上記のように、OS側はBusterで最新versionだったのですが、リポジトリ側の設定がStretchと1世代古い設定になっていました。このようにOSとリポジトリのパッケージのversionが合っていないとインストールできない場合があります。
Webサーバにするための設定
サーバに固定IPを割り当てます
クライアントPCから接続して編集などを行うために、固定IPを割り当てる必要があります。デスクトップ画面右上の「↑↓」の上で右クリックし「Wiewless&Wired Network Settings」を選択します。
出てきた設定画面のInterfaceの右にある項目の▼をクリックし、有線LANを選択します。ここでは「eth0」になっていますが、環境によって違います。
「Automatically configure empty options」のチェックを外し、DHCPによる動的割り振りを解除します。「IPv4 Address」に好きな固定IPを割り振ってください。「Router」「DNS Servers」はデフォルトゲートウエイの値を入力してください。通常はどちらも同じIPになります。「Apply」をクリックしたあと「Close」をクリックし、設定を終了させます。
最後に再起動させれば、先ほど設定した固定IPが割り振られます。
ファイアウォールの設定
ファイルのやり取りをするために22番ポートを、Webサービス利用のために80番ポートを開放します。また、クライアントPCからssh接続出来るように設定していきます。
$ sudo apt-get install ufw # ufwのインストール
$ sudo ufw allow 22 # ポートの開放(WEBサーバとして使うので80ポートも開放する)
$ sudo ufw default deny # 許可されたポート以外を閉じる
$ sudo ufw enable # ufwの有効化
$ sudo ufw status #ファイアウオールの設定を確認
sshの設定
“5 Interfacing Options” -> “P2 SSH” -> “Would you like the SSH server to be enabled?” -> “はい” によりsshが有効化されます。
次に、sshの設定ファイルは/etc/ssh/sshd_configにあるので以下2行をyesに書き換えていきます。書かれていない場合は、書き足してください。
$ nano /etc/ssh/sshd_config
PermitRootLogin no # rootログインの禁止
PasswordAuthentication no # パスワード認証の禁止
ssh接続がうまくいかない場合の対処法
上記の設定で通常、ssh接続は可能になるはずなのですが、今回、私のちょっとしたミスで以下のような画面が出力されssh接続がうまくいかなかったので記録しておきます。
今回の原因
SSHでは、安全な接続を行うために接続先サーバの情報(RSA公開鍵のフィンガープリント)を、クライアントは保存する。SSH接続時には、以前保存したこの情報と、いままさに接続しようとしているサーバの情報が一致しているかを確認する。こうすることで、ユーザ(クライアント)が知らない間に、別のサーバへ接続してしまうことを防ぎ、よりセキュアになる。
実は以前、私のラズパイでCentOS7が走るのかを検証した時の固定IPと同じ固定IPをふってしまったため、上記の安全措置がとられ、接続できなかったようである。原因が分かれば後はそれを取り除いてあげるだけである。保存している接続先サーバの情報(フィンガープリント)を削除してしまえば、新規接続となるためエラーを回避できる。
保存している接続先サーバの情報は~/home/ユーザ名/.ssh/known_hostsファイルなので、これを編集します。エラーとなったサーバ名(またはIPアドレス)から始まる行を1行削除するだけでOKです。今回は以下の「192.168.1.50」の分を削除すれば接続できるようになるはずである。
この1行を削除後、再度接続試行してみると成功しました!
Apache、PHP7.0をインストール
PHP7.0と併せてPHPのMySQL接続モジュールをインストールします。
$ sudo apt install php7.0 php7.0-mysql
Apache2と併せてPHP接続モジュールをインストールします。
$ sudo apt install apache2 apache2-mod-php7.0
Apache2はPHPと併せてインストール済とのことで、再起動しておきます。
Apacheの稼働状態を次のコマンドで確認しておきましょう。
$ sudo systemctl status apache2
※OSの起動に伴いApace2も起動するのが既定のようです。
「nano」コマンドで、DocumentRoot”/var/www/html/”にファイル名”info.php”を新規作成します。
$ sudo nano /var/www/html/info.php
開いた編集画面に次のコードを入力して、保存(Ctrl+O → Enter)し、閉じ(Ctrl+X)ます。
<?php phpinfo(); ?>
クライアントPC側のブラウザで、アドレス欄に”ラズパイのIPアドレス(例 192.168.1.16 や localhost)/info.php”を入力すると、PHP7.0の情報ページが表示されます。これでPHPが正常に動作する環境が整ったことが分かります。
Apacheをインストするとテストページとして以下のような「index.html」も作成されます。こちらは後々削除するか、別の「index.html」に変更する必要があります。
MariaDBをインストール
※Raspbianでは、「MariaDB」を使用することを推奨されているのでこちらをインストールします。ちなみに「MySQL」とは兄弟みたいな関係なので、MariaDBでもmysqlコマンドが問題なく利用できます。
$ sudo apt install mariadb-client mariadb-server
途中、英語で「ディスク容量、これくらい使うけど大丈夫!?」っていう確認があると思いますが「yes」にしてくださいね。
$ sudo mysql -u root -p #MariaDBに接続できるかを確認します。
パスワードを求められたらデフォルトは「root」です。以下の画面が出れば接続成功です。
PHPMyadminをインストール
次に、「phpMyadmin」をインストールします。
※「phpMyadmin」を、インストールする場合は、それぞれの接続設定が必要なため、必ず「Apache」「PHP」「MariaDB」をインストールしてから実行してくださいね。でないと後々の設定が面倒なことになってしまいます。
$ sudo apt-get install phpmyadmin
途中で聞いてくることは以下の通りです。
データベースのインストール:「はい」を選択
DBサーバに登録するためにphpMyadmin用のパスワードを入力してください:「root」など好きなパスワードにしてください。
このようなエラーが出た場合、4択画面になりますが、結局「中断する」「無視する」で落ち着くことになり、phpMyadminの設定は中断されてしまいます。インストールは完了しているようです。
※何度かトライしたのですが、毎回エラーが出てしまい、成功した件を掲載することができませんでした。ごめんなさいね。
MySQLへの接続方法:「UNIXソケット」
phpMyadminが使用するMysqlデータベース名:なんでも構いませんが今回は「phpmyadmin_mysqldb」にしました。
Phpmyadmin用のMySQLユーザ名:「phpmyadmin@localhost」などお好きなユーザ名を設定してください。
phpMyadmin用のMySQLアプリケーションパスワード:「root」などお好きなパスワードを設定してください。
インストールされたかを確認します。まず、設定ファイルを書き換えます。
$ nano /etc/apache2/apache2.conf
下記の1行を一番下に追記してください。
Include /etc/phpmyadmin/apache.conf
そして、apache2を再起動します。
$ sudo /etc/init.d/apache2 restart
再起動後、クライアント側のPCのブラウザで下記のようにURLを入力してアクセスします(xxxはサーバの固定IPアドレス)。
XXX.XXX.XXX.XXX/phpmyadmin/
以下のようにログイン画面が表示されたらOKです。
先ほど設定した「ユーザ名」と「パスワード」でログインします。
これでWebサーバが出来上がりました。次はここに「Wordpress」をインストールしていく手順を書いていきます。
WordPressをインストール
事前準備
WordPressからMariaDBへアクセスするためのユーザ設定を行います。MariaDBにアクセスし、新規データベース「wordpress」(データベース名は好きな名前にしてくださいね。ここではWordpressで作成します)を作成します。
$ sudo mysql
MariaDB [(none)]> create database wordpress default charset utf8;
次に新規ユーザを作成します。設定するユーザ名、パスワードは、好きなのにしてくださいね。
MariaDB [(none)]> CREATE USER ‘好きなusername’@’localhost’ IDENTIFIED BY ‘好きなpassword’;
Query OK, 0 rows affected (0.01 sec) と出たら成功です。
「mysql」のデータベースに移動し、新規ユーザが作成されているかを確認します。
MariaDB [(none)]> use mysql;
MariaDB [mysql]> select user,password,plugin from user;
上記の表に自分が作ったユーザ名があれば成功です。
最後に、作成した「Wordpress」データベースに対して、新規作成したユーザへアクセス権(今回はすべての権限)を付与します。「*」はワイルドカードで、今回は「wordpressデータベースの中にあるすべてのテーブル」という意味で使用しています。
MariaDB [(none)]> GRANT ALL on wordpress.* TO ‘先ほど作成したusername’@’localhost’ IDENTIFIED BY ‘先ほど作成したpassword’;
Query OK, 0 rows affected (0.00 sec) と出たら成功です。これで設定は完了です。「exit」でMariaDBから出ましょう。
MariaDB [(none)]> exit
wgetコマンドでWordpressをインストール
インターネットに接続できる環境の場合は、wget コマンドで直接ダウンロードできます。まずは以下のダウンロードしたいディレクトリまで移動し、wgetコマンドでWordpressの圧縮フォルダを取得、解凍していきます。
$ cd /var/www/html #カレントディレクトリの移動
$ wget http://wordpress.org/latest.tar.gz #最新のWordpress圧縮フォルダをダウンロード
$ tar xzf latest.tar.gz #「latest.tar.gz」を展開
$ ls -la #フォルダの内容を確認。以下のように「Wordpress」フォルダが作成されていたら成功です。
($ rm -rf wordpress latest.tar.gz ) ダウンロードしたwordpress圧縮フォルダを削除するコマンドです。後々これが必要な場合(もう一つWordpressのサイトを作成する場合)はこれを実行せず、他の場所に移動させておくようにしてください。
chown(Change Owner)でhtmlフォルダの所有者を変更。これを実行していないとWordpressのインストールが実行できません。必ず実行してくださいね。
※「www-data」は、Ubuntu上のWebサーバー(Apache、nginxなど)がデフォルトで通常操作に使用するユーザーです。
$ chown -R www-data:www-data /var/www/html
ブラウザに「xxx.xxx.xxx.xxx(サーバの固定IP)/wordpress/」と入力して、以下の画面が出れば成功です。そのまま設定を続けていきましょう。
下の画面の赤枠部分の「データベース名」は、最初に作成しておいたデータベース名、ユーザ名、パスワードを必ず入力してください。青枠部分はデフォルトのままでOKです。
下の画面が最後の入力画面です。ここで入力する情報は、後々変更が可能ですので、気軽に入力してください。
インストールが完了したら、ログイン画面に進み、先ほど設定した「ユーザ名」と「パスワード」を入力してログインします。下の画面が出てきたら成功です!
これで自宅専用のホームページが完成しました!
まとめ
自宅専用のホームページですので、家族しか見ることはありません。多少恥ずかしい出来栄えのものを掲載しても大丈夫。家族内でオモシロブログを作成して楽しんでみましょう。
それでは本日も最後までお付き合いいただき、ありがとうございました!