この記事※現在編集中で書いているのですが、Windows11にアプデできないPCが手元にあったので、Linuxを入れることにしました。せっかくなので、サーバーの勉強でもと思い、技術評論社の「ゼロからわかるLinuxサーバー超入門Ubuntu対応版」に沿って、一通り試してみました。とてもわかりやすい本で、サーバの種類すらもよくわからない私でもサーバーを建てることができましたが、2023年の記事なので、古くなっているところや、説明が足りず詰まったところなどメモを残しておきます。サポートサイトも機能していません技術評論社の該当書籍サイトはここ
前提の環境
OSはWindows10
作業時の年月日 2026/3くらい
この本の通りに進める作業の流れはこんな感じ ↓
この作業の流れで、本に説明がないところや、ほんの通りにしてもつまったところ思ったところを書いていきます。
- VirtualBoxを入れるVirtualBoxのインストールで困ったところ
- Ubuntu Serverを入れるUbuntu server 22.04の入手先
- ネットワーク接続(yamlの設定)ネットワーク関係で困ったところ
- Apacheを入れる
- SSHで接続する
- TeraTermをいれてリモート接続するTeraTermの入手先がgithubに変更されている
- ファイアウォールの設定を確認してSSHのポートを変更する
- Basic認証の設定をする230ページからのBasic認証部分の補足について
VirtualBoxのインストールで困ったところ
VirtualBoxをダウンロードしたあと、インストールする際、Visual C++が入っていないとセットアップウィザードが表示されません。
インストールについての記載ページが43ページですが、Visual C++についての記載は46ページにありますがMicrosoftの公式ページから以下のファイルをダウンロードします。
その後、VirtualBoxがインストールできるようになりますので43ページから続けることができます。
ネットワーク関係で困ったところ(yamlの設定)
このあと135ページでApacheを入れるのですが、その前に121ページでソフトウエアのインストールと更新という項があります。ここではじめてネットワークに接続するのですが、すんなりいかなかったのでメモに残します。
※121ページからのアップデート等でネット接続ができていない場合当然ながらApacheモナ入りません
'ip a'
で、snp0s3(仮想マシンの中にあるネットワークカード(LANポート))に192.168.xx.xxみたいなのがあるか、state UPかDOWN(ネットワークカードが無効(電源OFF))かを確認
次にネットワークに繋がっているかどうかの確認
→ state DOWNの場合は以下を実行
'sudo ip link set enp0s3 up'
意味:ネットカードの電源ON
ip → ネットワーク操作
link → インターフェース操作
set ... up → 有効化(ON)
→ そのあと以下のようにIP再取得
'sudo dhclient'
意味:
DHCPサーバに問い合わせてIPアドレスをもらう
上記できたら再度下記で再確認
'ip a'
UPになっていて、192.168.xx.xxが取れていたら、以下でネットワークを確認
'ping 8.8.8.8'
通る → ネットはある(DNSの確認のため次へすすむ)
通らない → ネット自体死んでる → Wi-Fiを確認し、上記を繰り返す
8.8.8.8が通れば、下記のチェックをする
'ping google.com'
通ればクリア、
通らない時はエラー文言を確認する。「Temporary failure in name resolution」(DNS通ってない) → DNS問題確定
'sudo resolvectl dns enp0s3 8.8.8.8'
そして、下記でログを確認すると、、、
'ping -c 3 google.com'
google.com (2404:6800:...)と出てくる
...
0 received, 100% packet loss
google.com → IPv6アドレス返ってきた((2404:6800:...)部分)
→ IPv6にpingしに行く
→ IPv6通信できない
→ 失敗
DNSは直ったけど、通信がIPv6に行ってるということらしい
IPv4に変えたいので、以下
'ping -4 -c 3 google.com'
これで一旦は解決したのだけど、、、
毎日同じエラーが出てくるので、だるくなった。
netplanの設定しちゃお
'sudo cat /etc/netplan/*.yaml'
でみると
50-cloud-init.yaml というファイルがあり、
これによって起動時に設定が上書きされる(→不安定になることがある)ぽい
まずは、cloud-initを無効化する
'sudo touch /etc/cloud/cloud-init.disabled'
次に自分でnetplanを作る
'sudo nano /etc/netplan/01-netcfg.yaml'
これを書く
'network:
version: 2
ethernets:
enp0s3:
dhcp4: true'
書き方(YAMLはここミスると普通に死ぬ)
タブは使わない!!(超重要)
スペースでインデントする
インデントのルール
network: → 先頭(0スペース)
version: → スペース2つ
ethernets: → スペース2つ
enp0s3: → スペース4つ
dhcp4: → スペース6つ
保存方法
① 保存 Ctrl + O(オー)
File Name to Write: /etc/netplan/01-netcfg.yaml
そのまま Enter
② 終了 Ctrl + X
その後、
'sudo netplan apply'
すると、Permissions for /etc/netplan/01-netcfg.yaml are too open(このファイル、誰でも見れる状態やで(セキュリティゆるい)という警告が出たので、
'sudo chmod 600 /etc/netplan/01-netcfg.yaml'
ファイルの権限を「所有者だけ読める&書ける、他からは見られない」に変更した。
今一度、下記でチェックをして
'sudo netplan apply'
netplan apply 実行すると
① YAML読む
② 内容チェック
③ 内部形式に変換
④ systemd-networkd or NetworkManagerに渡す
⑤ 実際のネットワーク変更
※ YAML書いただけでは何も起きない(applyして初めて反映される)
再起動
'sudo reboot'
ここで一回ネットワークが切れるため、Tera Termの接続が切れますが正しいです。
この設定で、毎回ネットワーク設定をしなくてよくなります。
TeraTermの入手先がgithubに変更されている
本に記載の入手先からは入手不可なのでgithubのTeraTerm Projectにアクセスし、リンクの中程にあるinstallerからダウンロードする。
230ページからのBasic認証部分の補足について
[メモ].htpasswdや.htaccessファイルは隠しファイルなので -aをつけないとみることができない↓
'ls -a'
[メモ]234ページの「6-3-4>ユーザーとパスワードを設定する」のところについて
6-3-3でパスワードファイル(.htpasswd)を作成したら、
制限をかけたいディレクトリに「.htaccess」ファイルを置いて、認証機能を有効にします。
という部分の説明がないので、以下にメモをおきます。
とりあえず、本の通り/var/www/htmlに置くことにします
手順は以下の通り
- .htpasswdの作成(233ページでファイルを作成した)
- .htaccessの作成 → ここの部分
- Apache側で .htaccess を有効化(231ページsecurity.confのオーバーライド設定=AllowOverrideをAllにした)
.htaccessを作って
'sudo vi /var/www/html/.htaccess'
viで以下を描く(.htaccessは自分でviとかで作る。拡張子なしのファイルのため)
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
Apacheの再起動をする
sudo systemctl restart apache2
AllowOverrideをAllしたあとの再起動はreloadでもOKだけど、
.htaccessを作った後は、restartじゃないとダメ
以上です!