研究室に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
マシンに対応するドライバをダウンロードしてくる。
ドライバのビルドにmake
とgcc
が必要なのだが、gcc
の依存関係を手動で解決するのは無理だったので、一旦NICが認識するマシンにHDDを挿してブート。
Proxyの設定
make
とgcc
をインストールしようとしたが、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日分の作業とは思えないけど、トラブル発生しすぎて疲れた。