1. HOME»
  2. ソフトウェア»
  3. 仮想化ソフト»
  4. UTM»
  5. UTMでの仮想環境(Ubuntu)でWebサーバを立ち上げる方法

UTMでの仮想環境(Ubuntu)でWebサーバを立ち上げる方法

M1 MacではVirtualBoxがうまく動作せず、UTMを使っているのですが、UTMの情報がまだまだ少ない気がします。

さて、VPSなどで運用するサイトをお持ちの方でしたら、サーバなどの知識が必要になります。
外部からのSSH接続、ApacheやNGINXでのWebサーバの構築、といった知識です。

しかし、実際に運営するサイトのサーバに様々な変更を加えるのは、ちょっと怖かったりします。
そんなとき、仮想化ソフトを使って、VPSで使っているOSをインストールし、サーバを立ち上げることで、まずはローカル環境で試してみることができます。

そこで、今回はUTMで構築した仮想環境(Ubuntu)でWebサーバを立ち上げる方法を紹介します。

目次
  1. 今回の環境について
  2. 仮想環境の設定について(ポートフォワーディング)
  3. ファイアウォールの設定
  4. SSHのインストールとSSHDの立ち上げ。(外部からアクセスできるようにする)
  5. Macのターミナルから仮想環境にSSH接続する
  6. NGINXでのWebサーバ構築
  7. ApacheでのWebサーバ構築
  8. ネットワーク内の、別のPC(Mac)、スマホなどからアクセスする方法
  9. まとめ

今回の環境について

今回は以下の環境で、仮想環境を作っています。

  • ハード: MacBook Air (M1, 2020)
  • OS: macOS Big Sur
  • 仮想化ソフト: UTM
  • 仮想環境のOS: Ubuntu Server

また、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

ブラウザから127.0.0.1へアクセスしてみましょう。

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

ブラウザから127.0.0.1へアクセスしてみましょう。

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サーバを構築する方法を紹介しました。

サーバの設定を変更するとき抵抗がある場合は、ぜひお試しください。

4件のコメント 「UTMでの仮想環境(Ubuntu)でWebサーバを立ち上げる方法」

  1. 初めまして.
    M1 mac に仮想マシンを入れて,リモートログインして使用するためにこの記事を参考にしました.
    おかげで解決することができました.ありがとうございました.

    1点質問なのですが,ネットワークの設定に使用したポート番号はなぜ 80, 22, 443 の3つなのでしょうか?
    この番号や使用するポートの数に意味はありますか?

    1. >名無しさん
      はじめまして。コメントありがとうございます。

      使用したポート番号についてですが、デフォルトで80番のポートはHTTPに使われます。これを設定しないと、NGINXやApacheでWebサーバを構築しても、Mac側からページを開くことができません。
      同じように443はHTTPSで使われます。ただ、今回の記事内でHTTPSは使っていないので、これに関しては、今回の場合は設定しなくても動作します。

      SSH接続するときには、デフォルトで22番ポートが使われます。これを設定しておかないと、MacのターミナルからUbuntuにSSHで接続ができません。

      参考になれば幸いです。

名無し へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です




オリジナルゲーム.com