3分(?)でよく分かるDebianのディレクトリ構造

概要

Debianディレクトリ構造を公式リファレンスから、ざっくりと解説します。 この記事はRuby初心者が書いており、この記事の対象は初心者向けです。

また、フィヨルドブートキャンプのメンターのShohei Umemotoさんからのアドバイスに基づいて執筆しています。Shohei Umemotoさん、ありがとうございました!

Debianとは?

Debianの概要

Linuxディストリビューション(ハードとアプリケーションの橋渡しをするLinuxカーネルとソフトウェア群をパッケージングして利用者がインストールなどしやすくしたOS)の一つ。1993年にイアン・マードックにより創設された。ちなみに、Debianという名前は作成したイアン・マードックとガールフレンド(後の妻)の名前Debra Lynnnから名付けたらしい。かっこいい。

Debianの利点

  • OSとしての安定性があり、9,000を超えるソフトウェアパッケージが用意され、ハードウェアへの対応も迅速
  • 日本語表示に対応
  • Debianデビアン)をベースとしたディストリビューションも多数派生(Ubuntuなど)
  • 無料

Debianディレクトリ構造

ディレクトリ構造とは?

普段はあまり気にしませんが、OSはOS開発者が意図したディレクトリ構造があります。LinuxなどのOSで主なディレクトリ構造が決まっており、FHS(Filesystem Hierarchy Standard)と呼び、非営利組織Linux Foundationが保守管理しています。

なぜディレクトリ構造を気にするべきなのか?

複数人が見るような、サーバーでは、ある程度決まった場所においた方が、どこに何が置いてあるか分かりやすくなると思います。コードやログの置き場はその意図したディレクトリ構造にしたがって置きましょう。

ディレクトリ構造詳細

原文はC.2. The Directory Treeを見てください。

Directory Content
\bin 全てのユーザーが使用する実行ファイルが入る。基本的なコマンド(cat, lsなど)が入っている。
\boot 静的ファイルと起動時にロードするもファイルが入る。
\dev バイス機器の情報に関するファイルが入る。
\etc OSの設定に必要となるファイルやプログラムの設定ファイルなどが入る
\home 各ユーザーのデイレクトリが纏めらている(ホームディレクトリ)。
\lib 共有ライブラリとカーネル モジュールが入っている。
\media CD-ROMやフロッピーディスクなどの外付けメディア用のマウントポイント。
\mnt 一時的にマウントされるファイルシステムのマウントポイント。
\proc カーネル関連情報が保存されるディレクトリ。ディスク上に実際存在するのではなくメモリ上に存在するため、仮想ファイルシステムと呼ばれる。
\root ルートユーザーのホームディレクトリ。全階層の起点。
\run 現在実行されているプロセスに関する情報が入る。
\sbin OS が動作するための重要なコマンド(実行ファイル)が入っている。ここにあるコマンドはルートユーザーのみが実行できる。
\sys Linuxカーネルに関する情報(現在のカーネルデータの構造属性)が入っている。毎回再起動するたびに新しく作成される。
\tmp 一時ファイル。システムが起動するたびに中身は削除される。
\usr 全てのユーザーが使用できるアプリをインストールするディレクトリ。ユーザーコマンドやライブラリなどの読み取り専用のデータが置かれる。
\var e-mailやwebサイトなどの様々な可変なデータが入る。実行するタスクによってサイズが増減する。
\srv システムから提供されるサービス関係のデータが置かれる。
\opt RPMやdpkgといったパッケージ管理システムでプログラムをインストールする時に使用される。

以降では、特にサイトの配信時に関係する\var\srvについて説明します。

\varについて

様々な一時保存ファイルやロギングデータが保管される場所。/var/log, /var/mailなどがあるため、ロギングファイルなどはこちらで管理しましょう。

参照:Chapter 5. The /var Hierarchy

\srvについて

配信するサービスにおいて、サービス利用者が利用する読み取り専用データ、書き込み可能データ、スクリプトファイルの置き場。サイトのHTMLの置き場の/srv/physics/wwwバージョン管理システムの置き場/srv/compsci/cvsなどがある。

参照:3.17. /srv : Data for services provided by this system

サイトのスクリプトはどこに置くか?

例えばサイトのHTMLファイルを置くときは以下の候補が考えられます。

  • 特定のユーザーのみに関係する場合はユーザーのホームディレクトリ (ただし、nginxなどを利用する時に /var/cache/nginxがnginxユーザーのホームディレクトリになることもあるので注意)
  • データのディレクトリとファイル構造を公開しない場合は/var/lib
  • それ以外は、基本的に\srv

まとめ

DebianなどのLinuxでの開発では上記のディレクトリ構造を意識してファイルを置きましょう。ただし、これらは、あくまで推奨のため実際に配置する場合は、チームと相談したりやサービス利用者が利用しやすい配置を検討することをおすすめします。

参考文献