Windows,Mac OSと並ぶ主要なオペレーティングシステムの一つであるLinuxを用いて,サーバとして利用できるコンピュータを構築する.本実験では主に,Webサーバの機能を持つサーバを構築する.ディストリビューションとしてCentOS5.5を利用する.
| 1. Linuxのインストール | パーティションの設定 |
| ネットワークの設定 | |
| 各種サービス名の調査 | |
| 2. ファイル,ディレクトリ操作 | 各種コマンドの調査および練習 |
| 3. ソフトウェアのインストールおよび設定 | パッケージ管理ソフトyumの理解 |
| yumを用いたgccのインストール | |
| apacheソースコードの取得 | |
| apacheのコンパイル | |
| (selinuxの停止) | |
| iptablesの設定 | |
| 4. サーバの運用 | 一般ユーザの登録 |
| 簡単なWebページの作成 | |
| 5. (応用課題)その他のサービスの導入 | Sambaサーバ |
Linuxを操作するためのコマンドや,聞き慣れない用語が頻出するので,わからない語句は逐一調べながら実験を進めること.
Webページを参考にする際は,lsやcdなどの基本的なコマンドは,ディストリビュー ションに依存しないが,設定ファイルの保存位置や,パッケージ管理ソフトなどはディ ストリビューションやそのバージョンによって異なることに注意すること.
課題に取り組む際は,どのようなコマンドを実行したか,あるいは,どのように設定を行ったか,その結果どのような内容が表示されたかなどを記録する. このとき,写真を撮って記録をとってもよいし,scriptコマンドを用いてもよい.
実験1のインストールの際は,設定内容を変更後,確定する前に,教員やTAに確認してもらうとよい.致命的な間違いを犯しそうな場合は,助言が得られるだろう.
[実験1.1] サーバコンピュータにLinuxをインストールせよ.
コンピュータに電源を入れ,CentOSのインストールDVDをセットすると,インストーラが起動する.
基本的にはインストーラの指示に従うことで,Linuxのインストールが完了する.ただし,必ず,以下の4点の注意に従うこと.
また,下記の[課題1.1]に目を通し,適宜記録を行いながら実験を進めること.
| 注意1: 「パーティションの設定」 | |
| 前回インストールを行ったWindowsパーティションを削除せずに残し, LinuxとWindowsのデュアルブートを行えるようにすること.パーティションのレイアウトの再確認と変更にチェックを入れること | |
| 注意2: 「ネットワークの設定」 | |
| ホスト名は,「sv-**」のように設定すること.「**」の部分はグループ番号とし,グループ3の場合は,「sv-03」と設定する. | |
| IPアドレスは「10.200.60.2**」のように設定する.例えば,グループ3の場合は,「10.200.60.203」と設定する. | |
| ゲートウェイ,ブロードキャストアドレスなどはそれぞれ,右の通りである. | ゲートウェイ: 10.200.60.254 |
| ブロードキャスト:10.200.60.255 | |
| ネットマスク:255.255.255.0 | |
| DNSサーバ:10.200.2.11 | |
| 注意3: 「インストール設定」 | |
| セットアップ中に,「インストール設定」という設定項目で,「デスクトップ」「サーバ」などの項目を選択するよう指示を求められる.本実験では,「Server」のみを選択すること.また,このとき「今すぐカスタマイズ」を選択しておくこと. | |
| 注意4:「サービスの設定」 | |
| インストールするパッケージをカスタマイズする項目で,「サーバ」欄の全てのサービスのチェックを外すこと. これは,下記の実験2において,手動でサービスをインストールする実験を行うためである. | |
上記の注意事項を守らなかった場合,linuxは正常にインストールされるものの, 本実験を進めることができないため,やり直しとなる.
CDが自動的に排出され,再起動を行うよう指示を受けた時点で,実験1は終了である.
[課題1.1] インストールを行う間,何度かインストーラに指示を求められる.その際,
- 指示を求められた内容(例: 日付および時刻のセットアップを指示された.) - どのように項目を設定したか(例:Time zoneをTokyoに設定し,日付を2011年5月5日とした.) - なぜそのように設定を行ったか(例:鹿児島の地方標準時は東京と同じであるため.) - 撮影した画面の映像
をレポートに記せ.
特に,下記の設定項目に関しては,必ず『設定した内容の詳細』および『なぜそのように設定を行ったか(実験では設定しなかった方法ではどのような問題が起こるか,など)』を記すこと.
・パーティション設定 ・ネットワーク ・ブートローダ
インストール終了後,再起動を行うと「Setup agent」が起動する.本実験ではSetup agentの起動画面では「Exit」を押して終了する.
ログイン画面が表示されたら,login: プロンプトの後ろに「root」と入力し,先ほど設定した管理者パスワードを入力する.
[実験2.1]
下記の文章に目を通し,Linuxのインタフェースおよびディレクトリ構造について理解しよう. 不明な点は適宜調べること.
我々が通常使っているパーソナルコンピュータは,グラフィカルユーザインタフェース(GUI)を備えている.これに対して,サーバコンピュータでは,文字列によって情報が提示され,キーボードの入力によりコンピュータを操作するキャラクタユーザインタフェース(CUI)を用いて操作することが一般的である.
CUIは見た目が地味で,コマンドを覚える必要があるため,最初は操作が難しいと感じるかもしれない.しかし,以下に挙げるような利点も持っており,システムの運用や管理を効率的に行うことができる.
UNIXのファイルシステムは,「/」(ルート)と呼ばれるディレクトリ(= Windowsにおけるフォルダ)をもっとも上位のディレクトリとする木構造を持つ.「/」ディレクトリの下に,以下のようなディレクトリを持つ.なお,ユーザが現在作業を行っているディレクトリのことを「カレントディレクトリ」と呼ぶ.
「/」記号は,単体でルートディレクトリを意味するほか,ディレクトリの区切り記号としての意味を持つ.
「/」で始まるディレクトリ表記を「絶対パス」と呼び,「/」ディレクトリからはじまる位置をすべて明記する方法である.また,「/」以外のディレクトリ名ではじまる表記を「相対パス」と呼び,カレントディレクトリからの位置を表す.
例えば,「/bin」や「/bin/」はルートディレクトリの下にある「bin」ディレクトリを意味する. 「bin」や「bin/」は,カレントディレクトリの下にある「bin」ディレクトリを意味する.
カレントディレクトリを明示的に示すときは「.」または「./」と記述する.カレントディレクトリの1つ上のディレクトリは「..」または「../」と表される.
| ディレクトリ名 | 主な用途 |
| /bin | 基本的なコマンドが格納されている. |
| /etc | |
| /lib | 様々なプログラムで利用されるライブラリファイルが格納されている. |
| /usr | ユーザによって強要される読込専用ファイルが格納されている. |
| /var | |
| /home |
[課題2.1] 上記ディレクトリのうち,/etcディレクトリ,/varディレクトリ,/homeディレクトリの主な用途を調べよ.
[課題2.2] 下記のコマンドを実行し,その結果を確認せよ.また,コマンドの働きや引数を調べよ.
| コマンド名 | 使用例 |
| pwd | pwd |
| cd | cd / |
| cd /etc | |
| ls | ls |
| ls *.txt | |
| ls -a -l |
[実験2.2]
UNIXサーバのCUI上でよく利用されるエディタviを使用してみよう.
viは以下の3つのモードを持つ.
| モード名 | 主な用途 |
| exモード | ファイルの保存や文字列の検索を行える |
| ↑ [:]キーや[/]キーなど | ↓ [Esc]キー |
| コマンド入力モード | カーソルの移動や文字列の削除を行える |
| ↓ [i]キーや[a]キーなど | ↑ [Esc]キー |
| テキスト入力モード | 文字列の入力を行える |
起動すればすぐに文字を入力できる一般的なエディタと異なり,viは「コマンド入力モード」で起動するため,起動直後は文字を入力できない.「コマンド入力モード」で上下左右のカーソルキーや[h][j][k]][l]キーを用いてカーソルを動かし,[a]キーなどを押して「テキスト入力モード」に切り替え,文字列を入力する.
文字列の入力を終えたら[Esc]キーを押して「コマンド入力モード」に戻る.以上を繰り返すことでテキストファイルを編集する.「コマンド入力モード」で[:]キーを押すことで「exモード」に切り替え,[wq]コマンドを入力するとファイルを保存しエディタを終了する.
[課題2.3]
エディタviのコマンド方法を調べながら,ディレクトリ「/tmp/」にファイル「a.txt」を作成せよ.同様に,下記のファイル「b.txt」を作成し,「diff」コマンドによって2つのファイルの違いを調べよ.2人1組で実験を行っている場合は,1人がa.txtを作成し,もう1人がb.txtを作成する.
a.txt
This is a test file for learning how to use "vi".
b.txt
This is also a test file for learning how to use "vi".
[課題2.4] 下記のコマンドを実行し,その結果を確認せよ.また,各コマンドの働きや引数を調べよ.
| コマンド名 | 使用例 |
| cp | cp a.txt c.txt |
| cp c.txt ../ | |
| cat | cat a.txt |
| less | less a.txt |
[課題3.1] linuxがネットワークに接続できるかを確認する. ネットワークの接続を確認するために適切なコマンドを3種類以上調べ,実行せよ.接続先として,学科のWeb,メール等のサーバであるinf(inf.ibe.kagoshima-u.ac.jp,163.209.132.2)を用いること.また,学外のサーバ(任意のサーバ)に対しても接続テストを行うこと.
ネットワークの接続に失敗している場合は,設定を見直し,正常にネットワークに接続できるようにすること.
[実験3.1] CentOSでは,コンソールのメッセージの一部が日本語化されているが,デフォルトのターミナルでは日本語を正しく表示できない.このため,日本語が表示可能なターミナルの一つであるbtermをインストールする.
1. パッケージ管理ソフトyumを用いて,btermをインストールする.
# yum -y install bogl-bterm
2. Linuxのカーネルにフレームバッファ(vga16fb)のモジュールをインストールする.
# modprobe vga16fb
3. btermを実行する.
# bterm
[課題3.2] パッケージ管理ソフトyumを用いて,C/C++言語のコンパイラであるgccをインストールせよ.
[課題3.3] /tmpディレクトリに移動し,Webサーバソフトapacheを,ソースコードからインストールする.
1. apacheのWebサイトから,wgetコマンドを用いてソースコードを取得する.
# wget http://www.meisei-u.ac.jp/mirror/apache/dist/httpd/httpd-2.2.31.tar.gz
2. 取得したファイルをtarコマンドを使って解凍する.
3. configureコマンド,makeコマンドを用いて,apacheをコンパイルする.INSTALLファイルを参考にすること.
4. make installコマンドを用いて,apacheをインストールする.
5. エディタ(vi)を用いて,設定ファイル(/usr/local/apache2/conf/httpd.conf)を編集する.設定すべき箇所は下記の通り.
[httpd.confの設定変更箇所の例] ServerName sv-**.ibe.kagoshima-u.ac.jp ServerAdmin sc******@ibe.kagoshiima-u.ac.jp(実験者のメールアドレス) Include conf/extra/httpd-userdir.conf の先頭の#を削除
6. apacheをサービスとして起動する.一般的にはserviceコマンドを用いるが,本実験ではソースコードからインストールを行ったため,apachectlコマンドを用いる.
# /usr/local/apache2/bin/apachectl start
[実験3.2] 課題3.3で設定したWebサーバにアクセスできるかどうかを,ノートパソコンを使って確認せよ.Webブラウザのアドレスバーに,「http://10.200.60.2**/」と入力する(**はグループ番号).
[課題3.4] ファイアウォール(iptables)の設定を行い,サーバへのhttp通信を許可する.ファイアウォールの設定ファイルは,/etc/sysconfig/iptablesである.http通信はTCP 80番ポートが使われるため,外部からサーバのTCP 80番への通信を許可すればよい.
編集後,「service iptables restart」と打つことで,設定内容を反映できる.
[実験3.3] 課題3.3で設定したWebサーバにアクセスできるかどうかを,ノートパソコンを使って再び確認する.Webサーバにアクセスできない場合は,教員やTAと相談して原因を特定する.
[課題4.1] 実験者のユーザアカウントを作成せよ(2名で実験を行っている場合は2名分作成する).
[課題4.2] 各ユーザのWebページを作成し,クライアント(ノートパソコン)から閲覧できることを確認せよ.作成するWebページは,下記のような非常に単純なものでよい.
各ユーザのWebページは,「/home/***(ユーザ名)/public_html/」ディレクトリに,index.htmlという名前で作成する.クライアントから閲覧する際は,「http://10.200.60.2**/~***(ユーザ名)」と入力する.
例:
<html> <head>Test</head> <body> This is a test Web page to check if our server works. </body> </html>
作成したWebページを閲覧できない場合は,各ユーザのディレクトリ(/home/***(ユーザ名))および各ユーザのpublic_htmlディレクトリのパーミッションを確認すること.ファイルおよびディレクトリの所有者だけでなく,全てのユーザに読み込み,実行の権限が与えられる必要がある.
[課題5.1] Sambaやftp,ntpなど,サービスを自由にインストールせよ.パッケージ管理ソフトを用いてもよいし,ソースからインストールを行ってもよい.
・Sambaを選択し,インストールした際の注意点
ファイアウォール(iptables)の設定やSELinux環境下でのアクセス許可を行う必要がある.
アクセス許可: sambaでホームディレクトリへのアクセスを許可するために以下のコマンドを実行する.
# setsebool -P samba_enable_home_dirs on