LAN内にウェブサーバーを構築した

研究室に1つもウェブサーバーがなかったので、自分で立ち上げた話。

マシンの選定

好都合なことに研究室の古いPCは処分されずに数多く残されていたので、その中の適当なマシンをサーバーにすることにした。

一応、初めてやる作業なので壊れても良いようにWindowsXPが入っていたマシンを選んだが、そのPCのHDDを他のPCに繋ごうとしたら規格が古すぎて合わなかったため、机の中に転がっていたHDDにOSを書き込むことに。

OSの書き込み

Debian系のディストリビューションしか勝手がわからないためUbuntu Server 22.04 LTSをインストールすることにした。

ダウンロードページから.isoイメージファイルを落としてきたら、USBフラッシュドライブなどに焼いてインストールメディアを作成する。 自分はRufusを使って焼いた。

インストールメディアを作成したら適当なマシンでブートしてHDDに書き込む。 USBブートはBIOSの設定をいじれば大体できる。

NICが認識しない

BIOS起動時はEthernetポートのLEDが点灯しているが、OS起動と同時に消灯する。 これはよくある問題らしく、Googleしたらドライバの問題だと当たりが付いた。

まずはNICの種類の確認。

$ lspci | grep Ethernet

マシンに対応するドライバをダウンロードしてくる。

ドライバのビルドにmakegccが必要なのだが、gccの依存関係を手動で解決するのは無理だったので、一旦NICが認識するマシンにHDDを挿してブート。

Proxyの設定

makegccをインストールしようとしたが、aptのProxyを設定していなくて詰まる。

aptの設定ファイル(/etc/apt/apt.conf)をいじって解決。

Aquire::http::Proxy "http://address:port";
Aquire::https::Proxy "http://address::port";

NICドライバのビルド・インストール

ビルドツールのインストール

$ sudo apt install -y gcc make

ダウンロードしてきたドライバのREADMEとか読みながらドライバをビルド。

ドライバをカーネルに追加。

$ sudo modprobe -r e1000e
$ sudo modprobe e1000e

新しいドライバを起動時に読み込むように設定を更新。

$ sudo update-initramfs -u

デプロイ環境の構築

Dockerとgitを入れて、Proxy設定をしただけ。

適当にNginxサーバーを立ち上げる。

$ docker run --rm -d -p 80:80 nginx

USBフラッシュドライブのマウント

良く忘れるのでメモ。

バイスの確認。

$ sudo fdisk -l

適当なディレクトリにマウント。

$ mount -t formatType -o rw,gid=,uid= /path/to/device /path/to/mountpoint

アンマウント

$ umount /path/to/mountpoint

端折りすぎて3日分の作業とは思えないけど、トラブル発生しすぎて疲れた。