-
: 美祢咲 すみれ
Ubuntu22.04/Apacheでバーチャルホストの設定をする
Picture自分のパソコンにUbuntuとApacheがインストールされている状態ですと、ドメインのサービスのDNS設定に自分のパソコンのグローバルIPを適用させることで、自分のパソコンのApacheを外部にサイトを公開できるWebサーバーにすることができます。やることを順番に記載してみます。
自分のパソコンのグローバルIPを知る
これは、ググるとかんたんにグローバルIPを教えてくれるサイトがたくさん出てきます。「自分のグローバルIPを知りたい」とか、極端な話、「IP」と検索しても出てきます。
どんな感じかというと「123.456.123.456」という感じの、ドットで区切られた3桁の数字が4回並んでいるもので、そのパソコンというよりは、ルーター固有のものです。(なので、たぶん?複数のパソコンを所有していても、外部サーバーとして機能できるのは1台だけになると思います。違っていたら、コメント等で教えてください)
DNS設定をする
自分が所有しているドメインのサービスのDNS設定は、多くの場合レンタルサーバーのIPに合わせていると思うのですが、レンタルサーバーの設定から、自分のパソコンのIPの設定に変更します。ネームサーバーがレンタルサーバー用になっていると思うので、そこから変更して、さらに、IPも設定します。自分のグローバルIPをドメインに紐付ける際、ワイルドカードで設定しておくと、無制限にサブドメインが作れますので、いちおうワイルドカードにしておきます。
自分のパソコンのローカルIPを知る
Ubuntuですと、設定→ネットワーク→「有線」のところの歯車アイコン→IP4アドレス のところに、ローカルIPが出ています。「192.168.3.xx」のような感じの数字の文字列です。(数字はプロバイダによっても違いがあります)
IPは、接続している機器それぞれにもあるし、同じパソコンの有線とWiFIそれぞれにもあります。WiFiでも設定できなくはないようですが、有線接続のほうが安心感があります。
ルーターのポート転送設定をする
ルーターのポート転送画面で、ポート80とポート443の転送先を、先ほど確認したローカルIPにします。プロトコルは「TCP」にしておきます。
ちなみに、80はSSLなし、つまりhttpの、443はSSL(暗号化)の使用するポートです。
ファイアーウォールを設定する
私の場合「ufw」というUbuntuにもともとあるファイアーウォールアプリケーションを使っています。
もしインストールされていなければ、セキュリティ上大事らしいので、インストールします。
sudo apt install ufw
このままでは有効ではないので、有効化します。
sudo ufw enable
ただし、Webサーバーに使用するポート80と443は許可しておきます。
sudo ufw allow 80 sudo ufw allow 443
/etc/hostsの設定をする
Ubuntuには、/etc/hosts というファイルがあります。このファイルの一番下に、
192.168.3.xx example.com 192.168.3.xx www.example.com
という感じで、ローカルIPとドメインをスペースを開けてセットで記載しておきます。というのも、「自分のサーバー(グローバルIPに設定されたドメイン)を自分のパソコンから見ることはできない」という性質があるらしく、hostsにこの設定をすることで、閲覧可能になります。(複数のパソコンがある場合、サーバー以外のパソコンにも同じ設定をしないと、閲覧できません。Windows11なら、設定ファイルは、
C:\Windows\System32\drivers\etc\hosts
です。
バーチャルホストを設置するディレクトリを作る
これは、「/var/www/html/example.com」にする考えと、「/var/www/example.com」にする考えがあり、どちらでもいいみたいです。今回は、後者にしてみます。その上で、所有権をrootから自分のユーザー名に移し、自分のホームにシンボリックリンクを張ります。(仮にユーザー名を「user」にしておきます。)
sudo mkdir /var/www/example.com sudo chown -R user:user /var/www/sumires.xyz ln -s /var/www/example.com /home/gorou/example.com
バーチャルホストの設定ファイルを作る
/etc/apace2/sites-available内に、新規ファイル「example.com.conf」を作成して、以下の内容を記載します。
ServerName example.com <VirtualHost *:80> ServerName example.com ServerAdmin webmaster@sexample.com DocumentRoot /var/www/sumires.xyz ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
有効化するには、以下のコマンドを打ちます。
sudo a2ensite example.com sudo systemctl reload apache2
コメントを残す