M1 MacではVirtualBoxがうまく動作せず、UTMを使っているのですが、UTMの情報がまだまだ少ない気がします。
さて、VPSなどで運用するサイトをお持ちの方でしたら、サーバなどの知識が必要になります。
外部からのSSH接続、ApacheやNGINXでのWebサーバの構築、といった知識です。
しかし、実際に運営するサイトのサーバに様々な変更を加えるのは、ちょっと怖かったりします。
そんなとき、仮想化ソフトを使って、VPSで使っているOSをインストールし、サーバを立ち上げることで、まずはローカル環境で試してみることができます。
そこで、今回はUTMで構築した仮想環境(Ubuntu)でWebサーバを立ち上げる方法を紹介します。
今回の環境について
今回は以下の環境で、仮想環境を作っています。
また、UTMを使ってM1 MacにUbuntuの仮想環境を構築する方法は、以下の記事をご覧ください。
※今回はサーバの構築方法ですので、デスクトップ環境は必要ありません。もしデスクトップ環境をインストールしている場合は、Ubuntuのターミナルを開いて、以下で紹介するコマンドを実行することができます。
仮想環境の設定について(ポートフォワーディング)
では、仮想環境の設定を変更していきましょう。
Ubuntuの仮想環境を右クリックして「Edit」を選択します。
「Network」を選択し、「New」をクリックします。
Guest PortとHost Portには「80」と入力し、「Save」で保存します。
同じように「22」と「443」を追加します。
「Save」をクリックして、設定完了です。
設定が済んだら、仮想環境を立ち上げておきましょう。
ファイアウォールの設定
続いて、ファイアウォールの設定をしていきましょう。
この設定がうまくされていないと、外部から接続できない場合があります。
以下のコマンドを実行すると、おそらくinactive(非アクティブ)と表示されます。
$ sudo ufw status
Status: inactive
そこで、以下のコマンドを実行し、ファイアウォールをアクティブにします。
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
もう一度、以下のコマンドで、アクティブになっているかどうかを確認します。
$ sudo ufw status
Status: active
この状態だと、外部からアクセスできなくなってしまうので、ufw allow
を使って、特定のポートへのアクセスを許可します。
$ sudo ufw allow 22
$ sudo ufw allow 80
$ sudo ufw allow 443
SSHのインストールとSSHDの立ち上げ。(外部からアクセスできるようにする)
外部、たとえばMac本体などから、仮想環境に接続したいときは、SSHを使うことが多いです。
SSHは、離れたところにあるコンピュータを遠隔操作する仕組みです。サーバを操作するときによく使いますね。
また、SSHDは、SSHでの接続を待ち受ける側のプログラムです。
つまり仮想環境(Ubuntu)側でSSHDを立ち上げておくと、Mac側から仮想環境(Ubuntu)を操作できるようになります。
では、UbuntuにSSHをインストールし、SSHDを立ち上げます。
$ sudo apt install ssh
$ systemctl start sshd
Ubuntuにデスクトップ環境をインストールしていない場合は、そのまま上記コマンドを実行します。
もし、デスクトップ環境を作っている場合は、Ubuntuのターミナルを開いて、上記コマンドを実行してください。
Macのターミナルから仮想環境にSSH接続する
ではUTMで立ち上げたUbuntuに、Mac側からSSHで接続してみましょう。
Macでターミナルを開き、以下のコマンドを実行します。
ユーザ名のところは、各自設定したユーザ名を入力してください。
$ ssh ユーザ名@127.0.0.1
また、127.0.0.1はローカルホストです。
ですので、こんなふうにもできます。
$ ssh ユーザ名@localhost
しかし、SSHで接続しようとすると、以下のような警告が出ることがあります。
$ ssh ユーザ名@127.0.0.1
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
〜省略〜
そのときは、ssh-keygen
というコマンドを使います。
$ ssh-keygen -R 127.0.0.1
# Host 127.0.0.1 found: line 3
このあと、もう一度ssh
コマンドで接続しましょう。
もし接続できない場合は、UbuntuでSSHDが立ち上がっているか、ポートフォワーディングがちゃんと設定されているか(22番ポート)、などを確認してください。
NGINXでのWebサーバ構築
つづいて、NGINX(エンジンエックス)を使って、UbuntuをWebサーバとして使えるようにしていきます。(Apacheを使いたい場合の方法は、このあとに紹介しています)
まず、以下のコマンドでNGINXをインストールします。
$ sudo apt install nginx
以下のコマンドで、NGINXの状態を確認できます。
$ systemctl status nginx.service
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset:>
Active: active (running) since Xxx xxxx-xx-xx xx:xx:xx UTC; 8h left
Docs: man:nginx(8)
この場合、Active: active (running)になっているので、NGINXは立ち上がっています。
もし、Active: inactive (dead)となっている場合は、以下のコマンドで起動します。
$ systemctl start nginx.service
Welcome to nginx!というページが開けば成功です。
ApacheでのWebサーバ構築
NGINXでなく、Apacheを使いたい場合の方法を紹介します。
$ sudo apt install apache2
以下のコマンドで、Apacheの状態を確認できます。
$ systemctl status apache2.service
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
Active: active (running) since Tue 2021-04-27 08:54:10 UTC; 2min 20s ago
Docs: https://httpd.apache.org/docs/2.4/
この場合、Active: active (running)になっているので、Apacheは立ち上がっています。
もし、Active: inactive (dead)となっている場合は、以下のコマンドで起動します。
$ systemctl start apache2.service
Apache2 Ubuntu Default Pageというページが開けば成功です。
ネットワーク内の、別のPC(Mac)、スマホなどからアクセスする方法
自身の仮想環境に他の端末から接続したいときや、サイトを他の端末のブラウザで確かめたいときがあると思います。
そんなときは、仮想環境(Ubuntu)を起動した状態で、MacのIPアドレスを使うことで、それが可能になります。
SSHで接続したい場合は以下のようにします。
192.168.xx.xxは、ご自身のMacのIPアドレスに置き換えてください。
$ ssh ユーザ名@192.168.xx.xx
また、他の端末のブラウザで確かめたいときは、ブラウザにMacのIPアドレスを入力します。
まとめ
VPSなどでサイトを運営しているときなど、自身でWebサーバを立ち上げる必要がありますが、そのサーバに、いきなり慣れない変更を加えたりするのは、すこし抵抗があるときがあります。
そんなときは、自分のパソコンやMacに仮想環境を作り、そこでWebサーバを立ち上げて、試してみることをおすすめします。
そんなわけで、今回はUTMを使ってWebサーバを構築する方法を紹介しました。
サーバの設定を変更するとき抵抗がある場合は、ぜひお試しください。