概要
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での開発では上記のディレクトリ構造を意識してファイルを置きましょう。ただし、これらは、あくまで推奨のため実際に配置する場合は、チームと相談したりやサービス利用者が利用しやすい配置を検討することをおすすめします。
参考文献
- Debian - Wikipedia
- Debian GNU/Linux 最新情報 | OSSサポートのOpenStandia™【NRI】
- Filesystem Hierarchy Standard
- Linuxディレクトリ構造 #Linux - Qiita
- Linux のディレクトリ構造 #Linux - Qiita
- RPMやdpkgといったパッケージ管理システムでプログラムをインストールする時に 使用する
- 【初学者向け】Linuxのファイル構造についてまとめてみた #Docker - Qiita
- C.2. The Directory Tree
- Filesystem Hierarchy Standard
- Linuxにおけるホームディレクトリの説明と確認方法 | UX MILK