- 用意するものとネット上のキーアイテム
- osをRaspberry piに載せる
- 入力キーボードを日本語対応させる(ひらがな・カタカナ・漢字)
- ムームードメインで独自ドメイン取得(今回は~~.com)
- MyDNS.jpでユーザー登録して以下を登録
- ムームードメインで以下ネームサーバを登録
- crontabをインストールしてMyDNS.jpにグローバルipを通知
- Apache2をインストール
- ローカルでサイトを見れるか確認
- 外部で設定した以下の情報をApacheの新規バーチャルホストで登録
- サイトが公開されているかターミナル上でチェック
- ルーターの設定からRaspberry Piの80ポートを解放
- URLを打って確認する
用意するものとネット上のキーアイテム
物理準備物
- Raspberry Pi 4 B
- ルーター:Archer AX1800(外部回線を定期契約で使える環境)
- スマホ(サイトが公開されたか確認用)
ネット上のキーアイテム(サイトも含む。)
- 独自ドメイン(ムームードメイン)
- Raspberry pi os(読者の好みで変更可能。しかしlinuxであること)
- Webサーバー(Apache2)
- crontab
- DNSサーバー(mydns.jp DDNS目的)
- chatgpt 4
- yougetsignal(ポートが80で解放されているか確認)
- whatismyip.akamai.com(自分のグローバルipアドレスを確認)
- 「Raspberry PiでMyDNSへIPアドレスを自動通知する」
- Raspberry piのグローバルipアドレス
- Raspberry piのプライベートipアドレス
- ネームサーバ
- ホスト名
osをRaspberry piに載せる
Pi ImagerでRaspberry Pi OS 64bitを64GBのmicroSDカードに載せる
入力キーボードを日本語対応させる(ひらがな・カタカナ・漢字)
osをRaspberry Pi OSに挿入して起動させた後、言語選択が出ます。それらはすべて日本語にさせてください。
上記のサイトで私は言語選択について参考にしました。
ムームードメインで独自ドメイン取得(今回は~~.com)
好きな名前を考えて、それをムームードメインサイトで入力してください。
他のドメイン名と被らないように探る必要があります。
そしてサイトの趣旨に沿ったネーミングにしてください。
こちらをクリックするとムームードメインに移動できます。
MyDNS.jpでユーザー登録して以下を登録
こちらでユーザー登録を行って以下をMyDNS.jpに登録しましょう。
ドメイン(~~~com)
こちらは先ほどムームードメインで取得したドメインを登録してください。
ex: example.com
ホスト名(DNSレコード)
ホスト名とはwebサーバー自体の名前です。以下の二つをMyDNS.jpにそのまま登録してください。
www A type
www AAAA type
ムームードメインで以下ネームサーバを登録
以下の3つをムームードメインのあるタブで登録してください。その項目欄は「コントロールパネル」→「ドメイン管理」→「ドメイン操作」→「ネームサーバ設定変更」→「取得したドメインで使用する」の先に6つあります。以下の3つを埋めてください。
ns0.mydns.jp
ns1.mydns.jp
ns2.mydns.jp
これらのネームサーバはMyDNS.jpの「How to use」で紹介されています。
crontabをインストールしてMyDNS.jpにグローバルipを通知
以下の文でcrontabをインストールしてください。
そしてupdate_mydns.shで定期実行のコードを作成してください。
sudo apt install cron
nano update_mydns.sh
#!/bin/bash
# ユーザー名とパスワードを設定
USERNAME='your_mydns_username'
PASSWORD='your_mydns_password'
# IP アドレスを取得
IP=$(curl -s http://whatismyip.akamai.com/)
# mydns.jp に IP アドレスを更新する
curl -s "http://ipv4.mydns.jp/login.html?username=${USERNAME}&password=${PASSWORD}&ACTIP=${IP}"
これを保存して以下のようにパーミッションを+xにしてください。
chmod +x update_mydns.sh
以下はcrontabの実行時間設定ファイルです。開いて
crontab -e
以下を最終行に追加してください。10分に一回はipアドレスを送信します。
*/10 * * * * /path/to/update_mydns.sh
Apache2をインストール
以下でApache2をインストールしてください。
sudo apt install apache2
ローカルでサイトを見れるか確認
firefoxのURL欄でlocalhostと打って検索すると、ApacheのDocumentrootで指定されたhtmlファイルをサイトとしてみることができます。
外部で設定した以下の情報をApacheの新規バーチャルホストで登録
ホスト名
ドメイン名
サーバーネーム
サーバーエリア(ホスト名含む)
ドキュメントルート
上記をこれから追加していきます。以下はホスト名を設定するコードです。
sudo hostnamectl set-hostname your-hostname
以下のディレクトリにyourdomainname.confを作成して以下を記入してください。
etc/apache2/sites-available/your-domainname.conf
以下のコマンドで設定を有効してください。
sudo a2ensite your-domain.conf
sudo systemctl reload apache2
/etc/apache2/apache2.confの最終行に追加で以下を追加してください。
ServerName your-domain.com
サイトが公開されているかターミナル上でチェック
ドメイン名の解決
以下のコードでドメインとipアドレスが紐づけるか確認します。
nslookup your-domain.com
またはこのコードでもできます。
dig your-domain.com
このコードが実行できない場合はそのツールがインストールできていないだけかもしれません。以下のコードでツールをインストールしてください。
sudo apt update#システムをアップデート
sudo apt install dnsutils#ドメインとipアドレスを紐づけるソフトをインストール
Apache2の設定チェック
Apacheサービスの状態を確認するために以下を実行してください。
sudo systemctl status apache2
バーチャルホストの設定は以下で完成します。「Syntax OK」と出たら成功です。
sudo apache2ctl configtest
ファイアウォールの設定
sudo ufw status
上記を実行してください。ここでもこのコードが実行できない場合はツールがない可能性があるので以下のコードでツールをインストールしてください。また以下の3行目からはインストール済みでも実行してください。
sudo apt update#システムをアップデート
sudo apt install ufw#ポートが開いているかを確認するソフトをインストール
sudo ufw allow 80#80ポート開放
sudo ufw allow 443#443ポート開放
sudo ufw enable#ufwを有効に
sudo ufw status verbose#ファイアウォールを設定しポート開放が可能に
上記の3行目からのコードを実行できたら次に進みます。
公開元のhtmlファイルのパーミッション確認
公開するhtmlファイルのパーミッションを以下のように唱えます。
sudo chmod 777 /var/www/html/index.html
ログの確認
以下を実行して何かおかしい傾向が出ていれば対処をお願いします。
sudo cat /var/log/apache2/error.log
sudo cat /var/log/apache2/access.log
以以下のコードでApache2を再起動してください。
sudo systemctl restart apache2
ルーターの設定からRaspberry Piの80ポートを解放
お持ちのルーターの設定画面にパソコンからアクセスして、NET転送という欄(私のルーター設定では)で、新たに以下の条件でサービスを追加してください。これでwebサーバー用のポートがルーターからも解放されます。
サービス名:HTTP
外部ポート:80
内部ポート:80
URLを打って確認する
「http://ドメイン名」これを打つとサイトが見れます。もし見れない場合は「サイトが公開されているかターミナル上でチェックする」をもう一度試してみて、レスポンスで出力されたログを全てchatgpt4に投げてみてください。わかりやすく説明してくれます。