#author("2024-05-08T14:00:23+09:00","default:Exp3","Exp3")
#author("2024-05-13T17:19:28+09:00","default:Exp3","Exp3")
[[計算機アーキテクチャとOS>工学実験IIIテーマA(2022)]]

* 仮想コンピュータを用いたサーバのセットアップ [#v64bbd3d]

仮想環境を実現する代表的なソフトウェアの1つであるOracle VM VirtualBoxを用いて,サーバとして利用できる仮想コンピュータを構築する.

本実験では,Ubuntu Server 22.04 をゲストOSとしてインストールし,Webサーバの機能を持つサーバを構築する.

実験は,電算機演習室のPCでWindowsを起動して行う.

仮想化ソフトであるOracle VM VirtualBoxの操作やLinuxのコマンドなどでわからない事は,Oracle社のHPにあるマニュアルを探して調べたり,インターネットで検索しながら実験を進めること.

** 注意事項 [#k990f499]

実験は,電算機演習室の&color(red){''左側3列''};に配置されているコンピュータの番号が,&color(red){''st001〜st007'', ''st017〜st023'', ''st033〜st039'', ''st048〜st054'', ''st064〜st070''};のものを使用すること.

** 準備するもの(希望者のみ) [#r69f450e]

//&color(red){''3GB''以上の空き容量};のあるUSBメモリ
&color(red){''16GB''以上の空き容量};のあるUSBメモリ

//(実験で作成した仮想環境のデータのバックアップを取りたい場合には準備すること)
(実験で作成した仮想環境のデータは,Windowsを終了すると,全て消えてしまうため,バックアップを取りたい場合には準備すること)

&aname(content);

** 実験内容 [#g730703f]

|[[1. 仮想コンピュータの作成>CAOS-04#sec1]]|仮想マシンの格納場所の設定|
|~|ゲストOSの設定|
|~|ディスク容量の指定と仮想ディスクのファイル設定|
|~|ハードウェア(CD)のカスタマイズ|
|[[2. Linuxのインストール>CAOS-04#sec2]]|ネットワークの設定|
|~|パーティションの設定|
|~|ユーザ設定|
|[[3. ソフトウェアのインストール>CAOS-04#sec3]]|aptを用いた開発環境等(gcc他)のインストール|
|~|apacheソースコードの取得|
|~|apacheのコンパイルおよび起動|
|~|nmapによるポートスキャン|
|~|ufwによるファイアウォールの設定|
//|[[4. (応用課題)サーバの運用>CAOS-04#sec4]]|ゲストOSのネットワーク変更(固定IP)|
//|~|ポートフォワーディングの設定|

#br

** 実験手順および課題 [#hf973562]

&aname(sec1);

*** 1. 仮想コンピュータの作成 [#r9070759]

''[実験1]'' 仮想コンピュータを作成しなさい.

- ドキュメントフォルダにVMフォルダを作成する(例:C:¥Users¥k1234567¥VM).
&color(red){指示通り指定されたフォルダに仮想コンピュータを作成しないと,失敗することがある.};
 作成した仮想コンピュータをバックアップする場合には,C:\Users\k1234567\VMフォルダをUSB等に保存する.
 PCを再起動した後に再度作成した仮想コンピュータを起動する場合には,Cドライブにコピーした後,VirtualBoxマネージャの
 メニュー「仮想マシン」-「追加」でフォルダを指定する.

-&ref(CAOS-04-21/ICON2.png,around,40%,nolink);「Oracle VM VirtualBox」のアイコンをクリックして起動する.

-「ファイル」-「環境設定」から「デフォルトの仮想マシンフォルダー」を「C:¥Users¥k1234567¥VM」と設定する.~
//- 「C:¥VM」でなく,デフォルトのままでもかまいません.~
&ref(CAOS-04-21/VB101.png,right,50%);

-「新規」を選択して,新しい仮想マシンウィザードを起動する.

--&color(red){必ず,以下の2点の注意に従うこと.};設定に不安がある場合は,設定内容を変更後,確定する前に,教員やTAに確認してもらうこと.

--また,&color(red){先に下記の[実験課題1.1]に目を通し,適宜画面をキャプチャするなど記録を行いながら実験を進める};こと.

//--「ガイド付きモード」で設定を行うこと.~
//&ref(A4-1_0.png,right,nowrap,60%);

|>|BGCOLOR(LIGHTGRAY):''注意1: 「名前とオペレーティングシステム」''|
|「名前」に「UbuntuServer」と入力する.&br;タイプは「Linux」,バージョンは「Ubuntu(64-bit)」が選択されていることを確認すること.|#ref(A4-1_1.png,left,nowrap,50%)|
|メモリーサイズは「2048MB」とすること.&br;その他の設定はデフォルトのままでかまわない.|#ref(A4-1_1_1.png,left,nowrap,50%)|
|>|BGCOLOR(LIGHTGRAY):''注意2:「インストール用メディア」''|
|「設定」アイコンをクリックする.&br;左側のメニューから「ストレージ」を選択する.&br;&br;ストレージツリーの中から空のCDアイコンをクリックする.&br;光学ドライブのCDアイコンをクリックして,「ディスクファイルを選択」をクリックする.&br;「仮想光学ディスクファイル」として「C:¥VM¥ubuntu-22.04.4-live-server-amd64.iso」を選択すること.|#ref(CAOS-04-23/A4-1_2.png,left,nowrap,35%)|

// バージョン20.04 [[https://ubuntu.com/download/server]]
// バージョン18.10 [[http://old-releases.ubuntu.com/releases/18.10/ubuntu-18.10-server-amd64.iso]] &br; 
//(または,バージョン16.10 [[http://old-releases.ubuntu.com/releases/yakkety/ubuntu-16.10-server-amd64.iso]] )&br;

上記の注意事項を守らなかった場合,仮想コンピュータは作成されるものの,
この後の実験を進めることができないため,やり直しとなる.

Oracle VM VirtualBoxのウィンドウの左上に"UbuntuServer"が表示されたら実験1は終了である.~
&ref(CAOS-04-23/A4-1_N.png,right,35%);

#clear

''[実験課題1.1]'' 仮想コンピュータを作成する際に,ウィザードに指示を求められる.その際,
 - 指示を求められた内容とどのように項目を設定したか
 - 画面のキャプチャ([Alt]キーを押しながら[Print Screen]キー)または,撮影した映像
をレポートに記せ.

#br

[[実験内容に戻る>CAOS-04#content]]

----

&aname(sec2);

*** 2. Linuxのインストール [#d62629b7]

''[実験2]'' 実験1で作成した仮想コンピュータに,ゲストOSとしてLinux(Ubuntu)をインストールしなさい.

「起動」をクリックするとインストーラが起動する.

&ref(A4-2_0.png,right,50%);

//基本的には,第3回のLinuxのインストールと同様に作業する.

ただし,&color(red){必ず,以下の8点の注意に従うこと.};

また,&color(red){以下の[実験課題2.1]に目を通し,適宜記録を行いながら実験を進める};こと.

''[実験課題2.1]'' インストールを行う間,何度かインストーラに指示を求められる.その際,
 - 指示を求められた内容とどのように項目を設定したか
 - 画面のキャプチャ([Alt]キーを押しながら[Print Screen]キーを押す)または,撮影した映像
をレポートに記せ.

|>|BGCOLOR(LIGHTGRAY):''注意1: 「言語設定」''|
|日本語版のインストーラは用意されていないため,インストールは英語で行う.|#ref(CAOS-04-23/A4-2_1.png,left,nowrap,35%)|
|>|BGCOLOR(LIGHTGRAY):''注意2: 「キーボード設定」''|
|キーボードレイアウトは,日本語を選択する.&br;(Tabキーで移動、Spaceキーで選択)|#ref(CAOS-04-23/A4-2_2.png,left,nowrap,35%)|
|>|BGCOLOR(LIGHTGRAY):''注意3: 「インストールの種類」''|
|インストールの種類は,「Ubuntu Server」を選択する.|#ref(CAOS-04-23/A4-2_3.png,left,nowrap,35%)|
|>|BGCOLOR(LIGHTGRAY):''注意4: 「ネットワークの設定」''|
|ネットワークは自動設定とする.|#ref(CAOS-04-23/A4-2_4.png,left,nowrap,35%)|
|>|BGCOLOR(LIGHTGRAY):''注意5: 「プロキシ設定」''|
|プロキシは使用しない.|#ref(CAOS-04-23/A4-2_5.png,left,nowrap,35%)|
|>|BGCOLOR(LIGHTGRAY):''注意6: 「ストレージ構成」''|
|ディスク全体を使用し,LVMグループとしてセットアップする.&br;暗号化しない.|#ref(CAOS-04-23/A4-2_6.png,left,nowrap,35%)|
|#ref(CAOS-04-23/A4-2_7.png,right,nowrap,35%)|#ref(CAOS-04-23/A4-2_8.png,left,nowrap,35%)|
|>|BGCOLOR(LIGHTGRAY):''注意7: 「プロファイルセットアップ」''|
|ユーザの本名として,「ibe-exp3」,サーバ名として「exp3-a4」を入力すること.&br;ユーザ名は「ibe-exp3」とする.&br;パスワード(8文字以上推奨)は自由に設定してよい.(ログインに使用するので覚えておくこと.)|#ref(CAOS-04-23/A4-2_9.png,left,nowrap,35%)|
|>|BGCOLOR(LIGHTGRAY):''注意8: 「ソフトウェアの選択」''|
|インストールするソフトウェアの選択では何も選択しないこと.|#ref(CAOS-04-23/A4-2_10.png,left,nowrap,35%)|

上記の注意事項を守らなかった場合,Linuxは正常にインストールされるものの,
この後の実験を進めることができなくなるためやり直しとなる.

再起動を行うよう指示を受けた時点で,実験2は終了である.

&ref(CAOS-04-23/A4-2_11.png,right,40%);

~

//インストール終了後,再起動を行うと「Setup agent」が起動する.本実験ではSetup agentの起動画面では「Exit」を押して終了する.

再起動したのち,ログイン画面が表示されたら,login: プロンプトの後ろにユーザ名「ibe-exp3」を入力し,先ほど設定したパスワードを入力する.(パスワードは、入力の際に表示されない)

&ref(CAOS-04-23/A4-2_N.png,right,40%);

#br

[[実験内容に戻る>CAOS-04#content]]

----

&aname(sec3);

*** 3. ソフトウェアのインストールおよび設定 [#ceeb94d4]



~~
コンソールが日本語フォントを表示できず文字化けするため,以下のコマンドを入力し,日本語表示をデフォルトの英語で表示させる.
 $ LANG=C bash

''[実験3.1]'' 管理者としてコマンドを実行するsudoコマンドを使用して,8つのパッケージ(build-essential, make, wget, libpcre3, libpcre3-dev libexpat1-dev nmap w3m)をaptコマンドでインストールしなさい.
 $ sudo apt-get update
 $ sudo apt install build-essential make wget libpcre3 libpcre3-dev libexpat1-dev nmap w3m

''[実験課題3.1]'' ホストOSであるWindowsのIPアドレスを調べ,仮想コンピュータにインストールしたゲストOSであるLinuxが,ホストOSとネットワーク接続できるかをpingを使用して確認しなさい.

//また,接続先として,学科のWebサーバであるinf(inf.ibe.kagoshima-u.ac.jp,163.209.132.2)に対しても接続テストを行いなさい.

また,テキストベースのWebブラウザである w3m を使用して,https://www.eng.kagoshima-u.ac.jp/english/ にアクセスできることを確認しなさい.
 $ w3m https://www.eng.kagoshima-u.ac.jp/english/
 「q」または「Q」でw3mを終了する.

最後に,「nmap localhost」でゲストOSのポートをスキャンし,その状態を確認しなさい. 


''[実験3.2]'' /tmpディレクトリに移動し,Webサーバソフトapacheを,ソースコードからインストールしなさい. 

1. apache2.4ではAPR(Apache Portable Runtime)のインストールが必要である.wgetコマンドで,apr, apr-util のソースコードをミラーサイトからダウンロードする.
 $ wget https://ftp.jaist.ac.jp/pub/apache/apr/apr-1.7.4.tar.bz2
 $ wget https://ftp.jaist.ac.jp/pub/apache/apr/apr-util-1.6.3.tar.bz2

2. 同様に,apache のソースコードもダウンロードする.
 $ wget https://ftp.jaist.ac.jp/pub/apache/httpd/httpd-2.4.58.tar.bz2
 $ wget https://ftp.jaist.ac.jp/pub/apache/httpd/httpd-2.4.59.tar.bz2

3. ls コマンドで,3つのファイルがダウンロードされていることを確認する.

4. 取得したファイルが正規のものであることを確認する.~
 ダウンロードファイルの配布元 https://www.apache.org/ から, sha256ファイルをダウンロードし,ファイルが改竄されていないかをコマンド ”cat 検査対象ファイル名 | openssl sha256” で表示されるものと,ダウンロードした”検査対象ファイル名.sha256” のファイル内の文字列が一致するかで確認する.
 $ wget https://www.apache.org/dist/httpd/httpd-2.4.58.tar.bz2.sha256
 $ cat httpd-2.4.58.tar.bz2 | openssl sha256
 $ cat httpd-2.4.58.tar.bz2.sha256
 $ wget https://www.apache.org/dist/httpd/httpd-2.4.59.tar.bz2.sha256
 $ cat httpd-2.4.59.tar.bz2 | openssl sha256
 $ cat httpd-2.4.59.tar.bz2.sha256

5. 同様に,apr と apr-util についても改竄されていないかを確認する.

- ダウンロードした "apr-1.7.4.tar.bz2" と "apr-util-1.6.3.tar.bz2"のハッシュ値は,以下のURLに示したそれぞれのファイルに記載されている.

 URL: https://www.apache.org/dist/apr/apr-1.7.4.tar.bz2.sha256
 URL: https://www.apache.org/dist/apr/apr-util-1.6.3.tar.bz2.sha256


6. tarコマンドで,圧縮されたファイルhttpd-2.4.58.tar.bz2を展開する.
 $ tar jxvf httpd-2.4.58.tar.bz2
6. tarコマンドで,圧縮されたファイルhttpd-2.4.59.tar.bz2を展開する.
 $ tar jxvf httpd-2.4.59.tar.bz2

7. 同様に,apr-1.7.4.tar.bz2, apr-util-1.6.3.tar.bz2も展開する.

8. lsコマンドで,apr-1.7.4 と apr-util-1.6.3の2つのフォルダが存在することを確認した後,フォルダ名をそれぞれ apr と apr-util に変更して httpd-2.4.58/srclib/に保存する.
 $ mv apr-1.7.4 httpd-2.4.58/srclib/apr
 $ mv apr-util-1.6.3 httpd-2.4.58/srclib/apr-util
8. lsコマンドで,apr-1.7.4 と apr-util-1.6.3の2つのフォルダが存在することを確認した後,フォルダ名をそれぞれ apr と apr-util に変更して httpd-2.4.59/srclib/に保存する.
 $ mv apr-1.7.4 httpd-2.4.59/srclib/apr
 $ mv apr-util-1.6.3 httpd-2.4.59/srclib/apr-util

9. cdコマンドで,httpd-2.4.58 へ移動する.
9. cdコマンドで,httpd-2.4.59 へ移動する.

10. configureコマンドを実行し,Makefileの作成を行う.~
 &color(red){configureコマンドは,APRを有効にするため --with-included-apr オプションを付与する.};

 $ ./configure --with-included-apr

11. makeコマンドを実行し,apache(httpd)のコンパイルを行う.

12. sudoコマンドを使用し管理者権限で make installコマンドを実行し,apacheをインストールする.

 $ sudo make install

13. エディタ(vi)を用いて,設定ファイル(/usr/local/apache2/conf/httpd.conf)を&color(red){管理者権限で};編集する.設定すべき箇所は下記の通り.

[httpd.confの設定変更箇所の例]
 LoadModule userdir_module modules/mod_userdir.so(先頭の#を削除)
 ServerAdmin  k*******@kadai.jp(実験者のメールアドレス)
 ServerName st***.ibe.kagoshima-u.ac.jp(先頭の#を削除し,ホスト名を書く.***はキーボードに貼付されている番号)
 Include conf/extra/httpd-userdir.conf(先頭の#を削除)

14. apacheをサービスとして起動する.一般的にはserviceコマンドを用いるが,本実験ではソースコードからインストールを行ったため,apachectlコマンドを用いる.
 $ sudo /usr/local/apache2/bin/apachectl start

15. w3m で localhost にアクセスして, apacheが起動していることを確認する.


''[実験3.3]'' ポートフォワーディングの設定して,ホストOSからゲストOS上で稼働するWebサーバにアクセスできるように設定する.

1. 仮想コンピュータのネットワーク設定にあるポートフォワーディングを設定する.


#ref(CAOS-04-21/VM401.png,left,nowrap,60%,添付ファイルの画像)


- プロトコル,ホストポート,ゲストIP,ゲストポートを以下のように設定し,適切な名前を付けて設定を保存する.  

#ref(CAOS-04-21/VM301.png,left,nowrap,80%,添付ファイルの画像)

''[実験課題3.2]'' ホストOSであるWindowsから,実験3.2で設定したWebサーバにアクセスできるかどうかを確認しなさい.ホストOSから閲覧する際は,「http://127.0.0.1/」と入力する.

- Mac利用者で、うまく "It works!" が表示されない場合 [[(こちらを参照)>CAOS-03-22-for_mac]]

''[実験3.4]'' ファイアウォール(ufw)を有効にして,外部からのすべてのネットワーク接続を遮断する.

1. /etc/default/ufw で,IPV6によるすべての通信を遮断する設定を行う.

 $ sudo vi /etc/default/ufw
 IPV6=yes を IPV6=no に修正する.

2. ファイアウォールの状態を確認する.

 $ sudo ufw status

Status: inactive  と表示される

3. ファイアウォールのサービスを開始する.

 $ sudo ufw enable

 $ sudo ufw status  を再度実行し,状態を確認する.

Status: active  に変更された

4. すべての通信を遮断する設定を行う.

 $ sudo ufw default DENY

5. ホストOSであるWindowsから,実験3.2で設定したWebサーバにアクセスできるかどうかを確認する.(アクセスできないことを確認する.)



''[実験課題3.3]'' ファイアウォール(ufw)の設定を行い,サーバへのhttp通信を許可しなさい.アクセスの許可は,「allow」コマンドを使用する.http通信はTCP 80番ポートが使われるため,外部からサーバのTCP 80番への通信を許可すればよい.~
(Macの場合,80番でうまくいかないときは,TCP 8080番をallowしてください.)

上記の設定は,コマンド「sudo ufw reload」を打つことで,設定内容を反映できる.設定が反映され,Webサーバにアクセスできるようになったことを確認する.

//Webサーバにアクセスできない場合は,教員やTAと相談して原因を特定しなさい.

** 調査課題 [#c1b5bf80]

''[調査課題3.1]'' Apache以外のサーバソフトについて調べ,Apacheも含めた特徴の比較表を作成せよ. ~

''[調査課題3.2]'' 仮想コンピュータのネットワーク接続形態にはどのようなものがあるか,また,それぞれの接続形態の特長を調べてレポートに書きなさい.
&br;

#br


//----
//
//&aname(sec4);
//
//*** 4. サーバの運用(応用課題) [#sf94fa69]
//
//''[実験4]'' 仮想コンピュータのIPアドレスを固定IPアドレスに変更し,ポートフォワーディングの設定して,電算機演習室のネットワーク(10.200.30.0)の他のコンピュータからWebサーバがアクセスできるように設定しなさい.
//
//
//1. ゲストOSのネットワーク設定をdhcpによる動的IPアドレスから固定IPアドレスに変更する.
//
//| IPアドレス:| 10.0.2.1xx (xxはコンピュータの番号)&br; (10.0.2.0/24ネットワーク内のIPアドレス)|
//| ネットマスク:| 255.255.255.0|
//| ゲートウェイ:| 10.0.2.2|
//| DNSサーバ:| 10.200.2.11|
//
//- /etc/network/interfacesを変更する.
//
// $ sudo vi /etc/network/interfaces
//
//  iface enp0s3 inet ''dhcp'' を iface enp0s3 inet ''static'' に修正する.
//
//  その後に,固定IPアドレス(address),ネットマスク,ゲートウェイ,DNSサーバの情報を追加する.
//
//2. ネットワークサービスの再起動
//
// $ sudo service networking restart
//
//3. 仮想コンピュータのネットワーク設定にあるポートフォワーディングを設定する.
//
//- プロトコル,ホストポート,ゲストIP,ゲストポートを以下のように設定し,適切な名前を付けて設定を保存する.~
//&color(red){ゲストIPは1.で設定したものを設定する.};
//
//#ref(CAOS-04-21/VM402.png,left,nowrap,80%,添付ファイルの画像)
//
//
//4. 仮想コンピュータを再起動し, apacheをサービスを起動する.
//
// $ sudo /usr/local/apache2/bin/apachectl start
//
//
//
//5. 他のPCから設定したapacheサーバに接続できるか確認する.他のPCから閲覧する際は,ホストOSのIPアドレスを指定する.
//
//[[クリックしてコンピュータ番号を確認して使用すること.>CAOS-04_PC]]
//
//&color(red){接続できない場合には,apacheサーバが起動しているか確認すること.};
//
//
//''[課題4.1]'' 「ibe-exp3」ユーザのWebページを作成し,ホストOSから閲覧できることを確認せよ.作成するWebページは,下記のような非常に単純なものでよい.
//
//ユーザのWebページは,「/home/***(ユーザ名)/public_html/」ディレクトリに,index.htmlという名前で作成する.ホストOSから閲覧する際は,//「http://10.200.30.1xx/~***(ユーザ名)」と入力する.
//
//例:
//
// <html>
//  <head><title>Test</title></head>
//  <body>
//   This is a test Web page to check if our server works.
//  </body>
// </html>
//
//作成したWebページを閲覧できない場合は,各ユーザのディレクトリ(/home/***(ユーザ名))および各ユーザのpublic_htmlディレクトリのパーミッションを確認すること.ファイルおよびディレクトリの所有者だけでなく,全てのユーザに読み込み,実行の権限が与えられる必要がある.
//
//''[課題4.2]'' 設定が終わったら,他のコンピュータから作成したWebページにアクセスできるか確認しなさい.
//
//#br
//
//[[実験内容に戻る>CAOS-04#content]]
//

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS