今回のお題
本記事は、M1MacでLinux環境を構築するの一部です。
前回まででLinuxOSの仮想マシンを作成し、デスクトップとしても扱えるようにしました。
今回は最終章として、いよいよサーバーを立ち上げます。
本記事のゴール
- 仮想マシン上にnginxおよびapache2のローカルサーバーを立ち上げる
- 立ち上げたサーバーにMacOSおよびに他の(同一ネットワーク上の)デバイスからもアクセスできるようにする。
注意点
各作業を仮想マシンとMacOSのどちらで行っているのかを間違えないようにしてください。
今回は仮想マシン外部からもサーバーにアクセスする都合上、サーバー構築そのものの作業も途中からは仮想マシンではなくMacOS上で行います。
そのため、この作業を行っているのが仮想マシンとMacOSのどちらなのかを意識して作業にあたるようにしてください。
手順
ポートの追加
まずは、作成した仮想マシンにサーバー用のポート番号を追加していきます。
電源ボタンを押して仮想マシンを停止させた後、UTMの最初の画面に戻って仮想マシンを右クリックし、edit
を選択します。
上部のメニューから、今回はNetwork
を選択します。
最初は上記のような画面になっていると思います。
Network ModeをShared NetwokからEmulated VLANに変更すると右下にNew
ボタンが出てくるので、そちらをクリックします。
Newボタンの下に以下のような窓が出てくるので、Guest Address
とHost Address
は空欄のまま、Guest Port
とHost Port
にはそれぞれ80
と入力してSaveします。
先ほど80と入力した部分を22
と443
に変更して同じ作業を合計3回繰り返すと、以下の画面になるかと思います。
この状態になっていれば、そのままsaveします。
ファイアウォールとポートの接続設定
ポートの追加ができたので、再び仮想マシンを立ち上げてターミナルに入ります。
まずは以下のコマンドで、ファイアウォールの状態を確認します。
$ sudo ufw status
おそらく状態:非アクティブ
と出たと思います。
なので以下のコマンドを打ってアクティベートします。
$ sudo ufw enable
ファイアウォールはアクティブかつシステムの起動時に有効化されます。
と表示されれば成功です。
これで、サーバーへの接続に対してファイアウォールが有効になりました。
次に、以下のコマンドを用いて特定のポートへの接続を許可していきます。
$ sudo ufw allow 80
$ sudo ufw allow 22
$ sudo ufw allow 443
ルールを追加しました
と表示されれば成功です。
これで80, 22, 443番ポートにはアクセス可能、それ以外へのアクセスはファイアウォールにガードされてる
という状態になりました。
sshの導入
sshとは、コンピュータを外部から操作するための仕組みです。
これを用いることで、MacOS上から仮想マシンを操作したり、他の端末から仮想マシンのサーバー上にアクセスしたりできるようになります。
以下のコマンドを用いて、sshの導入とsshdの立ち上げを行います(sshdはsshで操作される側のコンピュータのことです)。
$ sudo apt install ssh
$ systemctl start sshd
上記のコマンドを入力するとパスワードを求められます。
パスワード入力後は画面に何も表示されませんが問題ありません。
ここまで完了したら一旦仮想マシンはそのままにして、MacOSのターミナルに移ります。
サーバー構築
いよいよサーバーを構築します。
前項で触れたように、ここから先の作業はMacOSのターミナルで行います。
具体的にはMacOSのターミナルの中から仮想マシンのシェルに入り、仮想マシンの操作をするという形です。
まずは以下のコマンドで仮想マシンのシェルに入ります。
% ssh "仮想マシンのユーザー名"@127.0.0.1
# 以下でもOK
% ssh "仮想マシンのユーザー名"@localhost
成功すると、プロンプト前のユーザー名@サーバー名がMacのものから仮想マシンのものに変化します。
注意
もし
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
のようなアラートが表示された場合には、
$ ssh-keygen -R 127.0.0.1
と一度入力してから再度接続を試してください。
サーバーの立ち上げ
仮想マシンのシェルに入れたので、いよいよサーバーを立ち上げます。
今回はnginxを例に取りますが、nginxの部分をapache2に読み替えていただければapacheサーバーの立ち上げも同じ手順で可能です。
まずは、サーバー用のソフトをインストールします。
$ sudo apt install nginx
これでnginxサーバーが使えるようになりました。
サーバーが起動しているかどうかの確認は、以下のコマンドで可能です。
$ systemctl status nginx.service
また、上記の画面から出るにはCtrl+Cを押してください。
サーバーの起動状態については、
$ systemctl start nginx.service
$ systemctl stop nginx.service
で可能です。
サーバーへの接続
サーバーが立ち上がっていることが確認できたら、実際に接続してみましょう。
macでブラウザを立ち上げて127.0.0.1
と入力するか、他のデバイス(同一のwifiにつながっていることが条件)でM1MacのIPアドレスを入力してください。
nginxとapache2それぞれで以下のような画面が表示されれば成功です。
ログアウト
仮想マシンのシェルから抜けてMacのシェルに戻る際にはexitコマンドを用います。
終わりに
以上でM1Mac上にLinuxサーバーを構築することができました。
同じような境遇の方のお役に立てれば幸いです。