[2011/10/29 20:42:30]: http://www.atmarkit.co.jp/flinux/rensai/buildlamp/lamp_01/01_1.html
——————-
第1回 LAMP環境、自分で作りませんか?
株式会社イメージズ・アンド・ワーズ
代表取締役
山口晴広(やまぐち はるひろ)
2011/4/14
Webアプリケーションの開発・実行環境として多くの開発者が支持するのがLAMP(Linux、Apache、MySQL、PHP/Perl/Python)です。この連載では、LAMP環境をソースコードから構築する方法を丁寧に解説していきます。 (編集部)
第1回|次回へ→
Webアプリ開発に不可欠のLAMP
Webアプリケーション開発に欠かせないLAMP環境。皆さんはどのように用意していますか? サーバの選定からはじまって、LAMPのインストールと設定、テストや運用などなど、やるべき事はたくさんありますね。悩みやトラブルは尽きないと思います。
そこで本連載では、LAMP環境の構築という観点からLAMPを攻略していきます。とりわけ環境の基礎を作る作業である、インストールから設定を中心に取り上げます。環境構築というと一般にはインフラエンジニアの範疇になると思いますが、開発環境を構築したいWebアプリケーション開発者や、ソーシャルアプリ開発者にも役立つはずです。
LAMPといえばLinux、Apache HTTP Server(httpd)、MySQL、PHPの略ですが、このうちLinuxについて詳しく解説はしません。それだけでかなり大きなテーマになってしまいますし、サーバをレンタルすれば、Linuxをセットアップしてある状態で受け取れるので、意識する必要もあまりないからです。
パッケージインストールでいいの?
LAMPのインストールに、Linuxディストリビューションのパッケージをそのまま使っている方も多いと思います。コマンド一発でインストールできますし、他に必要なパッケージも自動的に探してインストールしてくれますから、これはとてもお手軽です(図1)。
# yum install httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: http://www.ftp.ne.jp
* base: http://www.ftp.ne.jp
* extras: http://www.ftp.ne.jp
* updates: http://www.ftp.ne.jp
Setting up Install Process
Resolving Dependencies
–> Running transaction check
—> Package httpd.x86_64 0:2.2.3-45.el5.centos set to be updated
–> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
httpd x86_64 2.2.3-45.el5.centos base 1.2 M
Transaction Summary
================================================================================
Install 1 Package(s)
Upgrade 0 Package(s)
Total download size: 1.2 M
Is this ok [y/N]:
図1 yumコマンドを使って、Apache HTTP Server(httpd)をインストールしているところ
しかしお手軽であることが、不便ではないとは言い切れないと思います。実際、筆者はLAMP環境を作るときにパッケージを利用することはありません。パッケージの方がどうしても面倒な部分を感じてしまうのです。
これはパッケージシステムが悪いということではありません。お手軽さというのは、ある側面を切り捨てているからこそ実現できています。切り捨てられた部分は管理者のコントロール外になります。細かいコントロールが求められる状況では、手軽さは邪魔にもなりえるのです。プロ用の道具がお手軽さとは無縁の存在であることにも似ていると思います。
最新バージョンを使いたいときは?
パッケージを使うことで切り捨てられるものとしては、それぞれのソフトウェアの最新バージョンを利用しにくいという点が大きいのではないでしょうか。例えばCentOS 5では、phpパッケージはバージョン5.1.6となっています(図2)。5.2系や5.3系が主流の現在では、これはかなり古いものになります。
$ yum info php
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: http://www.ftp.ne.jp
* base: http://www.ftp.ne.jp
* extras: http://www.ftp.ne.jp
* updates: http://www.ftp.ne.jp
Available Packages
Name : php
Arch : x86_64
Version : 5.1.6
Release : 27.el5_5.3
Size : 2.3 M
Repo : base
Summary : The PHP HTML-embedded scripting language. (PHP: Hypertext
: Preprocessor)
URL : http://www.php.net/
License : The PHP License v3.01
Description: PHP is an HTML-embedded scripting language. PHP attempts to make it
: easy for developers to write dynamically generated webpages. PHP
: also offers built-in database integration for several commercial
: and non-commercial database management systems, so writing a
: database-enabled webpage with PHP is fairly simple. The most common
: use of PHP coding is probably as a replacement for CGI scripts.
:
: The php package contains the module which adds support for the PHP
: language to Apache HTTP Server.
図2 yumコマンドでインストールできるphpパッケージのバージョンなどの情報を表示したところ
なぜこのように古いままかというと、ディストリビューションというものが全体として正しく動作するように考えられているためです。あるソフトウェアのバージョンを変えてしまうと、ディストリビューションのほかの部分が正しく動作しなくなる危険性があります。ディストリビューションの安定性という点からすれば、こういった方針も重要なのです。
もし、動かしたいPHPアプリケーションが5.2系や5.3系を要求するようなものであったら、CentOSのオフィシャルパッケージを使っている限りは利用不可能ということになってしまいます。最近リリースされたCentOS 5.6では、「php53」というパッケージが加わり、5.3系が使えるようにはなりました。しかし、いずれは同じような問題は起こります。パッケージシステムが抱える問題を本質的に解決できているとはいえません。
脱・パッケージ
そこで提案したいのが、「脱・パッケージ」です。前述の通り、筆者はパッケージを使わずにLAMP環境を構築しています。どうやっているかというと、単にそれぞれのソースコードを取得して、ビルドしているというだけのことです。
ビルドする方がハードルが高いという声も聞こえてきそうですね。しかし、手順や仕組みさえ理解してしまえば、パッケージを使っていて悩むよりも、よっぽど楽で便利だと感じられるはずです。バージョンの問題で悩まずに済むだけでなく、ディストリビューションごとの流儀に縛られないというメリットもあります。
OSのベース部分ではパッケージシステムのおいしいところを享受しつつ、サービスにかかわる部分は自分でビルドして自由に操る。そういったやり方を本連載では解説していきたいと思っています。
クラウド活用のススメ
Webアプリケーション開発者が直面する悩みとして、開発環境やテスト環境の準備を挙げる人は多いのではないでしょうか。開発中は手元のコンピュータで済ませるとしても、成果をチームで共有したり顧客に見せるためには、公開できるサーバを立ち上げなければなりません。
仮想化ソフトウェアを使えば、そういったサーバの取り扱いもだいぶ楽にはなりますが、インストールなどの準備はついてまわります。今は、VPSやクラウドサービスという便利なものがあるので、これを利用して楽をしましょう。OSのインストールも初期化もボタン一発です。
さらに東日本大震災以降、東京電力管内では節電への協力が求められています。いったんは終わった計画停電も、夏場に再度実施ということも考えられます。このような状況にあっては、社内にサーバを立ち上げるよりVPSやクラウドサービスを利用するのが望ましいでしょう。物理的に東京電力管外に存在するなら節電に貢献でき、突然の停電にも慌てずに済みます。
本連載では、東京電力管外にデータセンターを持つさくらインターネットのVPSサービスを利用することとしました。最小のプランなら初期費用なしで月々980円と非常に低価格で、コスト的にもかなり有利です。OSは標準で提供されるCentOS 5の64bit版とします。この環境を前提に連載を進めます。
次回は、サーバ環境の準備をはじめます。
第1回|次回へ→
仕事で使える魔法のLAMP バックナンバー連載インデックスへ≫
第1回 LAMP環境、自分で作りませんか?
第2回 サーバに接続して、一般ユーザーのアカウントを作る
第3回 アクセス制限の設定とCentOSのアップデート
第4回 sshを便利にする公開鍵暗号
第5回 公開鍵認証でsshを安全に使う
第6回 「ビルド」という作業は何を指しているのか
第7回 ダイナミックリンクとスタティックリンク
第8回 makeを使ってソフトウェアをビルドしてみよう
第9回 Makefileをいろいろ書き換えながらビルドしてみよう
第10回 ダウンロードファイルが真正なものであるかを確認
第11回 配布パッケージの中身と、configureの役目を知る
第12回 configureの設定を変更してみる
第13回 configureでソフトウェア固有の設定を変更してみる
第14回 Apache HTTP Serverのビルドを始めよう
第15回 ライブラリが足りなくてビルドできないときは?
第16回 proxyやsslのモジュールを使ってみる
第17回 OpenSSLをビルドしてApacheで利用する
第18回 Apache同梱ソフトウェアに引数を渡してビルド
第19回 認証DBにアクセスするライブラリを組み込む
第20回 サードパーティのApacheモジュールをビルドする
第21回 Apacheの設定ファイルを記述する前に
第22回 1つのサーバに複数の仮想サーバ?
第23回 設定ファイルや公開ドキュメントの配置を考える
第24回 設定ファイルを作成してApacheを動作させる
第25回 PHP編に突入! まずはソースをダウンロード
第26回 早速PHPをビルド! そしてテスト!
第27回 PHPテスト失敗の原因を追究する
第28回 エクステンションを有効にしてビルドに挑戦!