最近、サーバーに関連することを色々試しているので、少しまとめておきたいと思います。

LAMP(ランプ)とは、OSとしてLinuxを、WebサーバーとしてApache HTTP Serverを、データベースサーバーとしてMySQLを、スクリプト言語としてPerl、PHPなどを用いたシステムの総称です。

WordPressなどのCMS(Contents Management System)を使う場合は、それぞれのユーザやデータベースの作成以外にMySQLやPerlやPHPをほとんど意識することはないかも知れません("具体的なテーブルの作成やコーディングなどをしなくてもいい"という意味)が、自分で必要な機能に絞ったシステムを作りたいというときには、MySQLやPerlやPHPの知識も必須となります。

php-mysql
【MySQLとPHPの連携イメージ】
使用したデータは単なる都道府県の人口とその順位ですが、MySQLのデータベースに47都道府県のデータを登録し、1列目に1位〜20位の、2列目に21位〜40位の、3列目に41位〜47位のデータを、PHPを使ってSQL文で呼び出しています。一見すると簡単にできそうですが、設定せずに普通に実行すると、文字化けしたりしてなかなかうまくいきません。詳細は次回にまとめます。


LAMPサーバーの導入

まずLAMPのL、つまりLinuxですが、今回は情報として新しい方がよいと思いまして、Ubuntu 12.04LTSの開発版を使いました。次に、LAMPのA、つまりApacheですが、12.04のデフォルトのApache2を用います。単純なWEBサーバーの導入であれば、「apache2」というパッケージをインストールするだけで十分ですが、LAMPの残りのM(MySQL)やP(PHP)との連携を考え、taskselで一括導入します。

taskselはデフォルトでは入っていないので、まずこれをインストールしておきます。
$ sudo apt-get install tasksel
インストールしたら、taskselを実行します。
$ sudo tasksel
あとは次のように設定してLAMPサーバーを導入します。
LAMP-1
カーソルキーで「LAMPサーバー」を選択し、スペースキーを押します。すると、*印が加わりますので、Tabキーを押し「了解」の部分が赤くなったらEnterキーを押します。他にもいろいろなパッケージが用意されていることがわかるでしょう。


LAMP-2
続いて、MySQLのrootパスワードの設定を行います。以前に何度も触れていますが、ここで設定するパスワードはOS全体のものとは異なり、MySQL独自のrootパスワードです。


LAMP-3
確認のため、もう一度入力します。「了解」に移動するにはTabキーを使います。
大事なことなので2回言いました(笑



インストールが終了すれば、すでにWEBサーバーが起動しているはずです。ただし、ルータ側ではポート(80番ポート)が解放されていないので、外部からアクセスできる形にはなっていません。ローカルネットワーク内なら、ブラウザで「http://ローカルIPアドレス」(例:http://192.168.0.2)にアクセスすれば、次のような画面が表示されるはずです。

LAMP-4
【WEBサーバーの初期画面】
サーバーが起動しているPC上であれば、「http://localhost」で接続できます。テストを行うには、もう1台クライアント用のPC(あるいは仮想化環境)を用意しておいた方がいいでしょう。



ここで表示されているのは、/var/www/index.htmlというファイルで、初期設定では/var/wwwがドキュメントルート(WEBサーバーの最上位ディレクトリ)となっています。

どんなサービスを提供するかにもよりますが、外部へ公開するには、技術的には「ローカルIPアドレスの固定」「ファイアーウォールの設定」「ルータでのポート開放」などの手順を踏まなくてはなりませんので、まずはローカルネットワークで試してみましょう。

ドキュメントルートの変更

デフォルトの/var/wwwで作業してもいいのですが、ホームディレクトリ内に格納場所を確保しておいた方が作業もしやすいですし安全ですので、ドキュメントルートを変更してみます。

Apache2の設定ファイルは、/etc/apache2/というディレクトリにあります。この中の/etc/apache2/sites-available/defaultというファイルの下記の部分を変更してApacheを再起動すれば、ドキュメントルートが変更されます。

ここでは、ユーザ名をvineuserとし、ホームディレクトリ/home/vineuser/の中にwwwというフォルダを作成して、これをドキュメントルートとしています。さらに、www/cgi-binの中に.cgi、.plという拡張子のCGIプログラムを置いて実行可能にする設定にしています。ユーザ名やフォルダの名前は、環境に合わせて適宜変更してください。なお、変更あるいは追加するのは赤字の部分のみです。

【/etc/apache2/sites-available/defaultを編集】

 DocumentRoot /home/vineuser/www
 <Directory />
      Options FollowSymLinks
      AllowOverride None
 </Directory>
 <Directory /home/vineuser/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
 </Directory>

 ScriptAlias /cgi-bin/ /home/vineuser/www/cgi-bin/
 <Directory "/home/vineuser/www/cgi-bin">
      AllowOverride None
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
      AddHandler cgi-script .cgi .pl
      Order allow,deny
      Allow from all
 </Directory>


端末上では、
$ sudo nano /etc/apache2/sites-available/default
と実行すれば、nanoというシンプルで操作しやすいエディタを使って編集できます。wwwやwww/cgi-binなどのディレクトリ(フォルダ)とwww内のindex.htmlは事前に作成しておきましょう。

編集を終えたら、Apacheを再起動しておきます。
$ sudo service apache2 restart

以上で、変更は終了です。ブラウザを使って「http://ローカルIPアドレス」(例:http://192.168.0.2)にアクセスすれば、ホームディレクトリ内のwwwフォルダの直下に置いた「index.html」が表示されるはずです。

続きはWEBで!(当たり前だ)じゃなくて、次回は、具体的に~/wwwの中身を作っていくことにしましょう。