第1回ではシステム管理者がどのようなものかをざっくりとお話ししました。今回からシステム管理者が実際にどのようにシステムを管理していくかをラズベリーパイを使って操作をしながら学んでいきます。
そもそも「なぜ」システム管理が必要か?
サーバーOSとして利用されているLinuxは、ネットワークが構築された様々な場所で利用されています。学校や職場、インターネット上の一般向けサービスなど「システム」が構築され提供されるサービスを利用する場合には様々なトラブルなども発生します。利用者はコンピュータが不得意な人も沢山いるため、「ログインのためのパスワードを忘れました」のような簡単なものから、コンピュータに負荷をかけてしまうような他のユーザーに迷惑をかけてしまう重大なものまでいろいろです。
また、学校や職場のシステムで利用できる機能やアプリケーションについての問い合わせや新しい機能を追加してほしいなどの要望など様々な相談も受ける事になります。そのため、管理者は導入されているシステムやコンピュータの構成などはしっかり理解しておく必要があります。
ここからは具体的に用語や実際のコマンド操作をしながら学んでいきましょう。
LinuxベースのOS「RaspberryPi OS」について
念のためOSとは?
前回から何度も「RaspberryPi OSはLinuxベースのOSです」とお伝えしてきました。念のため確認しておくと、そもそもOSとは「Operating System(オペレーティング・システム)」の略で、コンピュータを動作させるための基本的なソフトウェアの事を言います。パソコン用のOSでは、MacOSやWindows、ChromeOSなどが有名で、スマートフォン用OSとしてAndroid OSやiOSなどが知られています。OSは「コンピュータ」が搭載されている機器には必要なものですから、テレビやカーナビなどにもOSが搭載されています。今後は冷蔵庫や電子レンジなど他にもいろいろなものに搭載されてくるでしょう。
LinuxとはどんなOSか?
Linux(リナックス)もOSの1つ。最近ではMacやWindowsなどのようにデスクトップコンピュータとしても利用されるようになってきましたが、最も多く利用されているのはインターネット上や学校、企業のネットワーク上に置かれた、サービスを提供する「サーバー」としてのコンピュータです。元々米国AT&T社が1969年に開発したUnix(ユニックス)と呼ばれるのがあり、大学や企業、研究機関などで使われていましたが、これを使っていたフィンランドの大学生リーナス・トーバルズがUnixに機能不足を感じ、1991年にUnixを参考にして1から作り直してリリースしたものがLinuxです。名称はリーナス(Linus)とUnixを掛けたものになっています。
Linuxは他のOSとは生い立ちがちょっと違うものです。それはリーナスが開発したものを直ぐにオープンソースにしたために基本は「無料」で誰でも利用できるという点です。
先に述べたUnixはAT&Tが開発したものです。Windowsはその前にMS-DOSというOSをMicrosoft社が1981年にリリースしたもので、MacOSは1984年system1.0という名称でApple社リリースしたOSが起源となっています。それぞれ1企業が生み出し有償のOSとして販売されていたものです。現在では無償化へと移行していっています。
Linuxのディストリビューション
Linuxは他のOSと違いオープンソースになっています。開発者のリーナス氏が多くの人に評価してもらうために、オープンソースにすることで、開発するための協力者が世界中から沢山集まり、あっという間にサーバーOSの主役となりました。
世界中から沢山の開発者がLinuxの開発をすすめると、やがて「流派」のようなものができ、それぞれコミュニティを形成して、よりよいシステム構成や用途によって使いやすい仕組み作りを追求するようになりました。この流派をディストリビューションと言います。
ディストリビューションは大きく分けると3つに分類されます。それぞれのディストリビューションの中でも更に細かく流派が分かれていきます。
Debian(デビアン)系
Linuxの中で、フリー(無償)であることを重要視して開発をすすめているディストリビューションです。そのため多くの人々に支持されていて、Raspberry Pi OSもこのDebian系になります。Debian系には以下のようなものがあります。
ubuntuはサーバーOSとしてよく使われているLinuxOSの中でもパソコンの代わりの用途としても利用できるようにユーザーの使いやすさを追求したディストリビューションでもあります。
Red Hat(レッド・ハット)系
Linuxは基本無料という説明をしましたが、このRedHat系は商用として有償ライセンスも用意されています。オープンソースでフリーのLinuxはとても魅力的ですが、無償というのは企業が利用する場合にサポートも受けられない、保証もないなど商用利用には不安がのこります。それらを解決しているのがこのディストリビューションと言えます。RedHat系Linuxには以下のようなものがあります。
CentOSはほぼRed Hat Enterprise Linuxと同じものであるため、これの無料版と考えてよいものです。FedraはRed Hat系Linuxの中で新しい機能を真っ先に搭載してくるディストリビューションで、将来的にはRed Hat Enterpriseに実装されてくるものなど最新機能の実験場としての役割もになっているようです。
Slackware(スラックウェア)系
主な3つのディストリビューションの中で最も歴史の古いものがSlackwareです。他の2つに比べてコミュニティは小さいものの現在でも独自性を保ちながら開発が進んでいます。根強いファンも多いディストリビューション。
Puppy Linuxは元々はSlackware系としてのLinuxでしたが、現在ではDebian系と互換もあるディストリビューションもリリースされている軽量なLinuxです。Plamoは日本発のLinuxディストリビューションであるため、日本語の環境がしっかりととのっています。
Raspberry Pi OS(Raspbian)について
他にも細かく分かれたディストリビューションは沢山ありますが、大きく分けて以上の様になります。ここで利用するRaspberryPi OSはDebian系のディストリビューションであることが分かったと思います。ディストリビューションによってLinuxシステムのディレクトリ構成や設定方法、ソフトウェアのインストール方法、コマンドなどが若干変わってきますが、Linuxである事には変わりありません。違いだけ押さえておけば、他のディストリビューションもさほど苦労せずに使えるようになるでしょう。
Raspberry Pi OSは以前はRaspbian(ラズビアン)と呼ばれていましたが、2020年5月よりRaspberry Pi OSと統一されたようです。バージョンを調べたりするときには現在でもRaspbianと表示されます。
Raspberry Pi OS (Raspbian) のバージョンを調べる
Linuxも管理者によるアップデート作業などにより、OSのバージョンアップをどんどん繰り返していきます。今現在のラズベリーパイで利用しているOSのバージョンを調べるには以下のターミナルを起動して以下のコマンドを入力します。
$ lsb_release -a
この記事の執筆時点ではRaspbianのバージョン10、コードネーム「buster」である事が分かりました。歴代のバージョンなどについてより詳しく知りたい場合は以下の記事も参考にしてください。
基本コマンドでディレクトリ構成を調べる
それでは、早速Debian系LinuxであるRaspberry Pi OSのディレクトリ構成を調べていきましょう。基本コマンドを覚えながら見ていきます。
現在のディレクトリを表示「pwd」コマンド
ラズベリーパイのディレクトリ構成を見てみます。自分が現在どのディレクトリに居るかは、pwdというコマンドを打つとわかります。
$ pwd
ラズベリーパイを起動した直後であれば、piというユーザーのホームディレクトリにいるため、
/home/pi
と表示されたと思います。一番左側の「/ (スラッシュ)」がルートディレクトリ(一番最上位のディレクトリ)を示していて、その中にある「home」というディレクトリの中にある「pi」というディレクトリの中に自分がいるという表示になります。
ディレクトリを移動する「cd」コマンド
ディレクトリを移動するには「cd」コマンドで「/」を指定するとルートディレクトリに移動します。
$ cd /
これで、ルートディレクトリに移動しました。再度「pwd」コマンドを入力すると「/」と表示されるはずです。
現在のディレクトリ内のファイルやフォルダを表示「ls」コマンド
現在自分がいるディレクトリ内を表示するには、「ls」コマンドを入力しEnterします。現在は一番最上位の「/」に居ますので、その内容が表示されます。
$ ls
このようにルートディレクトリにあるディレクトリ(フォルダ)の一覧が表示されました。ラズベリーパイのファイル構成は以下のようになっていることが分かります。
よく管理するディレクトリやファイル
ディレクトリ一覧の中でもシステム管理に関わるファイルが多く存在するのが、ディレクトリ構成図の中にある「/etc」や「/var」ディレクトリです。これらディレクトリの中にテキストファイル形式で様々な設定情報が記述されていて、ここを変更したり、またはシステムの状況が記録された「ログ」などを確認することで、システムの状況やトラブルがどのように発生したかなどを解析していく事ができます。
このディレクトリ構成はLinuxディストリビューションにより若干異なるものの、あまり大きく配置が換わっていることがないため、Raspberry Pi OS で学んでも他のinuxを使う時にも役立つ知識になるでしょう。このことをFHS(Filesystem Hierarchy Standard : ファイルシステム・ヒエラルキー・スタンダード)と呼び、Linux系OSのディレクトリ構成の標準仕様を定めたものになります。これによりディストリビューションが変わってもある程度ユーザーや管理者が困惑しないようにしています。以下、
/etc ディレクトリについて
/etc ディレクトリ内には主にシステムの重要な設定ファイルが置かれています。まずはターミナルから/etcディレクトリに入ってどのようなファイルリストがあるか見てみます。
$ cd /etc
$ ls
とコマンドを入力すると以下の様に沢山のファイルが表示されていることが分かります。(ターミナルウィンドウを広げても表示しきれないくらい。)ちなみにetcとは「etcetera」の略で「その他いろいろ」みたいな意味があります。
この連載では/etcディレクトリの中でも一般的に重要なものを中心に紹介していきます。今後ラズベリーパイやLinux系のOSを操作して今回の連載で紹介していない部分についても学んでいく事になりますが、とりあえず知っておいてほしい基本的なものを紹介しておきます。
ちなみにもう気づいている人も多いと思いますが、lsコマンドで表示されたディレクトリ内のリストの中で青い文字になっているのが「ディレクトリ」で、白い文字は「ファイル」です。水色の文字は「シンボリックリンク」と呼ばれるもので、Macでは「エイリアス」、Windowsでは「ショートカット」といわれているものとほぼ一緒です。実際のファイルではないけれど、他の場所にある実際のファイルに転送してくれるものです。この場所にあった方が便利だけど、プログラムを動かす際には実際の場所からあまり動かしたくないときなどに設定しておきます。
一般的に知っておきたい主なファイルの役割を簡単に紹介しておきます。(最後に「/」がついているのはディレクトリを意味します。)
- apache2/ —— Webサーバーの設定ファイルが格納されている。
- apt/ —– aptコマンドなどでインストールしたパッケージの設定ファイルが格納されている。
- debconf.conf — debパッケージでインストールするときの初期設定ファイル。
- debian_version/ — debianディストリビューションのバージョンが分かるファイル。
- dhcpcd.conf — DHCP(動的IPアドレス)に関する設定ファイル。
- dpkg/ —— dpkgコマンドでインストールするパッケージの設定ファイルが格納されている。
- hosts —- IPアドレスとホスト名の関係を記述したファイル。
- init.d/ —- コンピュータが起動中に常に動作しているプログラムやサービスの起動スクリプトが格納されている。
- mysql/ — データベースMySQL関する設定が格納されている。
- network/ — ネットワークインターフェイスの設定ファイルが格納されている。
- rc0.d/ ~ rc6.d/ — LinuxのRUNレベル別に実行するコマンドが格納されている。
- rcS.d/ —- システム起動にすべてのRUNレベルで初期に実行されるスクリプトが格納されている。
- ssh/ — リモートでコンピュータを操作するためのsshの各種設定ファイルが格納されている。
- ssl/ — インターネット上の通信を暗号化するSSLに関する設定ファイルが格納されている。
他にもインストールされているアプリケーションの設定ファイルやディレクトリなどが沢山置かれていると思います。初期設定やアプリケーションの動作を設定する場合にそれぞれの設定ファイルを書き換えていくわけです。
続いて/varディレクトリも見ていきましょう。
/var ディレクトリについて
/varディレクトリもシステム管理の時によく使うものが沢山入っています。Linuxシステムは多くのユーザーにより利用されるため、誰がいつ何をしたのかなどの記録ファイルであるログが残されています。またシステムで何が起こっているのかなども記録されています。これらは/varディレクトリ内に残ります。varは「variable」の略で「変わりやすい」「変化する」などの意味があります。ディレクトリ内のファイルはシステムが自動的に記録をとり、データが追加されていくため、
こちらのフォルダ内も見てみましょう。cdコマンドでディレクトリ内を移動するときは「/」を先頭につけて絶対パス(ルートディレクトリからのディレクトリ構成)を指定すれば直接そのディレクトリに移動できます。
$ cd /var
$ ls
この/varディレクトリのフォルダも紹介しておきます。
- cache/ — Linux上のアプリケーションが一時的にデータを保管する場所として利用するもの
- lib/ —- アプリケーションを動作させるための情報や利用するデータリストなどが格納されている。
- log/ — システム動作、アクセスなどの履歴を記録したログなどが格納されている。
- mail/ — メールサーバーとして利用した場合送受信の記録やメールボックスが格納されている。
- www/ — ウェブサーバーとして利用した場合のhtml保存。ドキュメントルート。
などがあります。ホームページなどを公開するWEBサーバーとして利用したい場合には/var/wwwの中にホームページコンテンツを入れて公開したりします。mailサーバーとして利用する場合には/var/mail の中にユーザーのメールボックスが作られます。ラズベリーパイでも、プロバイダなどが運営している仕組みがそのままわかるようになります。
ログを閲覧時によく使う「tail」コマンド
/var ディレクトリの中にある「log」ディレクトリにはシステムのログが記録されています。システムが動作しているとこのログはどんどんたまっていくため、/var/log ディレクトリの容量はどんどん増えていきます。
ここで、logディレクトリに移動して、ログファイルを見ていきましょう。システムで何が起こったかはこのログファイルに記録されます。
$ cd /var/log
$ ls
これで、以下の画面のようにlogディレクトリ内にあるログが表示されました。赤文字になっているのは圧縮されたファイルで、ログがたまってくると自動的に過去ログを圧縮して保管しています。システムに問題がなければ、この圧縮されたファイルは削除しても問題ありません。容量が足りなくなってきたときなどはこのログを整理したりします。
では、ここで「tail」コマンドを使って実際のログを見てみましょう。syslogというログファイルがあるので、これを見てみます。このコマンドはファイルの末尾10行を表示するというコマンドです。ログファイルはコンピュータ内で起こったことを逐次記録していく為、非常に長い行数のファイルになるため、表示させるのにも時間がかかってしまいます。
$ tail syslog
これでsyslogファイル内の直近10件の動作が確認できました。
tailコマンドは「-f」というオプションをつけると、なにかシステムに新しい動きがあり、ログに記述が足された時には、自動的に表示も追加されるため、リアルタイムのログ監視にも役立ちます。
$ tail -f syslog
まとめ
今回はシステム管理者がシステム内のどの部分を管理していくかを知るために、Linuxのファイル構成やディストリビューションなどの知識を学びました。システム管理はコンピュータ内のあらゆる場所を管理していくわけですが、/etc や/varディレクトリは特に目にすることが多くなります。次回以降はこの/etc /varの中のファイルを見ながらどのような設定があって、どのように運用していくのかなどを学びます。
第3回は「/etc /var の中にあるファイルの中身を見て行こう!」です。