【Vagrant】LAN内の別のパソコン、スマホからアクセスできるようにする

前似たような記事を書いた気がするんだけど見つからないのでメモ。
せっかくなので環境ごと作成してアクセスできるまでを書いた。

環境

【OS】Microsoft Windows 10 Home
【Vagrant】Vagrant2.2.9

参考

Windowsで、使用中のIPアドレスを調査する
現在ネットワークで使用中のIPアドレスを調べるには、pingコマンドだけではなくarpコマンドも使うとよい。さらにforコマンドと組み合わせれば、簡単にLAN上のIPアドレスを列挙できる。
CentOS8でLAMP環境を作る at softelメモ
問題 CentOS8でさくっとLAMP環境を作りたい。 答え リポジトリ追加 CentOS8の標準ではphp7.2がインストールされる。php7.2でよかったら、リポジトリの追加は不要。php7.4が欲しかったらremi ...

LAN内で使えるIPを探す

開発用WEBサーバーに使いたいので、まずLAN内からアクセスできるIPを探す。

コマンドプロンプトで下記を実行。

C:\> ipconfig /all

いろいろ出てくるけどLANの「DHCP サーバー」のIP部分を確認。

(省略)
Wireless LAN adapter Wi-Fi:
(省略)
   DHCP サーバー . . . . . . . . . . . .: 192.168.0.1
(省略)

上記の例だと、「192.168.0.*」がLAN内で使えるIPの範囲になるので、利用されているIPをチェックする。
下記のコマンドを実行すると、利用されているIPが「arp.log」に書き込まれる。
(IPの「192.168.0.」部分は環境に応じて書き換えること)

rem 192.168.0.以降で使用されているIPをログに書き込む
for /l %%i in (0,1,255) do ping -w 1 -n 1 192.168.0.%%i && arp -a 192.168.0.%%i >> arp.log

仮想マシン作成

CentOS8.2のVagrantfileを作成

C:\> vagrant init bento/centos-8.2

Vagrantfileをテキストエディタで開き、public_networkの部分のコメントを外し、開いていたLAN内のIPを追記したものを記載する。
(今回は適当に「192.168.0.111」とした)
“private_network”と間違えないように注意する。(空の状態にして自動でIPを振ってもらうこともできる、その場合はvagrant up後にIPが表示される)

   # config.vm.network "public_network"
   config.vm.network "public_network", ip: "192.168.0.111"

起動してログイン

C:\> vagrant up
C:\> vagrant ssh

サーバー設定

rootになってパッケージの更新

$ su
# dnf update

LAMPのインストール
remiリポジトリを追加するとdnfから必要なパッケージをインストールできるようになる

# dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

必要なパッケージをインストール(下記はLAMP環境で必要なパッケージをインストールしているので適宜変更してください)

# dnf -y install httpd mod_ssl mysql mysql-server php74-php-cli php74-php-fpm php74-php-mysqlnd php74-php-opcache php74-php-mbstring php74-php-pecl-zip php74-php-xml

サーバー、DB、phpの起動

# systemctl start httpd
# systemctl start mysqld
# systemctl start php74-php-fpm

ステータス確認、Active: active (running) になっていれば動いている

# systemctl status httpd
# systemctl status mysqld
# systemctl status php74-php-fpm

自動起動を設定する、設定しておくとマシンを再起動しても自動的にサーバーが動くようになる。
(systemctl httpd startとかコマンド書いてサーバーを起動しなくてよくなるということ)

# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

# systemctl enable mysqld
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.

# systemctl enable php74-php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/php74-php-fpm.service → /usr/lib/systemd/system/php74-php-fpm.service.

起動が確認できたらブラウザで「http://192.168.0.111」を開けるようになる。
開いてみてApacheのデフォルトページが表示されれば設定完了。
スマホでも別PCでも、同じLAN内からであればアクセスできる。

おわり。