VitrualBoxのCentOSにApacheをインストールした時の備忘録。
#環境
以下の記事でCentOSの基本設定をしたことを前提としている。
https://qiita.com/kazu_kazu/items/6e8dd09a5b0f641c3bf3
MacBook Pro (macOS Catalina バージョン10.15.6)
VirtualBox 6.1.14
CentOS 8.2
Apache 2.4.37
#Apacheインストール
以下の記事のとおりにインストール。
WEB ARCH LABO
「Apache httpd 2.4 を CentOS 7 に yum でインストールする手順」
https://weblabo.oscasierra.net/apache-installing-apache24-yum-centos7-1/
ソースからではなくyumでインストールする。
まず、パッケージの情報を表示してインストールするバージョンを確認する。
[test1@www ~]$ yum info httpd
CentOS-8 - AppStream 4.8 kB/s | 4.3 kB 00:00
CentOS-8 - Base 11 kB/s | 3.9 kB 00:00
CentOS-8 - Extras 4.4 kB/s | 1.5 kB 00:00
利用可能なパッケージ
名前 : httpd
バージョン : 2.4.37
リリース : 21.module_el8.2.0+494+1df74eae
Arch : x86_64
サイズ : 1.7 M
ソース : httpd-2.4.37-21.module_el8.2.0+494+1df74eae.src.rpm
リポジトリー : AppStream
概要 : Apache HTTP Server
URL : https://httpd.apache.org/
ライセンス : ASL 2.0
説明 : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
次はインストール。
[test1@www ~]$ sudo yum -y install httpd
[test1@www ~]$ httpd -v
Server version: Apache/2.4.37 (centos)
Server built: Sep 15 2020 15:41:16
#起動と停止確認
[test1@www ~]$ systemctl start httpd.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
'httpd.service'を開始するには認証が必要です。
Authenticating as:
Password:
==== AUTHENTICATION COMPLETE ====
[test1@www ~]$ systemctl status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor pres>
Active: active (running) since Sat 2020-10-24 16:57:35 JST; 45s ago
Docs: man:httpd.service(8)
Main PID: 33732 (httpd)
Status: "Running, listening on: port 80"
Tasks: 213 (limit: 4876)
Memory: 20.9M
CGroup: /system.slice/httpd.service
├─33732 /usr/sbin/httpd -DFOREGROUND
├─33737 /usr/sbin/httpd -DFOREGROUND
├─33738 /usr/sbin/httpd -DFOREGROUND
├─33739 /usr/sbin/httpd -DFOREGROUND
└─33740 /usr/sbin/httpd -DFOREGROUND
ホストブラウザでhttp://(ApacheをインストールしたゲストのIPアドレス)
を入力してWebサーバにアクセス。
以下の画面が表示されたら成功。
Webサーバ停止。
[test1@www ~]$ systemctl stop httpd.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
'httpd.service'を停止するには認証が必要です。
Authenticating as:
Password:
==== AUTHENTICATION COMPLETE ====
#ホストOS以外からのアクセスの有効化
現在の仮想マシンのネットワーク設定はアダプタ1のNATとアダプタ2のホストオンリーアダプターである。
ホスト、ゲストのIPアドレスの状態は以下のとおり。
OS | インターフェース名 | IPv4アドレス |
---|---|---|
ゲスト | enp0s3(NAT) | 10.0.2.15 |
ゲスト | enp0s8(ホストオンリーアダプタ) | 192.168.56.10 |
ホスト | en0 | 192.168.0.4 |
ホスト | vboxnet0(ホストオンリーアダプタ) | 192.168.56.1 |
ホスト→ゲストのWebサーバへのアクセスは、ホストオンリーアダプタにより簡単に実現できるが、ホスト以外で同一LAN内のアクセス(自分のスマホからゲストへのアクセスなど)はNAT経由でアクセスすることになる。
NATでゲストにアクセスするためには、ポートフォワーディングの設定を行う必要がある(NATは、デフォルトだとホストや他のコンピュータからアクセスできない設定になっている。)。
VMの設定から、ネットワーク→アダプター1→高度→ポートフォワーディングで、以下のように設定する(名前は適当で、ホストポートはウェルノウンポート以外かつホストで使用していないポートであればよい)。
ゲストのファイアーウォールでhttpを許可する。ホストオンリーアダプターが許可せずに接続できた理由は分からない。
[root@www ~]# firewall-cmd --add-service=http --permanent
success
[root@www ~]# firewall-cmd --reload
success
[root@www ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: cockpit dhcpv6-client http
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
ゲストでWebサーバを起動した上で、スマホで接続を確認する(以下の写真はホストPCのブラウザの写真であるが、スマホでも同様に接続できた。)。
ブラウザに入力するIPv4アドレスはゲストのものではなく、ホストのIPv4アドレスとポートフォワーディングで設定したポート番号を入力する(前述したが、NATでは直接ゲストにアクセスできないため、ホスト経由で接続する。)。
NATやポートフォワーディングについては以下のユーザマニュアルを参考にした。
http://download.virtualbox.org/virtualbox/UserManual.pdf