仮想環境のLinux上のhttpdにPCやスマホのブラウザからアクセスする
- 2019年8月22日
- Windows, Linux, Web Service, スマホ
レンタルサーバーのLAMP環境へデプロイする際の練習で、Windowsのローカル環境の仮想環境にLinuxのインストールをおこない動作確認をおこないました。
今回は仮想環境のLinux上にhttpd(Apache HTTP Server)のインストールをおこない、同じLAN内のPCやスマートフォンのブラウザから、Linuxのhttpdにアクセスするところまでの手順の説明をしたいと思います。
動作確認環境
OS:Windows10(64bit)
仮想環境:VirtualBox + CentOS7(64bit)
公式サイト
VirtualBox
https://www.virtualbox.org/

CentOS
https://www.centos.org/

VirtualBoxのインストール
上記のVirtualBox公式サイトから VirtualBox のインストーラーのダウンロードをおこない、画面の指示に従ってインストールをおこないます。
VirtualBoxへのCentOS7(64bit)のインストール
こちらも基本的に画面の指示に従ってインストールをすすめていけばOKですが、インストールの際の設定で注意が必要な点がありますので、以下に記載します。
・CentOS7(64bit)のインストール前の仮想マシン作成時にOSのタイプとバーションを選択する必要があります。
タイプは「Linux」、バージョンは「RedHat(64bit)」を選択してください。
名前は自由に決めてOKです。

・CentOS7のインストール前の仮想マシンの「設定」にて「ネットワーク」の「割り当て」を「ブリッジアダプター」に変更します。
※初期値では「NAT」になっています。「NAT」の場合、ホストOSがルーターのような挙動(ホストOSに割り当てられているIPがルーターでいうところのグローバルIP、ゲストOSには新しいセグメントのローカルIPを割り当てるような挙動)でネットワークに接続します。
この部分を「ブリッジアダプター」に変更することによりゲストOSにもホストOSと同じセグメント上のIPを割り当てることが可能になるため、同一LAN内で自由に通信ができるようになります。
今回の検証では同一LAN内のPCやスマホから、仮想環境のLinux上のhttpdにアクセスすることを目的としているため、「ブリッジアダプター」に変更しています。

・仮想OSをはじめて起動すると、「起動ハードディスクを選択」ダイアログボックスが表示されます。
ここでは上記のCentOS公式サイトからダウンロードしたインストール用DVD-ROMのISOイメージファイルを選択します。

・インストール途中に「ソフトウェアの選択」画面が表示されます。
「サーバー(GUI使用)」にチェックをいれてください。

・インストール途中に「ネットワークとホスト名」の画面が表示されます。
「Ethernet(enp0s3)」を「オン」に設定してください。
またこの画面に表示されている「IPアドレス」は同一LAN内のPCや
スマートフォンからLinuxのhttpdにアクセスする際に必要ですので
メモ(※1)をとっておいてください。今回の例の場合、IPアドレスは
下図の通り「192.168.0.155」となります。

CentOS7へのhttpdのインストール
CentOS7のインストールが完了したら、起動をおこない、root権限で「端末」を開きます。
httpd(Apache HTTP Server)のインストールをおこなうには以下のコマンドを入力します。
1 |
yum install httpd |

httpdのインストールが完了したら以下のコマンドでhttpdの起動をおこないます。
1 |
systemctl start httpd.service |

PCやスマートフォンからの接続確認
httpdが起動したら、(※1)でメモをとったIPアドレス(今回の例の場合「192.168.0.155」)をブラウザに入力をおこない、アクセスが可能か確かめてみます。
まずはCentOSにプリインストールされているブラウザ「Firefox」を起動して
アクセスが可能か確認をおこないます。

無事アクセスができました。
次に別のPCやスマートフォンからのアクセスを確認してみたいと思います。

別のPCからだとアクセスできませんでした。
原因は、CentOS7ではデフォルトでfirewalld(ファイアウォールのサービス)が有効になっており、アクセスするために必要なポートが塞がれていたからです。
以下のコマンドにてhttp通信に必要なポート80番を開放します。
1 |
firewall-cmd --zone=public --add-service=http |

上図のように「success」と表示されれば、80番のポート開放が完了です。
あらためて別のPCやスマートフォンからのアクセスを確認してみたいと思います。
PC(Windows10):

スマートフォン(Android9)

無事にアクセスをおこなうことができました。
IPアドレスを固定する方法
上記の方法ではDHCPにより自動的に割り当てられたIPアドレスを使用しましたが、IPアドレスを固定させることも可能です。
まずは、現状のホストOSのネットワーク設定がどのようになっているか確認(※2)をしておきます。(後述するLinuxでの設定の際に必要になります。)

LinuxでIPアドレスを固定するには以下の設定ファイル(XXXXの部分は環境により異なります)をテキストエディタで開いて編集をおこないます。
・編集する設定ファイル
/etc/sysconfig/network-scripts/ifcfg-XXXX
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=XXXX UUID=XXXX-XXXX-XXXX-XXXX DEVICE=XXXX ONBOOT=no |
以上の設定ファイルを以下のように書き換えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=XXXX UUID=XXXX-XXXX-XXXX-XXXX DEVICE=XXXX ONBOOT=yes IPV6_PRIVACY=no DNS1=192.168.0.2 DNS2=192.168.0.1 IPADDR=192.168.0.XXX(任意の値に設定する) NETMASK=255.255.255.0 GATEWAY=192.168.0.2 |
変更箇所は以下の通りです:
・「BOOTPROTO」を「dhcp」から「static」に変更する。
・「ONBOOT」を「no」から「yes」に変更する。
・「DNS1」を新規追加する。値は(※2)で確認をおこなったホストOSのネットワーク設定の「優先DNSサーバー」と同じ値にする。
・「DNS2」を新規追加する。値は(※2)で確認をおこなったホストOSのネットワーク設定の「代替DNSサーバー」と同じ値にする。
・「IPADDR」を新規追加する。XXX部分を任意の値に設定してください。
・「NETMASK」を新規追加する。値は(※2)で確認をおこなったホストOSのネットワーク設定の「サブネットマスク」と同じ値にする。
・「GATEWAY」を新規追加する。値は(※2)で確認をおこなったホストOSのネットワーク設定の「デフォルトゲートウェイ」と同じ値にする。
以上、設定は完了です。
以下のコマンドを実行することで、固定IPの設定が反映されます。
1 |
systemctl restart network |
木曜日担当:nishida
nishida at 2019年08月22日 10:00:05