#author("2023-06-19T13:22:28+09:00","default:Exp3","Exp3") #author("2023-06-19T16:37:02+09:00","default:Exp3","Exp3") [[計算機アーキテクチャとOS>工学実験IIIテーマA(2022)]] * サーバコンピュータとしてのセットアップ (CentOS) [#ve85bdec] ** 概要 [#i99fef63] Windows,Mac OSと並ぶ主要なオペレーティングシステムの一つであるLinuxを用いて,サーバとして利用できるコンピュータを構築する.本実験では主に,Webサーバの機能を持つサーバを構築する.ディストリビューションとしてCentOS7を利用する. ** 実験内容 [#e5dac883] |0. [[VirtualBoxのインストール>#sec0]]|ダウンロードとインストール| |1. [[Linuxのインストール>#sec1]]|ネットワークの設定| |~|インストール設定| |2. [[ファイル,ディレクトリ操作>#sec2]]|各種コマンドの調査および練習| |3. [[ネットワークの設定と確認>#sec3]]|設定ファイルの変更| |~|サービスの再起動| |4. [[ソフトウェアのインストールおよび設定>#sec4]]|パッケージ管理ソフトyumの理解| |~|yumを用いたgccのインストール| |~|wgetのインストール| |~|apacheソースコードの取得| |~|apacheのコンパイル| |~|firewallの設定| |5. [[サーバの運用>#sec5]]|一般ユーザの登録| |~|簡単なWebページの作成| ** 注意事項 [#k9fe1084] Linuxを操作するためのコマンドや,聞き慣れない用語が頻出するので,~ わからない語句は逐一調べながら実験を進めてください. Webページを参考にする際は,ls や cd などの基本的なコマンドは,ディストリビューションに 依存しませんが,設定ファイルの保存位置や,パッケージ管理ソフトなどはディ ストリ ビューションやそのバージョンによって異なることに注意しましょう. 課題に取り組む際は,&color(red){どのようなコマンドを実行したか,あるいは,どのように設定を行ったか,その結果どのような内容が表示されたかなどを記録};する. また,このとき,&color(red){画面をキャプチャして(または写真を撮って)記録を取っておき};レポートに貼り付けるなどして利用すること. ** 実験手順および課題 [#z7d44166] &aname(sec0); *** 0.VirtualBoxのインストール [#fa303846] VirtualBoxのダウンロードサイト[ [[ダウンロード:https://www.virtualbox.org/wiki/Downloads]] ]から自分のパソコンのOS(Windows or Mac or Linux)にあったVirtualBoxをダウンロードしてインストールする. - インストールが終わったら,デスクトップにある「Oracle VM VirtualBox」のアイコンをクリックして起動する. -「新規」を選択して,新しい仮想マシンウィザードを起動する. --&color(red){適宜画面をキャプチャするなど記録を行いながら実験を進めること.}; &ref(sec0.png,right,50%); -「エキスパートモード」で設定を行う.~ &ref(sec0-0.png,right,nowrap,60%); |>|BGCOLOR(LIGHTGRAY):''1: 「名前とオペレーティングシステム」''| |「名前」に「CentOS7_Minimal」と入力する.&br;タイプは「Linux」,バージョンは,「Red Hat(64-bit)」が選択されていることを確認すること.|#ref(sec0-1.png,left,nowrap,40%)| |>|BGCOLOR(LIGHTGRAY):''2: 「ハードウェア」''| |「メインメモリー」を1024 MBに設定する.|#ref(sec0-2.png,left,nowrap,40%)| |>|BGCOLOR(LIGHTGRAY):''3: 「ハードディスク」''| |「仮想ハードディスクを作成する」を選択する.&br;仮想ハードディスクのサイズを8.00 GBに設定する.&br;「VDI (VirtualBox Disk Image)」を選択する.|#ref(sec0-3.png,left,nowrap,40%)| 上記の注意事項を守らなかった場合,仮想コンピュータは作成されるものの, この後の実験を進めることができないため,やり直しとなる場合がある. Oracle VM VirtualBoxのウィンドウの左上に"CentOS7_Minimal"が表示されたら実験0は終了である.~ &ref(sec0-N.png,right,50%); #clear &aname(sec1); *** 1.Linuxのインストール [#i7c98159] ''[実験1.1]'' サーバコンピュータにCentOS 7をインストールせよ. - [[CentOS-7-x86_64-Minimal-2009.iso:http://ftp.iij.ad.jp/pub/linux/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso]]をダウンロードしておく.(サイズ:1GB) -- このファイルは,OSインストール用のDiskに当たるイメージファイルである. - Oracle VM VirtualBoxを起動し,左側で"CentOS7_minimal"を選択しておき,上部にある「設定」ボタンをクリックする. -- 左側で"ストレージ"を選択する. --- コントローラー:IDE―空を選択し,右側のディスクの絵のボタンを押し,仮想光学ドライブを選択する. --- 光学ディスク選択画面で「追加」ボタンをクリックし、CentOS-7-x86_64-Minimal-2009.iso を選ぶ. #ref(sec1-1.png,left,nowrap,50%) - イメージファイルの設定終了後,左側で"CentOS7_minimal"を選択しておき,上部にある「起動」ボタンをクリックする. -- 起動するとCentOS 7 をインストールするかどうかのメニューなるので,"Install CentOS 7" を選択し,Enterキーを押す. &ref(http://www.ibe.kagoshima-u.ac.jp/static/www1/edu/expIII/themeA/img/expIII-A3-10.png); - インストールが始まる. - ウィンドウの切り換え -- Windows (ホストOS)と仮想コンピュータの制御の切り換えは,以下のようにする. --- 仮想コンピュータのウィンドウをクリックすると制御(カーソル)がVirtualBox(仮想コンピュータ)側へ切り替わる. --- 右Ctrlキーを押すと制御(カーソル)がWindows側へ切り替わる. - 言語の選択 -- 左下の検索ボックスに"j"を入力 -- 左側で"日本語 Japanese"を選択 -- 右側で"日本語(日本)"を選択 -- 右上のキーボードは、usのままでよい -- 右下の「続行」ボタンをクリックする. &ref(http://www.ibe.kagoshima-u.ac.jp/static/www1/edu/expIII/themeA/img/expIII-A3-18.png); - ネットワークとホスト名 -- 左下のホスト名に"expIII-A3"と入力し,適用をクリック -- 右上のスイッチをスライドさせ,"オン"にする -- 左上の「完了」をクリックする. &ref(http://www.ibe.kagoshima-u.ac.jp/static/www1/edu/expIII/themeA/img/expIII-A3-15.png); - インストール先 -- VirtualBoxの設定の際に設定しておいた仮想HDDを選択する -- 左上の「完了」をクリックする. &ref(sec1-2.png); - 「インストールの開始」ボタンを押す &ref(http://www.ibe.kagoshima-u.ac.jp/static/www1/edu/expIII/themeA/img/expIII-A3-20.png); -- インストールにはしばらく時間が掛かる -- その間,ROOTのパスワードを設定しておく -- インストールが終了すると右下に「再起動」ボタンが表示されるのでクリックする. &ref(http://www.ibe.kagoshima-u.ac.jp/static/www1/edu/expIII/themeA/img/expIII-A3-21.png); - ログイン -- 再起動すると以下の画面が表示される. -- login: でユーザID、root を入力する. -- Password: には、ROOTのパスワードで設定したパスワードを入力する. -- うまくログイン出来ると,# のプロンプトが表示される. &ref(http://www.ibe.kagoshima-u.ac.jp/static/www1/edu/expIII/themeA/img/expIII-A3-26.png); &aname(sec2); *** 2. 各種コマンドの調査および練習 [#wc6049e1] ''[実験2.1]'' 下記の文章に目を通し,Linuxのインタフェースおよびディレクトリ構造について理解しよう. 不明な点は適宜調べること. 我々が通常使っているパーソナルコンピュータは,グラフィカルユーザインタフェース(GUI)を備えている.これに対して,サーバコンピュータでは,文字列によって情報が提示され,キーボードの入力によりコンピュータを操作するキャラクタユーザインタフェース(CUI)を用いて操作することが一般的である. CUIは見た目が地味で,コマンドを覚える必要があるため,最初は操作が難しいと感じるかもしれない.しかし,以下に挙げるような利点も持っており,システムの運用や管理を効率的に行うことができる. - 作業効率が高い(UNIXの設定はほぼ全てテキストファイルに記されているため). - 作業の記録が容易である(例: scriptコマンド,リダイレクト「>」,「<」). - 便利なコマンドが多く,コマンドの組み合わせが可能である(例: パイプ「|」). - 余計なモジュールを含まないため,比較的安全である. UNIXのファイルシステムは,「/」(ルート)と呼ばれるディレクトリ(= Windowsにおけるフォルダ)をもっとも上位のディレクトリとする木構造を持つ.「/」ディレクトリの下に,以下のようなディレクトリを持つ.なお,ユーザが現在作業を行っているディレクトリのことを「カレントディレクトリ」と呼ぶ. 「/」記号は,単体でルートディレクトリを意味するほか,ディレクトリの区切り記号としての意味を持つ. 「/」で始まるディレクトリ表記を「絶対パス」と呼び,「/」ディレクトリからはじまる位置をすべて明記する方法である.また,「/」以外のディレクトリ名ではじまる表記を「相対パス」と呼び,カレントディレクトリからの位置を表す. 例えば,「/bin」や「/bin/」はルートディレクトリの下にある「bin」ディレクトリを意味する. 「bin」や「bin/」は,カレントディレクトリの下にある「bin」ディレクトリを意味する. カレントディレクトリを明示的に示すときは「.」または「./」と記述する.カレントディレクトリの1つ上のディレクトリは「..」または「../」と表される. ''[実験課題2.1]'' 下記のコマンドを実行し,その結果を確認せよ.また,コマンドの働きや引数を調べよ. |コマンド名|使用例| |pwd|pwd | |cd|cd /| |~|cd /etc| |ls|ls| |~|ls *.conf| |~|ls -a -l| &aname(vi_sec); ''[実験2.2]'' UNIXサーバのCUI上でよく利用されるエディタviを使用してみよう. viは以下の3つのモードを持つ. |モード名|主な用途|h |''exモード''|ファイルの保存や文字列の検索を行える| | ↑ [:]キーや[/]キーなど| ↓ [Esc]キー| |''コマンド入力モード''|カーソルの移動や文字列の削除を行える| | ↓ [i]キーや[a]キーなど| ↑ [Esc]キー| |''テキスト入力モード''|文字列の入力を行える| 起動すればすぐに文字を入力できる一般的なエディタと異なり,viは「コマンド入力モード」で起動するため,起動直後は文字を入力できない.「コマンド入力モード」で上下左右のカーソルキーや[h][j][k]][l]キーを用いてカーソルを動かし,[a]キーなどを押して「テキスト入力モード」に切り替え,文字列を入力する. 文字列の入力を終えたら[Esc]キーを押して「コマンド入力モード」に戻る.以上を繰り返すことでテキストファイルを編集する.「コマンド入力モード」で[:]キーを押すことで「exモード」に切り替え,[wq]コマンドを入力するとファイルを保存しエディタを終了する. ''[実験課題2.2]'' エディタviのコマンド方法を調べながら,ディレクトリ「/tmp/」にファイル「a.txt」を作成せよ.同様に,下記のファイル「b.txt」を作成し,「diff」コマンドによって2つのファイルの違いを調べよ. 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.3]'' 下記のコマンドを実行し,その結果を確認せよ.また,各コマンドの働きや引数を調べよ. |コマンド名|使用例| |cp|cp a.txt c.txt| |~|cp c.txt ../| |cat|cat a.txt| |less|less a.txt| &aname(sec3); *** 3. ネットワークの設定と確認 [#ka562785] ''[実験3.1]'' ネットワークの設定を行う. 1. /etc/sysconfig/network-scripts/に移動する. # cd /etc/sysconfig/network-scripts/ 2. 設定ファイル ifcfg-enp0s3 を編集し,ONBOOT=yesに変更する.(s3は異なる数字かもしれない) # vi ifcfg-enp0s3 3. ネットワークサービスの再起動 # systemctl restart NetworkManager # systemctl restart network ''[実験3.2]'' ネットワークに接続できるかを確認する. 1. 制御をWindows側にしておく. 2. コマンドプロンプトを起動し,ipconfig というコマンドを打ち込んでEnterを押す. 3. IPv4アドレスで自分のPCのIPアドレスを確認しておく. 4. 制御をVirtualBox側へ移し,ping コマンドを実行する. -- 例 # ping 192.168.0.5 (調べたIPアドレスが、192.168.0.5 だったとき) 5. うまく接続できていると,つぎのように接続までの時間が表示される. -- 停止させるには,ctrl + c キーを押す. 64 byte form 192.168.0.5: icmp_seq1=1 ttl=127 time=4.57 ms 64 byte form 192.168.0.5: icmp_seq1=2 ttl=127 time=2.18 ms ネットワークの接続に失敗している場合は,設定を見直してみよう. ''[実験課題3.1]'' - CentOS側で,自マシンのIPアドレスを調べるコマンドはCentOS7 以前は,ifconfig であった. - CentOS7では,ifconfig は非推奨となっている.どのようなコマンドに変更になったかを調べ,そのコマンドを実行した結果を示せ. &aname(sec4); *** 4. サーバソフトApacheのインストールおよび設定 [#d5af4ff8] ''[実験4.1]'' パッケージ管理ソフトyumを用いて,C/C++言語のコンパイラであるgcc、および、Apache 2.4をインストールするために必要なパッケージをインストールする. # yum -y install gcc make pcre pcre-devel expat-devel wget ''[実験4.2]'' /tmpディレクトリに移動し,Webサーバソフトapacheを,ソースコードからインストールする.apacheはWebサービスを提供するためのソフトウェアである. 1. apache2.4ではAPR(Apache Portable Runtime)のインストールが必要である.wgetコマンドで,apr, apr-util のソースコードをミラーサイトからダウンロードする. # cd /tmp # wget https://ftp.jaist.ac.jp/pub/apache/apr/apr-1.7.4.tar.gz # wget https://ftp.jaist.ac.jp/pub/apache/apr/apr-util-1.6.3.tar.gz # wget --no-check-certificate https://ftp.jaist.ac.jp/pub/apache/apr/apr-1.7.4.tar.gz # wget --no-check-certificate https://ftp.jaist.ac.jp/pub/apache/apr/apr-util-1.6.3.tar.gz 2. 同様に,apache のソースコードもダウンロードする. (説明動画では、旧バージョンのhttpd-2.4.43になっていますが、最新版は httpd-2.4.57 です) # wget https://ftp.jaist.ac.jp/pub/apache/httpd/httpd-2.4.57.tar.gz # wget --no-check-certificate https://ftp.jaist.ac.jp/pub/apache/httpd/httpd-2.4.57.tar.gz 3. 取得した3つのファイルをtarコマンドを使って解凍する. 4. lsコマンドで,apr-1.7.4 と apr-util-1.6.3の2つのディレクトリが存在することを確認した後,ディレクトリ名をそれぞれ apr と apr-util に変更して httpd-2.4.57/srclib/に保存する.(以下のコマンドを実行する) # mv apr-1.7.4 httpd-2.4.57/srclib/apr # mv apr-util-1.6.3 httpd-2.4.57/srclib/apr-util 5. httpd-2.4.57 へ移動する. 6. configureコマンドを実行し,Makefileの作成を行う.~ &color(red){configureコマンドは、APRを有効にするため --with-included-apr オプションを付与する.}; #./configure --with-included-apr 7. makeコマンドを実行することで,Makefileを読み込みながらapacheをコンパイルする. 8. make installコマンドを用いて,apacheをインストールする. 9. エディタ(vi)を用いて,設定ファイル(/usr/local/apache2/conf/httpd.conf)を編集する.設定すべき箇所は下記の通り.ただし,編集する前にhttpd.confをhttpd_bk.confというファイル名でコピーしておく. [httpd.confの設定変更箇所の例] ① LoadModule userdir_module modules/mod_userdir.so の先頭の#を削除 ② ServerName sv-**.ibe.kagoshima-u.ac.jp ③ ServerAdmin sc******@ibe.kagoshiima-u.ac.jp(実験者のメールアドレス) ④ Include conf/extra/httpd-userdir.conf の先頭の#を削除 10. 編集後、httpd.confとhttpd_bk.confのdiffを取り,上記4箇所が変更されているかどうかを確認する. 11. apacheをサービスとして起動する.一般的にはsystemctlコマンドを用いるが,本実験ではソースコードからインストールを行ったため,apachectlコマンドを用いる. # /usr/local/apache2/bin/apachectl start ''[実験課題4.1]'' 実験4.2で設定したWebサーバにアクセスできるかどうかを,Windows側のブラウザを使って確認せよ.Webブラウザのアドレスバーに,「http://localhost/」と入力する.&color(red){うまく接続できない};ことを確認する. ''[実験4.3]'' ポートフォワーディングとファイアウォールの設定を行い,サーバへのhttp通信を許可する. ***1 ポートフォワーディングの設定 [#v583bd4e] ポートフォワーディングの設定して,ホストOSからゲストOS上で稼働するWebサーバにアクセスできるようにする。 1.1 メニューの「仮想マシン」から「ACPIシャットダウン」を選択し、一旦、終了させる。 1.2 VirtualBoxの「設定」をクリックする。 1.3 仮想コンピュータの「ネットワーク」設定にあるポートフォワーディングを設定する。(「Advanced」を押して、つぎに「ポートフォワーディング」をクリックする) &ref(http://www.ibe.kagoshima-u.ac.jp/static/www1/edu/expIII/themeA/img/expIII-A3-49.png); 1.4 右の「+」ボタンを押して、以下のように設定する。 &ref(http://www.ibe.kagoshima-u.ac.jp/static/www1/edu/expIII/themeA/img/expIII-A3-50.png); 1.5 設定後、CentOS7_minimalを起動する。 1.6 ログイン後、apachectlコマンドを実行しておく。 # /usr/local/apache2/bin/apachectl start ***2 ファイアウォールの設定 [#p01a6e14] 2.1 publicのサービスの確認 # firewall-cmd --list-service --zone=public 2.2 サービスを追加する # firewall-cmd --add-service=http --zone=public ''[実験課題4.2]'' Webサーバにアクセスできるかどうかを,再度,Windows側のブラウザで確認する. うまくできていれば、つぎのように“It works!”と表示される。 ~ - Mac利用者で、うまく "It works!" が表示されない場合 [[(こちらを参照)>CAOS-03-22-for_mac]] &ref(http://www.ibe.kagoshima-u.ac.jp/static/www1/edu/expIII/themeA/img/expIII-A3-51.png); &aname(sec5); *** 5. サーバの運用 [#f53cee44] ''[課題5.1]'' 実験者のユーザアカウントを作成せよ.ユーザアカウント作成に必要なコマンドは調べる. ''[課題5.2]'' ユーザのWebページを作成し,クライアント(ノートパソコン)から閲覧できることを確認せよ.作成するWebページは,下記のような非常に単純なものでよい. ユーザのWebページは,「/home/***(ユーザ名)/public_html/」ディレクトリに,index.htmlという名前で作成する.Windowsのブラウザから閲覧する際は,「http://localhost/~***(ユーザ名)」と入力する. 例: <html> <head><title>Test</title></head> <body> This is a test Web page to check if our server works. </body> </html> &color(red,){作成したWebページを閲覧できない場合は,各ユーザのディレクトリ(/home/***(ユーザ名))のパーミッションを確認すること.}; - パーミッションを変更するコマンドを調べ実行し,以下に示すように変更する. &ref(http://www.ibe.kagoshima-u.ac.jp/static/www1/edu/expIII/themeA/img/expIII-A3-35.png,right,35%); - うまく表示出来ると,以下のようになる. &ref(http://www.ibe.kagoshima-u.ac.jp/static/www1/edu/expIII/themeA/img/expIII-A3-48.png,right,35%); ** 調査課題 [#lba47661] - 調査課題は、ネットや書籍などを利用して自身で調べてみよう。参考文献や参考サイトがあればそれも示すこと。ただし、そのままコピペしないこと。 -【調査課題1】 -- Linuxのファイル構造は、ディレクトリと呼ばれる階層構造をしている。ディレクトリ構造について調べよ。 -【調査課題2】 -- Linuxの代表的なディレクトリに、つぎの表に示されたディレクトリがある。それぞれのディレクトリの主な用途を調べ、表を埋めよ。 |ディレクトリ名|主な用途|h |/bin|| |/etc|| |/lib|| |/usr|| |/var|| |/home|| -【調査課題3】 -- ネットワーク接続を確認するコマンドに,ifconfig, route, netstat というコマンドがあった.CentOS7では,これらのコマンドが非推奨となり,別のコマンドに変更になっている.どのようなコマンドに変わったのか調べよ.また,それぞれどのような情報を得るためのコマンドなのか調べよ.