LAMP環境
「LAMP(ランプ)環境」とは、Linuxの「L」。Webサーバを構築するApacheの「A」。
データベースを構築するMySQLの「M」。
Webでよく利用されるPHP、Perl、Pythonの「P」と、それぞれのソフトの頭文字を取ったものです。
Linuxでサーバ環境を整える際には、これらのソフトが必要になることが多いので、各ディストリビューションからLAMP環境を簡単に構築できる仕組みが提供されています。
パッケージ管理システム
Linuxでは必要なソフトを選択してインストールするのが一般的です。しかしソフトはネット上に分散して置かれ、バージョンによって整合性が異なり、インストール時にオプションを指定したりと、運用には多くの専門知識が必要になります。
そうした煩雑なインストール作業を一手に担ってくれるのが「パッケージ管理システム」です。
WindowsやMacでいう、「インストーラー、アンインストーラー」のような役割を果たします。
ソフトの依存関係について
Linuxでソフトのインストールをする際に気をつけなければいけないのが、「依存関係(dependencies)」です。依存関係とはあるソフトの動作に、別のソフトの機能が必要な関係をいいます。
そのようなソフトは単独で動作しないため、「依存関係にあるソフト」も同時にインストールする必要があります。
特定のWebサイトの閲覧には、ブラウザとプラグインが必要。という関係と同じです。
apt-get
書式:apt-get [スイッチ] [オプション] [パッケージ]
apt-getコマンドは、Debian系のディストリビューション(DebianやUbuntu)のパッケージ管理システムであるAPT(Advanced Package Tool)ライブラリを利用してパッケージを操作・管理するコマンド
スイッチ
update | APTライブラリのインデックスを更新 更新先は/etc/apt/sources.listに記述されています |
upgrade | システムにインストールされているパッケージを最新バージョンにします パッケージを新規にインストール・削除する必要がないパッケージのみが最新バージョンにアップグレードされます |
dist-upgrade | パッケージを新規にインストール・削除する必要の有無に関わらずパッケージをが最新バージョンにアップグレードします ディストリビューションのアップグレード時に利用します |
install パッケージ | 指定したパッケージをインストールします |
remove パッケージ | 指定したパッケージを削除します |
オプション
-d | パッケージのダウンロードのみを行います。展開・インストールは行いません |
-f | パッケージの依存性がおかしくなった場合、その修復を試みます |
-q | quietモードです。進捗状況を表示しません |
-u | アップデートするパッケージの一覧を表示します |
-s | インストールするパッケージの一覧を表示します |
-y | インタラクティブ(ユーザーへの問い合わせ)に「yes」と答えます |
使用例
ATPライブラリを最新版へ更新し(update)、インストールしているパッケージを最新バージョンにアップデート(upgrade)します。apt-getコマンドで最もよく利用する方法のひとつ
# apt-get update
# apt-get upgrade
dist-upgradeスイッチを使って、Debian 6.0(squeeze)から7.0(wheezy)へアップグレードします。
# apt-get dist-upgrade
APTライブラリを使って、C言語のコンパイラであるgccをインストールします。
# apt-get install gcc
便利なテキストエディタ「Emacs」もコマンド一発でインストールすることができます。
# apt-get install emacs
rpm
旧称「Red Hat Package Maneger」。名前からわかるようにRed Hat系のディストリビューションで採用されたシステムです。
rpmパッケージで提供されたソフトを、簡単な「rpmコマンド」でインストールすることができます。
他にも、アップデート、パッチの適用、wgetコマンドを利用すれば、ネット上のrpmファイルをダウンロードしてインストールすることもできます。
yum
書式:yum [オプション] [コマンド] [パッケージ]yumコマンドは、Yellow Dog Linuxのディストリビューション(CentOSやFedora)のパッケージ管理システムであるYum(Yellowdog Updater Modified)を利用してパッケージを操作・管理するコマンド
スイッチ
info パッケージ | 指定したパッケージの詳細情報を表示します |
list | インストール可能なパッケージ情報を表示します |
install パッケージ | 指定したパッケージをインストールします |
update パッケージ | 指定したパッケージをアップデートします パッケージを指定せずにコマンドを実行した場合は、インストールされている全てのパッケージがアップデートされます |
remove パッケージ | 指定したパッケージを削除します |
erase パッケージ | 指定したパッケージを削除します。removeと同義 |
search 文字列 | 指定した文字列を含むパッケージ一覧を表示します |
使用例
システムにインストールされている全てのパッケージを更新
# yum updateシステムにインストールされているパッケージを表示します。表示結果をパイプ(|)に渡して、moreコマンドを実行すると便利
# yum list installed | moreパッケージ「emacs」を検索してみる
# yum search emacsパッケージ「emacs」の詳細情報表示
# yum info emacsパッケージ「emacs」をインストール
# yum install emacs
リポジトリ
それぞれのパッケージファイルを保持しているディレクトリやサイトのこと。通常リポジトリというと外部サーバに保存されたパッケージ群を指しますが、自社サーバ内やDVDなどのメディアをリポジトリとして利用することもできます。
外部リポジトリ
リポジトリにはディストリビューションによって公式にサポートされた「公式リポジトリ」と、非公式の「外部リポジトリ」があります。通常は公式のリポジトリを利用しますが、最新のバージョンや、特殊な用途のソフトを導入するには「外部リポジトリ」が必要になります。
そのための外部リポジトリが有志により管理されています。
その中でも有名なのが 「EPELリポジトリ」 「IUSリポジトリ」 「REMIリポジトリ」 「DAGリポジトリ」などです。
これらを追加することでyumコマンドでインストールできるソフトを拡張できます。
そのため別名、「拡張パッケージ」とも呼ばれています。
外部リポジトリの追加は、良いことばかりかというと、そうでもありません。
公式のものは厳格に依存関係のチェックや、脆弱性への対応を行っています。
しかし、外部のものはyumを利用して依存関係のチェックをしても、不具合の出るものがあります。
また脆弱性が見つかった場合の対応も、公式に比べ遅れることがあります。
クライアントとサーバ
普通クライアントというと取引先を想像しますが、サーバ管理においては、クライアントは「サービスを受ける側」を指します。対してサーバは「サービスを提供する側」を指します。
「自分のパソコン」と「VPSなどで提供されたサーバ」の関係なら、「自分のパソコン」がクライアント、「VPSなどで提供されたサーバ」がサーバです。
「VPSなどで提供されたサーバ」と「サービスを利用する外部サーバ」の関係なら、「VPSなどで提供されたサーバ」がクライアントで、「サービスを利用する外部サーバ」がサーバになります。
このように相対的な関係になっているので、解説を読む時は注意してください。
ローカルとリモート
こちらも相対的な関係を示し、ローカルとはサーバやPCなどの「内部」を指し、リモートは「外部」を指します。サーバにとって「ローカル環境」とは、「サーバ内部」を指します。
反対にクライアント(自分のパソコン)側から見れば「サーバ内部」は「リモート環境」となります。
外部(遠隔地)の環境をコントロールすることを、リモートコントロールといいます。
デーモン、パッケージ
Linuxではバックグラウンドで動作しているソフトウェアのことを「デーモン(Daemon)」と呼びます。有名なhttpdやsshdの「d」はデーモンという意味です。
複数の機能を統合して1つのソフトにまとめているので、ソフトのことを代わりに「パッケージ」ということもあります。
ディレクトリとフォルダ
Linuxではフォルダのことをディレクトリと呼ぶのが一般的です。Windowsでは「スタートメニューからプログラムにある○○」もしくはパスで「C:\Program File\…」といった表現をします。
Linuxではルートディレクトリ(一番上のディレクトリ)から「/var/www/index.html」というように指定します。
これは「varディレクトリの中にあるWWWディレクトリにあるindex.htmlというファイル」という意味です。
拡張子について
Linuxではすべてのファイルがテキストベースで作られているため、決まった拡張子がありません。例えば設定ファイルの場合、ファイルのパスさえ間違えていなければ、拡張子が「txt」でも「ini」でも「cnf」でも全く同じ動作をします。
しかし無秩序に拡張子をつけると間違いの元なので、通常はWindowsやMacで使われる拡張子を付けます。
アカウントについて
Linuxではマルチユーザーを想定してシステムが構築されています。そのため、ユーザーごとの特徴を把握して、適宜切り替える必要があります。
ユーザーには以下のタイプがあります。
システム管理者
システム管理者として「root(ルート)」というユーザーが定義されています。rootユーザーのことを別名「スーパーユーザー」とも呼びます。
他にも「システム管理者」と呼ばれることもあります。
ややこしい限りですが、どの呼び方でも同じrootユーザーを示すので注意してください。
一般ユーザー、システムアカウント
システム管理者以外のユーザーを「一般ユーザー」といいます。またソフトだけが利用する専用のアカウントを「システムアカウント」といいます。
webサーバであれば「apache」、メールソフトでいえば「postfix」など。