Macでウェブサーバーを構築したい人向けに書きます。
やり方はとても簡単です。Linuxと対して設定方法が変わらないので結構楽にできます。
それではやっていきましょう。
※前提としてHomebrewがインストールされていることと、HomebrewパッケージのNGINX,CERTBOTがインストールされている必要があります。
ドメインを取得しよう
まず最初にドメインを取得しなければ話になりません。ドメインはGMOのドメインレジスターを使うと
分かりやすく、やりやすいです。おすすめは、お名前.comです。このドメインレジストラーが一番お得に
ドメインを入手させてくれます。
https://onamae.com/
.xyz,.com,.netがおすすめです。私は.workを使っています。.workでもよいでしょう。.workはドメイン登録料が一円、更新費用が千円を切っているので私はこのドメインを使用しています。ドメインを取得出来たら、DNSを設定します。
DNSを設定しよう
ドメインを取得し終わったら、ネームサーバーをお名前.comに変更します。そして、ネームサーバーの欄がお名前.comになっていればOKです。
次にDNSを設定していきます。固定回線を契約していて、グローバルIPがある人はすぐに、設定できますが、固定回線がない人は少々面倒くさいやり方で、やる必要があります。ネームサーバーの設定の中のドメインのDNS設定を選びます。自分が取得した自宅ウェブサーバー用のドメインを選びます。「次へ」を押して、「DNSレコード設定を利用する」を選択します。
レコードタイプはA,TTLはデフォルトで十分、状態は有効にします。ホスト名は空にして、Valueのところに、自分のグローバルIPアドレスを入力します。
入力出来たら、一番右端の追加を押します。そして、一番下の「DNSレコード設定用ネームサーバー変更確認」のところにあるチェックボックスにチェックを入れてままにして、「確認画面に進む」クリックします。そして、「設定する」を押して、DNSを設定します。
そして、大抵は30分くらいで設定が完了します。設定が完了した通知がメールに来たことを確認したら、次にMacのターミナルを開きます。
ターミナルからドメインの設定をしよう
ターミナルのコンソール画面を開き、 sudo -s を実行します。次にhostsを設定します。/etc/hostsを開いて、一番下の欄に、以下のように付け足してください。
/etc/hosts か /private/etc/hostsです。 hostsにドメインを登録することでこのMacでこのドメインを使用することができます。
##
# Host Database
#
# localhost is used to configure the loopback interface
# When the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
#ハッシュタグを使用するとコメントアウトができます。この下の欄に以下のものを追加します。
127.0.0.1 example.com
グローバルIPアドレス example.com
example.comは自分の取得したドメイン名を使用してください。グローバルIPアドレスと書いた場所は自分のグローバルIPアドレスを入力してください。グローバルIPアドレスが不明な場合はこのサイトで調べてください。
https://www.cman.jp/network/support/go_access.cgi
次に、nginx.confを設定していきます。
nginxの設定をしよう
ターミナルは開いたままで、nginx.confは /usr/local/etc/nginx/nginx.conf にあります。
これに、書き込みを行います。
nginx.confのhttpsの最後の方に include servers/*となっているのでserversフォルダにリバースプロキシの設定などのファイルを書き込むことができます。
http {
{省略}
server {
listen 80;
server_name localhost;
#localhostの部分を取得したドメイン名に置き換えます。
#Linuxと違って、わかりやすいと思います。下の方にはリバースプロキシの設定があったり、ドキュメントルートが書いてあったりします。
{以下省略}
}
{省略}
}
sudo nginxでnginxを起動します。 「nginxにネットワークの通信を許可しますか?」と聞かれるので許可を選択します。
ウェルノウンポートを使用するプログラムを実行するにはrootとして実行する必要があるので、sudo nginxでnginxをrootとして実行しています。
nginx -hで使い方が表示されるので、オプションはそれで参照してください。
うまくいけばこれでポート開放の確認を行うと、80/tcpが開いているはずです。
折角、ここまでやったのでSSLも設定したいですよね?SSLの設定方法を教えます。
参考させてもらったページ: https://neos21.net/blog/2019/03/11-01.html
とても分かりやすいです。
sudo certbotでcertbotを起動させます。メールアドレスを入力します。そのあとに同意するかどうか聞かれるので同意をします。agreeを選択してください。
そして、次にメールアドレスを公開するかどうかを聞かれているので、noを選択します。
次に、nginxを選びます。そして、そのあとは書いてある通りに進めてください。そうすると、SSL化ができます。
SSL succsessfulみたいに表示されたら、成功です。
nginxをリロードします。
sudo nginx -s reload
このオプションでリロードします。-sのsはsignalの略です。
これでSSLができたと思います。SSLができたか確認したい場合はポート開放確認ができるサイトを使用しましょう。sslのポートは443です。
http2を有効にしておくとよいです。nginx.confのhttpsのところに listen 443 ssl;になっているので、sslの後にhttp2をつけて、nginxをリロードするとhttp2が有効になります。
SSLの説明が分かりずらかったら、参考にさせてもらったページを見てください。
最後に
ちゃんと、nginx,certbot,opensslやMacOS等はアップデートがあればアップデートをして最新版を使いましょう。