自宅webサーバ環境をラズパイ最新OS Buster にセッティング
現在、ブログ運営のサーバの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 による新サーバが動き出します。
最後に
自宅サーバのラズパイのOSを最新のBusterにセッティングしました。
それに合わせ、全ての環境を設定したので紹介します。
IDの設定から、apache、PHP、MySQL等のインストール、そしてwordpressのリストアですね。
バックアップの設定を終えて、新サーバが動き出しました。
■思えば「ブログ運営」の記事も増えてきました
ディスカッション
コメント一覧
まだ、コメントがありません