HOME | 2026-11-05 (Thu) Today's Access : 20 Total : 1414495. Since 10 Sep. 2019

 ラズパイで作る自宅WEBサーバ:nginx編
第12回 運用・保守
2026.11.05

microSDカード内に一通りシステムを構築後に、外付けSSDでの運用に切り替えます。 SDカードは書込み回数上限に達すると使えなくなります。公開WEBサーバーではアクセスログなどのファイル更新であっという間に書き込み上限に達してしまいます。 カーネルのある基本領域は読込み専用で更新はないので、そのまま利用し、ブート後に制御が移される拡張領域をUSB接続の外付けSSDに複写して運用します。

作業の流れ
1.念のため、microSDカードを複製して、控えを作成します
2.microSDカードの内容を外付けSSDに複写します。
3.設定ファイルを書き換えます。

●microSDカードの複製

別のLINUXマシンに、複製元と複製先のmicroSDを指して複製を行います。

$ sudo dd if=/dev/sda of=/dev/sdb bs=4M status=progress
クローン先のドライブは、クローン元のドライブと同等かそれ以上の総容量が必要です。 元のデータサイズが小さくても、ドライブ自体の容量が1バイトでも下回っているとクローンできません。 小さな容量のドライブから大きな容量のドライブへクローンした場合、残りのスペースは「未割り当て」の扱いになります。 クローン完了後、OSのディスク管理ツール等でパーティションを拡張する必要があります。

●SSDの初期化

256GBのSSDをUSBスロットに接続して起動します。
$ sudo fdisk -l
Disk /dev/mmcblk0: 29.7 GiB, 31914983424 bytes, 62333952 sectors
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 * 2048 526335 524288 256M c W95 FAT32 (LBA)
/dev/mmcblk0p2 526336 62333918 61807583 29.5G 83 Linux

Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors

パーティションの再割り当て
$ sudo fdisk -l
Disk /dev/sda: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Device Start End Sectors Size Type
/dev/sda1 2048 500117503 500115456 238.5G Linux filesystem

パーティションの削除
$ sudo fdisk /dev/sda
Welcome to fdisk (util-linux 2.37.2).
Command (m for help): p
Disk /dev/sda: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: Type-c
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0E63629D-7C7A-4D32-84DD-5806793DD7A0

Device Start End Sectors Size Type
/dev/sda1 2048 500117503 500115456 238.5G Linux filesystem

dコマンドを打ってパーティションの削除をします。
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

変更を保存します
Command (m for help): w

Command (m for help): q

パーティションの作成
パーティションの管理方式には GPT(GUID Partition Table)を使用します。
$ sudo parted /dev/sda
GNU Parted 3.4
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: USB3.1 Type-c (scsi)
Disk /dev/sda: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1049kB 256GB 256GB ext4 Linux filesystem

※パーティションテーブルが未設定の場合、エラーメッセージが表示されます。
Partition Table: unknown
Error: /dev/xvdc: unrecognised disk label
次の、mklabel を実行することにより解決します。
(parted) mklabel gpt ←GPTに変更
(parted) mkpart "Linux filesystem" 0% 100%

(parted) quit

パーティションのフォーマット
$ sudo mkfs.ext4 /dev/sda1
mke2fs 1.46.5 (30-Dec-2021)
/dev/sda1 contains a ext4 file system labelled 'writable-ssd'
last mounted on / on Tue Sep 6 12:18:06 2022
Proceed anyway? (y,N) y
Creating filesystem with 62514432 4k blocks and 15630336 inodes
Filesystem UUID: dc6e76e1-b760-486e-a9e2-b5c5ffd434e4
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

●拡張領域の複製
microSD内の拡張領域を、SSDに複写します。

$ sudo mkdir -p /mnt/target
$ sudo mount /dev/sda1 /mnt/target/
$ sudo rsync -aAX --delete --exclude={"/dev/*","/proc/*","/sys/*",
"/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/target

$ sudo umount /mnt/target

※追加すべき重要なオプション
-a (--archive) -rlptgoD と同じ
-l (--links) シンボリックリンクをそのままシンボリックリンクとしてコピー
-p (--perms) パーミッションをそのままコピー
-t (--times) タイムスタンプをそのままコピー
-g (--group) グループをそのままコピー
-o (--owner) ファイル所有者をそのままコピー (root のみ有効)
-D --devices --specials と同じ
(--devices) ブロックデバイスをコピー (root のみ有効)
(--specials) 名前付きパイプや FIFO などの特殊ファイルをコピー
-u (--update) 転送先に既にファイルが存在し、転送先のタイムスタンプの方が新しい場合は転送しない
(--delete) 転送元に存在しないファイルは削除
-v (--verbose) コピーしたファイル名やバイト数などの転送情報を出力
-H (--hard-links) ファイルのハードリンク構造をそのまま維持します。
-A (--acls) アクセス権限(ACL)を正確にコピーします。
-X (--xattrs) 拡張属性(Macのタグ情報やセキュリティ属性など)を維持します。

ディスク丸ごとのバックアップで -u(新しい方だけ残す)を組み合わせる場合の最適なコマンドは以下です。
$ sudo rsync -aHAXu --exclude={"/7th-chord/*","/share/*","/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*",
"/media/*","/lost+found"} / /share


●システム拡張領域の参照先変更

●fstabの修正

microSD内の拡張領域のラベルも確認しておきます。

$ sudo blkid /dev/mmcblk0p1
/dev/mmcblk0p1: LABEL_FATBOOT="system-boot" LABEL="system-boot" UUID="F766-26D3" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="a06488b5-01"

$ sudo blkid /dev/mmcblk0p2
/dev/mmcblk0p2: LABEL="writable" UUID="c5da9c27-d622-4e80-89db-6af2e32618b4"
BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="a06488b5-02"

SSDのラベルを確認します
$ sudo e2label /dev/sda1
←ラベルが付いてないので、空行が表示されます

ラベルを付加します
$ sudo e2label /dev/sda1 rootfs-ssd
$ sudo blkid /dev/sda1
/dev/sda1: LABEL="rootfs-ssd" UUID="f7094853-2301-48e6-bb32-28fd54809604"
BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem"
PARTUUID="d4c010a9-3813-4860-9a4d-67c8799a12f1"

基本領域は本体のSDカードのままで、SSD拡張領域内のラベルを変更します。
$ sudo mount /dev/sda1 /mnt/target
$ sudo vi /mnt/target/etc/fstab
LABEL=writable / ext4 defaults 0 1
LABEL=system-boot /boot/firmware vfat defaults 0 1
↓変更
LABEL=rootfs-ssd / ext4 defaults 0 1
LABEL=system-boot /boot/firmware vfat defaults 0 1

拡張領域をラズパイ本体のSDカード(/dev/mmcblk0p2)からSSD(/dev/sda1)に切り替えます。
$ sudo vi /boot/firmware/cmdline.txt
console=serial0,115200 multipath=off dwc_otg.lpm_enable=0 console=tty1 root=LABEL=rootfs-ssd
rootfstype=ext4 rootwait fixrtc cfg80211.ieee80211_regdom=JP

システムを再起動します。
$ sudo reboot
$ df
Filesystem     1K-blocks      Used Available Use% Mounted on
tmpfs             798960      8088    790872   2% /run
/dev/sda1      245023004 120688184 111815552  52% /
tmpfs            3994780         0   3994780   0% /dev/shm
tmpfs               5120         0      5120   0% /run/lock
/dev/mmcblk0p1    516204    190743    325462  37% /boot/firmware
tmpfs             798956        12    798944   1% /run/user/1000
拡張領域のルートがSSDに移っていることがわかります。

不正中継テストは下記のサービスを利用できます
http://www.abuse.net/relay.html

●公開:ポート・マッピング

ブロードバンドルーターのポート・マッピング機能を使って、ルーター内側のラズベリーパイを公開します。

Internet側IPアドレスプロトコル(ポート)LAN側IPアドレス
123.456.78.90SMTP(TCPポート:25)
←────────────→
192.168.11.28
123.456.78.90DNS(TCP/UDPポート:53)
←────────────→
192.168.11.28
123.456.78.90HTTP(TCPポート:80)
←────────────→
192.168.11.28
123.456.78.90POP3(TCPポート:110)
←────────────→
192.168.11.28
123.456.78.90NTP(UDPポート:123)
←────────────→
192.168.11.28
123.456.78.90IMAP(TCPポート:143)
←────────────→
192.168.11.28
123.456.78.90HTTPS(TCPポート:443)
←────────────→
192.168.11.28
123.456.78.90SMTP(TCPポート:587)
←────────────→
192.168.11.28

この設定ではブロードバンドルータ外側からのラズパイ・サーバへのSSH接続は許可していません。
ファイル転送は開発環境用WindowsパソコンからSSH(ポート:22)で行いますが、ルータ内側なので外部に対してポートを解放する必要はありません。
ただし、ルーター内側のラズパイサーバーでは、SSH接続を許可する必要があります。 ラズパイ本体でのファイアーウォール設定は「第6回 ファイアウォール設定」を参考にしてください。
また、ルーター内側からのサーバへのpingは通りますが、外部からのpingは通らないようにしています。

●その他作業
ジャーナルファイルが膨れ上がっていたので削除しました。

ジャーナルの使用容量を確認します
$ journalctl --disk-usage
Archived and active journals take up 3.0G in the file system.

3日より前のエントリーを削除します
$ sudo journalctl --vacuum-time=3d

2026.08.27 番外編 DNSトランスファー
2026.09.06 第0回 nginx を始めよう
2026.09.14 第1回 Ubuntu Server 設定
2026.09.24 第2回 DNS設定
2026.10.08 第3回 Nginxインストール
2026.10.21 第4回 PHPインストール
2026.10.29 第5回 MariaDB設定
2026.10.30 第6回 ファイアウォール設定
2026.10.31 第7回 認証サーバ設定
2026.11.01 第8回 メールサーバ設定
2026.11.02 第9回 Node.js設定
2026.11.03 第10回 アプリ作成
2026.11.04 第11回 crontab設定
2026.11.05 第12回 運用・保守

KEYESTUDIO Micro:bit V2ロボットスターターキット (マイクロビットなし) MakecodeとPython用
動き、光と音の使い方、障害物の検知と回避方法、線をたどり、IRリモコンとアプリでコントロールする方法を学びます。

Maqueen Lite V5 micro:bit ロボットキット STEM用(ライントレース&障害物回避)
Maqueen Lite V5 STEMロボットは、事前調整済みのライントレースアルゴリズム、耐衝撃モーター、開封即使用可能な設計で、ストレスを解消します。

たいていのことは100日あれば、うまくいく。長田英知著
「時間がなくて、なかなか自分のやりたいことができない」 「一念発起して何かを始めても、いつも三日坊主で終わってしまう」 「色んなことを先延ばしにしたまま、時間だけが過ぎていく」 そこで本書では、そんな著者が独自に開発した、 まったく新しい目標達成メソッド「100日デザイン」について、 その知識と技術を、余すところなくご紹介します。

まんがで納得ナポレオン・ヒル 思考は現実化する
OLとして雑務をこなす日々に飽き足らず、科学者だった父が残した薬品を商品化すべく、起業を決意した内山麻由(27)。彼女はセミナーで知り合った謎の女性からサポートを得ながら、彼女と二人三脚でナポレオン・ヒルの成功哲学を実践し、さまざまな問題を乗り越えていく。 ヒル博士の<ゴールデンルール>に従い、仕事に、恋に全力疾走する彼女の、成功への物語。

今日は人生最悪で最高の日 1秒で世界を変えるたったひとつの方法 ひすいこたろう著
偉人の伝記を読むと、最悪な日は、不幸な日ではなく、新しい自分が始まる日であることがわかります。最悪な出来事は、自分の人生が、想像を超えて面白くなる兆しなのです。偉人伝を読むことで、このときの不幸があったおかげで、未来にこういう幸せがくるのかと、人生を俯瞰する視線が立ち上がるのです。

ご飯は私を裏切らない heisoku著
辛い現実から目を背けて食べるご飯は、いつも美味しく幸せを届けてくれる。 29歳、中卒、恋人いない歴イコール年齢。バイト以外の職歴もなく、短期バイトを転々とする日々。ぐるぐると思索に耽るけど、ご飯を食べると幸せになれる。奇才の新鋭・heisokuが贈るリアル労働グルメ物語!

【最新版Gemini 3に対応!】できるGemini (できるシリーズ)
Geminiを「最強の知的生産パートナー」として使いこなすための、実践的なノウハウを凝縮した一冊です。 基本的な操作方法から、具体的なビジネスシーンでの活用、日々の業務を自動化するGoogle Workspaceとの連携、さらには自分だけのオリジナルAIを作成する方法まで余すところなく解説します。

Rustプログラミング完全ガイド 他言語との比較で違いが分かる!
Rustの各手法や考え方を幅広く解説! 500以上のサンプルを掲載。実行結果も確認。 全24章の包括的なチュートリアル。

ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS… 全WEB媒体で効果バツグン! カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術

小型で便利な Type-C アダプター USB C オス - USB3.1 オスアダプター
Type-C端子のマイコンボードをこのアダプタを介して直接Raspberry Piに挿すことができます。ケーブルなしで便利なツールです。

Divoom Ditoo Pro ワイヤレススピーカー
15W高音質重低音/青軸キーボード/Bluetooth5.3/ピクセルアート 専用アプリ/USB接続/microSDカード

電源供給USBケーブル スリム 【5本セット】
USB電源ケーブル 5V DC電源供給ケーブル スリム 【5本セット】 電源供給 バッテリー 修理 自作 DIY 電子工作 (100cm)

Copyright © 2011-2027 Sarako Tsukiyono All rights reserved®.