LAMP環境、自分で作りませんか?:仕事で使える魔法のLAMP(1)
Webアプリケーションの開発・実行環境として多くの開発者が支持するのがLAMP(Linux、Apache、MySQL、PHP/Perl/Python)です。この連載では、LAMP環境をソースコードから構築する方法を丁寧に解説していきます。(編集部)
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: www.ftp.ne.jp * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: 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]:
しかしお手軽であることが、不便ではないとは言い切れないと思います。実際、筆者は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: www.ftp.ne.jp * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: 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.
なぜこのように古いままかというと、ディストリビューションというものが全体として正しく動作するように考えられているためです。あるソフトウェアのバージョンを変えてしまうと、ディストリビューションのほかの部分が正しく動作しなくなる危険性があります。ディストリビューションの安定性という点からすれば、こういった方針も重要なのです。
もし、動かしたいPHPアプリケーションが5.2系や5.3系を要求するようなものであったら、CentOSのオフィシャルパッケージを使っている限りは利用不可能ということになってしまいます。最近リリースされたCentOS 5.6では、「php53」というパッケージが加わり、5.3系が使えるようにはなりました。しかし、いずれは同じような問題は起こります。パッケージシステムが抱える問題を本質的に解決できているとはいえません。
脱・パッケージ
そこで提案したいのが、「脱・パッケージ」です。前述の通り、筆者はパッケージを使わずにLAMP環境を構築しています。どうやっているかというと、単にそれぞれのソースコードを取得して、ビルドしているというだけのことです。
ビルドする方がハードルが高いという声も聞こえてきそうですね。しかし、手順や仕組みさえ理解してしまえば、パッケージを使っていて悩むよりも、よっぽど楽で便利だと感じられるはずです。バージョンの問題で悩まずに済むだけでなく、ディストリビューションごとの流儀に縛られないというメリットもあります。
OSのベース部分ではパッケージシステムのおいしいところを享受しつつ、サービスにかかわる部分は自分でビルドして自由に操る。そういったやり方を本連載では解説していきたいと思っています。
クラウド活用のススメ
Webアプリケーション開発者が直面する悩みとして、開発環境やテスト環境の準備を挙げる人は多いのではないでしょうか。開発中は手元のコンピュータで済ませるとしても、成果をチームで共有したり顧客に見せるためには、公開できるサーバを立ち上げなければなりません。
仮想化ソフトウェアを使えば、そういったサーバの取り扱いもだいぶ楽にはなりますが、インストールなどの準備はついてまわります。今は、VPSやクラウドサービスという便利なものがあるので、これを利用して楽をしましょう。OSのインストールも初期化もボタン一発です。
さらに東日本大震災以降、東京電力管内では節電への協力が求められています。いったんは終わった計画停電も、夏場に再度実施ということも考えられます。このような状況にあっては、社内にサーバを立ち上げるよりVPSやクラウドサービスを利用するのが望ましいでしょう。物理的に東京電力管外に存在するなら節電に貢献でき、突然の停電にも慌てずに済みます。
本連載では、東京電力管外にデータセンターを持つさくらインターネットのVPSサービスを利用することとしました。最小のプランなら初期費用なしで月々980円と非常に低価格で、コスト的にもかなり有利です。OSは標準で提供されるCentOS 5の64bit版とします。この環境を前提に連載を進めます。
次回は、サーバ環境の準備をはじめます。
- CMakeでMySQLをビルドしてみる
- MySQLのビルドに欠かせないCMakeを準備する
- いよいよMySQL編、ソースからビルドすべきか?
- PHPでセッションを利用するための設定
- クライアントがアクセスできる範囲を制限する
- エラーメッセージをどう扱うか?
- ファイルのアップロードを制限する
- リクエストデータを受け取る変数の扱い
- マジッククオート機能には頼らない
- 安全を考えてPHPの実行時設定を調整する
- Apacheの設定ファイルでPHPの設定を変える
- PHPの設定ファイルを作って配置してみる
- PHPスクリプトを実行できるようにする準備
- PHPエクステンション組み込みの仕上げ
- 単純なデータを管理するDBMを使えるようにする
- エクステンションの組み込み状況を確認する
- PHPでデータベースを使う準備をする
- XMLを処理できるようにする
- エクステンションを有効にしてビルドに挑戦!
- PHPテスト失敗の原因を追究する
- 早速PHPをビルド! そしてテスト!
- PHP編に突入! まずはソースをダウンロード
- 設定ファイルを作成してApacheを動作させる
- 設定ファイルや公開ドキュメントの配置を考える
- 1つのサーバに複数の仮想サーバ?
- Apacheの設定ファイルを記述する前に
- サードパーティのApacheモジュールをビルドする
- 認証DBにアクセスするライブラリを組み込む
- Apache同梱ソフトウェアに引数を渡してビルド
- OpenSSLをビルドしてApacheで利用する
- proxyやsslのモジュールを使ってみる
- ライブラリが足りなくてビルドできないときは?
- Apache HTTP Serverのビルドを始めよう
- configureでソフトウェア固有の設定を変更してみる
- configureの設定を変更してみる
- 配布パッケージの中身と、configureの役目を知る
- ダウンロードファイルが真正なものであるかを確認
- Makefileをいろいろ書き換えながらビルドしてみよう
- makeを使ってソフトウェアをビルドしてみよう
- ダイナミックリンクとスタティックリンク
- 「ビルド」という作業は何を指しているのか
- 公開鍵認証でsshを安全に使う
- sshを便利にする公開鍵暗号
- アクセス制限の設定とCentOSのアップデート
- サーバに接続して、一般ユーザーのアカウントを作る
- LAMP環境、自分で作りませんか?
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 英語管理画面でムリしてる人が知らないと損する:無料で始めるクラウドLAMP構築超入門
意外と知られていないがWindows AzureはLinuxでIaaSとしても使える。Ubuntu ServerとApache、PHP、MySQL、phpMyAdmin環境を構築してみた。