第 4 回 Linux におけるサーバー構築

本日の内容


このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。

4-1. Linux のパッケージ

ディストロ

Linux と呼ばれているソフトウェアの集まりには、いくつかの ディストロと呼ばれる種類があります。 これは、Linux カーネルと、さまざまなアプリケーション・ソフトウェアを インストールする仕組みと、さらに、ソフトウェアの管理などを定めていま す。

ディストロは様々ですが、現在2つの主流なものがあり、その他にもいくつ か有名なディストロがあります。

RedHat系
RHE(Red Hat Enterprise)
Fedra
CentOS
Debian系
Debian
Ubuntu
その他
Arch
SUSE

今回は CentOS を使用します。

CentOSのパッケージ管理

CentOSのパッケージ管理は yum を使います。 yum コマンドでネットワーク経由でソフトウェアをインストールできます。

近年のLinux のサービスの管理

近年、Linux のサービスの管理方法が変わり、CentOS も6 と 7 で管理方法 が異なります(Linux 標準教科書 ver.3.0.2 10.10 CentOS 7 と CentOS 6 の比較)。

サービスの管理をするコマンドは systemctl です。

サービスの状態
systemctl staus サービス名
サービスの起動
systemctl start サービス名
サービスの再起動
systemctl restart サービス名
サービスの停止
systemctl stop サービス名
サービスの常時起動
systemctl enable サービス名
サービスの常時起動の取りやめ
systemctl disable サービス名

また、Linux の各種サービスはメッセージをジャーナルログに出力しますが、 それを見るのが journalctl コマンドです。

直近のログの表示(Ctrl-Cで中止)
journalctl -f
特定のサービスのみの表示
journalctl -u サービス名

4-2. 演習

演習4-1

yum コマンドの使用法を man コマンドで確認しなさい

演習4-2

yum コマンドの使用法を Google で検索して調べ、man コマンドで調べたこ とと突き合わせなさい。

演習4-3

Webサーバのインストール

  1. sudo su -で管理者になる
  2. yum install httpdを行い、メッセージに従ってインストールする
  3. yum install telnet
  4. systemctl start httpd で起動する
  5. telnet localhost 80でインストールしたサーバに接続し、 以下を入れて応答を見る
    GET / HTTP/1.0(enter)(enter)
  6. テスト接続のためにファイアーウォールを切る
    systemctl stop iptables
    (この手法は実験的で危険な方法なので、運用で行ってはいけない)
  7. Windows などのブラウザで「http://サーバ名」を打って、アクセスできるか確かめる

なお、各手順で、状態やログを表示し、各サービスがどのような状態になっ ているか把握すること。

演習4-4

Webサーバの設定の確認

/etc/httpd フォルダ内を見て、設定項目を確認しなさい。特に Document Root がどのディレクトリになっているか調べなさい。

演習4-5

テストWebページを置く

以下のファイルを index.html という名前で Document Root に置きなさい。 そして、ブラウザで取得できるか確かめなさい。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>テストページ</title>
</head>
<body>
<h1>テストページ</h1>
<p>これはテストです。</p>
</body>
</html>

注意

演習を終える際に、以下の操作により、必ずファイアーウォールを有効にすること

systemctl start iptables

4-3. SELinux

Webサーバにファイルを置いて、ファイルの属性が -rw-r--r-- となってい ても、ブラウザからは Not Found になることがあります。 これは、外部のファイルの単純なコピーからシステムを守るSELinuxの機能 が働いているからかも知れません。

SELinux は CentOS7 でデフォルトで有効になっています。

見えるはずが見えないファイルを検査します。ls -Zコマンドを 入れると、ファイルのコンテキストが表示されます。

[root@s701 html]# ls -Z
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 a.txt
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
[root@s701 html]#

このようにWebサーバーが表示するファイルのコンテキストは httpd_sys_content_tになっている必要があります。 これが、user_home_t など別のコンテキストになっていると、Webサーバは アクセスできず、エラーで落ちます。 なお、エラーは/var/log/httpd/error_log に次のように記述されます。

この状態を解消したいときは restorecon ファイル名を入れる と本来あるべきコンテキストに修正されます。

なお、任意のコンテキストに修正するには chcon コマンドを使 います。 また、コンテキストの定義は /etc/selinux/context/ フォルダにあります。 自らサービスを構築する場合はコンテキストも設計する必要があります。


坂本直志 <[email protected]>
東京電機大学工学部情報通信工学科