えいたブログ

ロボットの作り方を老若男女に届けます

自宅webサーバー外部公開マニュアル

 

用意するものとネット上のキーアイテム

 

物理準備物

 

ネット上のキーアイテム(サイトも含む。)

 

osをRaspberry piに載せる

Pi ImagerでRaspberry Pi OS 64bitを64GBのmicroSDカードに載せる

入力キーボードを日本語対応させる(ひらがな・カタカナ・漢字)

osをRaspberry Pi OSに挿入して起動させた後、言語選択が出ます。それらはすべて日本語にさせてください。

 

www.indoorcorgielec.com

上記のサイトで私は言語選択について参考にしました。

ムームードメイン独自ドメイン取得(今回は~~.com)

好きな名前を考えて、それをムームードメインサイトで入力してください。

他のドメイン名と被らないように探る必要があります。

そしてサイトの趣旨に沿ったネーミングにしてください。

 

muumuu-domain.com

こちらをクリックするとムームードメインに移動できます。

MyDNS.jpでユーザー登録して以下を登録

www.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

code1

以下のコマンドで設定を有効してください。


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

プロトコルTCP

URLを打って確認する

「http://ドメイン名」これを打つとサイトが見れます。もし見れない場合は「サイトが公開されているかターミナル上でチェックする」をもう一度試してみて、レスポンスで出力されたログを全てchatgpt4に投げてみてください。わかりやすく説明してくれます。