自宅webサーバ環境をラズパイ最新OS Buster にセッティング

2020年6月30日

現在、ブログ運営のサーバのOSは、2世代前の Jessie となっています。ブログの立ち上げが、2017年2月だった関係ですが、さすがに古くなってきました。

PHP や apache のバージョンも低いので、最新のソフトを使用したいときなど支障が出始めています。

以前、電光掲示板を動かすラズパイのOSを Stretch に変えていますので、ブログ運営のサーバ(webサーバ)も同様に Stretch に格上げしたいと思います。

何故、最新OSであるBuster ではなく、一世代前のOSなのでしょうか?実は、60爺にとって最新OSでは敷居が高いと思っていたのです。

しかし、実際やってみると思いのほかに問題なく Stretch で webサーバを運用するところまでできたことで、更なるアップを目指したくなりました。

その理由は、Stretch ですと、PHP が標準で 7.0.33 であり、wordpress 5.4.1 のサイトヘルスで、「PHP を最新版にしろ」と言われたことです。

そこで、一旦 webサーバを stretch で運用させておき、裏側で Buster のセットアップを実施してみました。

手順を以下に示しますが、OSが変わっただけで Stretch のセットアップと変わりません。

スポンサーリンク

ラズパイOSインストール

Busterは、このページからダウンロードしました。

ECHERを使用して、ZIPから直接microSDカードへ書き込みます。

書き込み終了まで、しばし待った後、ラズパイにセットして電源をオンし初期設定(地域の設定、パスワード変更、wifi設定)を行います。

この時、忘れずにパスワードを変更しましょう。

最後に、ソフトウェアのアップデートが行われます。

これが終わると、OSのインストールは終了です。

sshを設定したのち、rebootします。

rebootの後、ラズパイのディストリビューションとバージョンを確認しましょう。lsb_release -a と cat /etc/os-release ですね。

pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
pi@raspberrypi:~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="https://www.raspbian.org/"
SUPPORT_URL="https://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="https://www.raspbian.org/RaspbianBugs"

現在稼働中のカーネルについての名前と情報も見ておきましょう。

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.19.118-v7+ #1311 SMP Mon Apr 27 14:21:24 BST 2020 armv7l GNU/Linux

ID変更、rootパスワード設定

標準の ID である pi をサーバ向けの ID に変更します。詳細は、次の記事を参考してください。

【作業用ID作成】

sudo useradd -M temp
sudo gpasswd -a temp sudo
sudo passwd temp

【CLI設定】

sudo raspi-config (ラズパイ初期設定メニュー起動)
3 のBoot Option 選択
B1のDesktop / CLI 選択
B1 Console 選択
<了解>クリック

【ID設定】

temp@raspberrypi:/$ sudo usermod -l XXXXXXX pi
[sudo] temp のパスワード:
temp@raspberrypi:/$ sudo usermod -d /home/XXXXXXX -m XXXXXXX
temp@raspberrypi:/$ sudo groupmod -n XXXXXXX pi

【作業用ID削除】

mizutan@raspberrypi:~ $ sudo userdel temp
[sudo] XXXXXXX のパスワード:

【rootパスワード更新】

rootパスワードを設定します。

mizutan@raspberrypi:~ $ sudo passwd root
新しいパスワード:
新しいパスワードを再入力してください:
passwd: パスワードは正しく更新されました

apache2インストール

まずは、インストールされるバージョンを見てみましょう。

mizutan@raspberrypi:~ $ apt-cache policy apache2
apache2:
インストールされているバージョン: (なし)
候補: 2.4.38-3+deb10u3
バージョンテーブル:
2.4.38-3+deb10u3 500
500 https://raspbian.raspberrypi.org/raspbian buster/main armhf Packages

apacheをインストールします。

mizutan@raspberrypi:~ $ sudo apt install -y apache2

インストールされた apache のバージョンを見ましょう。事前に見ておいたものと一致していますね。

mizutan@raspberrypi:~ $ apachectl -v
Server version: Apache/2.4.38 (Raspbian)
Server built: 2019-10-15T19:53:42

PHPインストール

次は、PHPのインストールです。apacheと同様にインストールされるバージョンを見てみましょう。

pi@raspberrypi:~ $ apt-cache policy php
php:
インストールされているバージョン: (なし)
候補: 2:7.3+69
バージョンテーブル:
2:7.3+69 500
500 https://raspbian.raspberrypi.org/raspbian buster/main armhf Packages

バージョンは 7.3 です。wordpressで推奨されているバージョンですね。

それでは、インストールしていきます。合わせて、wordpressで必要となるライブラリもインストールします。

mizutan@raspberrypi:~ $ sudo apt-get install php7.3
mizutan@raspberrypi:~ $ sudo apt install -y php7.3-fpm php7.3-mysql php7.3-dom php7.3-simplexml php7.3-ssh2 php7.3-xml php7.3-xmlreader php7.3-curl php7.3-exif php7.3-ftp php7.3-gd php7.3-iconv php7.3-imagick php7.3-json php7.3-mbstring php7.3-posix php7.3-sockets php7.3-tokenizer php7.3-zip

参考

How To Install PHP 7.4 / 7.3 / 7.2 / 7.1 on Debian 10 / Debian 9

最後にバージョンの確認をします。ご覧の通り、バージョンは 7.3.14 ですね。

mizutan@raspberrypi:~ $ php -v
PHP 7.3.14-1~deb10u1 (cli) (built: Feb 16 2020 15:07:23) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.14, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.14-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies

MySQLインストール

インストールするのは無償版のmariadbです。

sudo apt install mariadb-server

インストール後、mysqlの内容を見ようとしたところ、パスワード要求が来てしまいました。

インストール時、パスワード設定していないので、途方に暮れてしまい、何とか参考の記事を見つけ対応しました。

一つ目の記事だけでは対応しきれない場合は、二番目の記事もご覧ください。下記コマンドでパスワードが設定できました。

ALTER USER 'root'@'localhost' IDENTIFIED BY "XXXXXXXX";

参考資料

ラズベリーパイにMariadbをインストールした時のメモ
MariaDBの初期パスワード変更方法

バックアップ内容のコピー

別のラズパイに設定してある、MySQLとwordpressのバックアップ内容を本サーバにコピーします。

【MySQL】

mizutan@raspberrypi:~ $ scp pi@192.168.XXX.ZZZ:/tmp/dump.sql /tmp
pi@192.168.254.203's password:
dump.sql 100% 33MB 1.2MB/s 00:27

wordpressは三つ持っていますので、全てコピーします。

【wordpress】

mizutan@raspberrypi:~ $ scp pi@192.168.XXX.ZZZ:/tmp/wordpress* /tmp
pi@192.168.XXX.ZZZ's password:
wordpress.tar.gz 100% 183MB 1.1MB/s 02:46
wordpress_book.tar.gz 100% 50MB 1.0MB/s 00:48
wordpress_okusama.tar.gz 100% 21MB 1.0MB/s 00:20

wordpressリストア

wordpressをそれぞれリストアします。

mizutan@raspberrypi:/var/www $ sudo tar zxvf /tmp/wordpress.tar.gz
mizutan@raspberrypi:/var/www $ sudo tar zxvf /tmp/wordpress_book.tar.gz
mizutan@raspberrypi:/var/www $ sudo tar zxvf /tmp/wordpress_okusama.tar.gz

MySQLリストア

次に、MySQLをリストアします。

mizutan@raspberrypi:~ $ mysql -uroot -p -hlocalhost < /tmp/dump.sql
Enter password:

パスワード入力後、しばらく待ちましょう。

正しくリストアされたか、MySQLに入って DATABASE が構築されているかを確認します。

mizutan@raspberrypi:~ $ mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 67
Server version: 10.3.22-MariaDB-0+deb10u1 Raspbian 10
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 |
| wordpress |
| wordpress_book |
| wordpress_o |
+--------------------+
6 rows in set (0.002 sec)
MariaDB [(none)]> quit
Bye

データベースとして、wordpress、wordpress_book、wordpress_oが作成されていますね。無事にリストアできたようです。

apache2 virtual host 設定

www.mizutan.com、book.mizutan.com、okusama.mizutan.comの三つを virtual host として運営しているので、その設定をします。

【confのコピー】

旧サーバの/etc/apache2/sites-available/にあるconfをコピーします。

mizutan@raspberrypi:~ $ cd /etc/apache2/sites-available/
mizutan@raspberrypi:/etc/apache2/sites-available $ ls
000-default.conf default-ssl.conf
mizutan@raspberrypi:/etc/apache2/sites-available $ sudo scp mizutan@192.168.XXX.YYY:/etc/apache2/sites-available/www.mizutan.com.conf www.mizutan.com.conf
The authenticity of host '192.168.XXX.YYY (192.168.XXX.YYY)' can't be established.
ECDSA key fingerprint is SHA256:M/Z3ghCdSck7fyzrbGmUFQ1cjte3shpQnT8T48YWmvQ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.XXX.YYY' (ECDSA) to the list of known hosts.
mizutan@192.168.XXX.YYY's password:
www.mizutan.com.conf 100% 354 101.5KB/s 00:00
mizutan@raspberrypi:/etc/apache2/sites-available $ sudo scp mizutan@192.168.XXX.YYY:/etc/apache2/sites-available/book.mizutan.com.conf book.mizutan.com.conf
mizutan@192.168.XXX.YYY's password:
book.mizutan.com.conf 100% 375 100.9KB/s 00:00
mizutan@raspberrypi:/etc/apache2/sites-available $ sudo scp mizutan@192.168.XXX.YYY:/etc/apache2/sites-available/okusama.mizutan.com.conf okusama.mizutan.com.conf
mizutan@192.168.XXX.YYY's password:
okusama.mizutan.com.conf 100% 390 94.6KB/s 00:00

【シンボリックリンク作成】

今、設定したconfファイルに対するシンボリックリンクを作成します。作成場所は、/etc/apache2/sites-enabled/です。

現時点では、設定したconfに対するシンボリックリンクはありません(当たり前^^;)

mizutan@raspberrypi:/etc/apache2/sites-available $ cd ../sites-enabled/
mizutan@raspberrypi:/etc/apache2/sites-enabled $ ls
000-default.conf
mizutan@raspberrypi:/etc/apache2/sites-enabled $ ls -l
合計 0
lrwxrwxrwx 1 root root 35 6月 12 13:25 000-default.conf -> ../sites-available/000-default.conf

それでは、シンボリックリンクを作成していきます。a2ensiteコマンドを使用します。

mizutan@raspberrypi:/etc/apache2/sites-enabled $ cd ../sites-available/
mizutan@raspberrypi:/etc/apache2/sites-available $ ls
000-default.conf default-ssl.conf www.mizutan.com.conf
book.mizutan.com.conf okusama.mizutan.com.conf
mizutan@raspberrypi:/etc/apache2/sites-available $ sudo a2ensite www.mizutan.com.conf
mizutan@raspberrypi:/etc/apache2/sites-available $ sudo a2ensite book.mizutan.com.conf
mizutan@raspberrypi:/etc/apache2/sites-available $ sudo a2ensite okusama.mizutan.com.conf

シンボリックリンクが出来ているか確認します。

mizutan@raspberrypi:/etc/apache2/sites-available $ ls -l ../sites-enabled/
合計 0
lrwxrwxrwx 1 root root 35 6月 12 13:25 000-default.conf -> ../sites-available/000-default.conf
lrwxrwxrwx 1 root root 40 6月 12 14:34 book.mizutan.com.conf -> ../sites-available/book.mizutan.com.conf
lrwxrwxrwx 1 root root 43 6月 12 14:35 okusama.mizutan.com.conf -> ../sites-available/okusama.mizutan.com.conf
lrwxrwxrwx 1 root root 39 6月 12 14:34 www.mizutan.com.conf -> ../sites-available/www.mizutan.com.conf

【apache2 restart】

各 conf ファイルに a2ensite すると、次の文言が出て、apache2 の reload を促されます。

Enabling site okusama.mizutan.com.
To activate the new configuration, you need to run:
systemctl reload apache2

60爺は、apache2 を restart しました。

mizutan@raspberrypi:/etc/apache2/sites-available $ sudo systemctl restart apache2

indexファイル設定

wordpressのトップページとして、index.htmlを指定しているため、www.mizutan.com、book.mizutan.com、okusama.mizutan.comの三つのファイルが必要です。

これらを、旧サーバより、該当の html へコピーします。

/var/www の中を見てみます。最初は、htmlフォルダしかありません。

mizutan@raspberrypi:/etc/apache2/sites-available $ cd /var/www
mizutan@raspberrypi:/var/www $ ls
html wordpress wordpress_book wordpress_okusama

【www.mizutan.com】

mizutan@raspberrypi:/var/www $ cd html
mizutan@raspberrypi:/var/www/html $ sudo scp mizutan@192.168.XXX.YYY:/var/www/html/index.html /var/www/html/
mizutan@192.168.XXX.YYY's password:
index.html 100% 204 61.0KB/s 00:00

【book.mizutan.com】

最初に、book及びokusama用のディレクトリ html_book,html_okusamaを作成後、index.htmlをコピーします。

mizutan@raspberrypi:/var/www $ sudo mkdir html_book
mizutan@raspberrypi:/var/www $ sudo mkdir html_okusama
mizutan@raspberrypi:/var/www $ cd html_book/
mizutan@raspberrypi:/var/www/html_book $ sudo scp mizutan@192.168.XXX.YYY:/var/www/html_book/index.html /var/www/html_book/
mizutan@192.168.XXX.YYY's password:
index.html 100% 205 42.8KB/s 00:00

【okusama.mizutan.com】

mizutan@raspberrypi:/var/www/html_book $ cd ../html_okusama/
mizutan@raspberrypi:/var/www/html_okusama $ sudo scp mizutan@192.168.XXX.YYY:/var/www/html_okusama/index.html /var/www/html_okusama/
mizutan@192.168.XXX.YYY's password:
index.html 100% 208 59.5KB/s 00:00

bind設定

DNSの解決に bind9 を使用しています。まずは、インストールします。

mizutan@raspberrypi:~ $ sudo apt-get install bind9

次に、/etc/bind/の環境ファイルを移行します。これも、旧サーバから移行します。

mizutan@raspberrypi:~ $ sudo scp mizutan@192.168.XXX.YYY:/etc/bind/* /etc/bind/
mizutan@192.168.XXX.YYY's password:
254.168.192.in-addr.arpa 100% 305 23.2KB/s 00:00
bind.keys 100% 3923 358.8KB/s 00:00
book.mizutan.com.lan 100% 318 38.4KB/s 00:00
db.0 100% 237 12.1KB/s 00:00
db.127 100% 271 25.6KB/s 00:00
db.255 100% 237 4.8KB/s 00:00
db.empty 100% 353 84.3KB/s 00:00
db.local 100% 270 67.2KB/s 00:00
db.root 100% 3048 428.5KB/s 00:00
mizutan.com.lan 100% 257 60.3KB/s 00:00
mizutan.com.lan.bk 100% 257 7.6KB/s 00:00
mizutan.com.lan.org 100% 234 53.0KB/s 00:00
named.conf 100% 463 71.1KB/s 00:00
named.conf.default-zones 100% 966 144.4KB/s 00:00
named.conf.default-zones.bk 100% 662 101.5KB/s 00:00
named.conf.default-zones.org 100% 658 153.9KB/s 00:00
named.conf.default-zones190414 100% 764 174.3KB/s 00:00
named.conf.local 100% 165 41.4KB/s 00:00
named.conf.options 100% 1122 211.1KB/s 00:00
named.conf.options.org 100% 890 198.6KB/s 00:00
okusama.mizutan.com.lan 100% 330 79.2KB/s 00:00
scp: /etc/bind/rndc.key: Permission denied
www.mizutan.com.lan 100% 245 54.3KB/s 00:00
www3.mizutan.com.lan 100% 249 29.3KB/s 00:00
zones.rfc1918 100% 1317 179.6KB/s 00:00

IPアドレス固定

新サーバとして稼働するために、有線LANを使用した際に、IPアドレスを固定化します。

ラズパイの場合は、/etc/dhcpcd.confに下記の4行を追加します。

interface eth0
static ip_address=192.168.XXX.YYY/24
static routers=192.168.254.1
static domain_name_servers=192.168.XXX.YYY
スポンサーリンク

バックアップの設定

以前のバックアップシェル blog_backup.sh では、bookとokusama のwordpress をバックアップしていないことがわかりました。このため、これらを追加して次のようになりました。

#!/bin/sh
mysqldump -u root -pPPPPPPPPPPP -x --all-databases > /tmp/dump.sql
cd /var/www
tar cvzf /tmp/wordpress.tar.gz wordpress
tar cvzf /tmp/wordpress_book.tar.gz wordpress_book
tar cvzf /tmp/wordpress_okusama.tar.gz wordpress_okusama
cp /tmp/dump.sql /root/Raspi_214
cp /tmp/wordpress.tar.gz /root/Raspi_214
cp /tmp/wordpress_book.tar.gz /root/Raspi_214
cp /tmp/wordpress_okusama.tar.gz /root/Raspi_214
chown root.root /tmp/dump.sql
chown root.root /tmp/wordpress.tar.gz
chown root.root /tmp/wordpress_book.tar.gz
chown root.root /tmp/wordpress_okusama.tar.gz
chmod 700 /tmp/dump.sql
chmod 700 /tmp/wordpress.tar.gz
chmod 700 /tmp/wordpress_book.tar.gz
chmod 700 /tmp/wordpress_okusama.tar.gz

実行権を与えます。

root@raspberrypi:~/blog_backup# chmod 755 blog_backup.sh
root@raspberrypi:~/blog_backup# ls -l
合計 4
-rwxr-xr-x 1 root root 714 6月 12 15:11 blog_backup.sh

また、フォルダ Raspi_214 は、LAN内の別のラズパイのフォルダにマウントしました。

sshfs /root/Raspi_214 pi@192.168.XXX.ZZZ:/tmp

以上で設定が完了です。

これで、Buster による新サーバが動き出します。

スポンサーリンク
この記事を書いた人

60爺

60路を越え、RaspberryPi と出会い、その関係でブログ開設(2017/2~)となりました。始めてみると、コツコツやるのが性に合ってしまい、漢字の記事から家の補修・将棋・windows10関係・別名・言い方などジャンルを拡大して今に至ってます。まだまだ、元気なので新たな話題を見つけて皆様に提供できればと思っています。「プロフィールはこちら

ブログ運営

Posted by 60爺