【Ubuntu11.04】ローカルWEBサーバー構築memo

何回も設定をやり直しているのでUbuntu11.04WEBサーバー構築の覚書としてmemo

LAMPサーバーインストール(Linux Apache MySQL PHP PHPMyAdmin)


インストールはいくつか方法がある。

$ sudo apt-get install tasksel
$ sudo tasksel

でLAMPServerを選択してやるとか

$ sudo apt-get update
$ sudo apt-get install apache2 php5 php5-gd 
 mysql-server php5-mysql phpmyadmin

とか。

私の場合は後者で行った。
後者の場合は
インストールの過程では4回パスワードを聞かれる。
システムの変更を加えるためのパスワードと
データベースのMySQLのパスワードと
MySQLを設定するためのパスワードと
PHPMyAdminを設定するためのパスワードである。

PHPMyAdminの設定でどのWEBサーバーと連携するかを聞かれるので
その時はapacheサーバーを選択する。

インストールして終わると、
ここでhttp://localhost/にアクセスすると
It works!〜なんちゃらと表示されると成功。

PHPを確認するならば

$ sudo vim /var/www/phpinfo.php

と何かしらのテキストエディタで新しいPHPファイルを作り、

<?php print_f(phpinfo()); ?>

と記入すると、http://localhost/phpinfo.php
にアクセスするとPHPの各種設定情報を表示してくれるPHPinfoが表示される。

mysqlを確認するならば

$ mysql -u root -p

と端末で記入し、
インストール時に設定したパスワードを入力することで
mysqlにアクセスできるようになる。

PHPMyAdminを確認するならば
http://localhost/phpmyadminにアクセスすると
PHPMyAdminのログイン画面が表示される。

apacheの設定

UbuntuなどのDebianapacheの設定においては
sites-availableとsite-enabledについて理解することが重要。
サイト毎の設定であるバーチャルホストの設定を行うためには。

サーバ全体のは/etc/apache2/apache2.confにまとめてあるが、
サイト毎の設定は/etc/apache2/sites-available/の下で行う。

sites-available(利用できるサイト)はファイルを置く場所で、
site-enabled(利用可能にするサイト)はsites-available のファイルのシンボリックリンク用になります。
つまり、site-enabledの有効(a2enmod)or無効化(a2dismod)によってブラウザで表示するサイトが変えられるということです。

apache設置直後に稼働中のものはDefalutの設定で動いているので

$ sudo a2dissite 000-default

で削除する。
(a2dissiteは/etc/apache2/sites-enabled/にあるリンクを削除するコマンド)
そして、設定をapacheに読み込ませるために再起動する。

$ sudo /etc/init.d/apache2 restart

次に、有効にしたいバーチャルホストの設定を行う。
まずdefalutにあるファイルをコピーする。
defaultを残しておくことで例え設定を間違えてもやり直せる。

$ sudo cp /etc/apache2/sites-available/default 
  /etc/apache2/sites-available/好きなバーチャルホスト名

バーチャルホストを有効にする。

$ sudo a2ensite 上記でつけたバーチャルホスト名

(a2ensiteは/etc/apache2/sites-available/にある設定のリンクを/etc/apache2/sites-enabled/に作成するコマンド)
これでシンボリックリンクが作成できたのでバーチャルホストと同じ名前のリンクができる。

通常は/var/wwwにDocumentRootがあると思うが
ユーザーディレクトリ(/home/ユーザ名/wwwなど)に
アクセスできるようにしたい場合はUserdirというモジュールを有効化する。

$ sudo a2enmod userdir

(a2enmodは/etc/apache2/mods-available/にある設定のリンクを/etc/apache2/mods-enabled/に作成するコマンド
ちなみにa2dismodは削除するコマンドだ)

そして、設定をapacheに読み込ませるために再起動する。

$ sudo /etc/init.d/apache2 restart

バーチャルホストの設定を細かくして
ドメイン名、ログファイルや変更ログの保管場所の設定を行いたいときは

$ sudo nano /etc/apache2/sites-available/バーチャルホスト名

を編集する。

私のファイル中身は(*)を修正・加筆

<VirtualHost *:80>
        (*)ServerName サイトのドメイン
        ServerAdmin webmaster@localhost
        (*)UserDir バーチャルホスト名
        (*)UserDir disabled(rootとユーザー名以外受け付けないようにするために)
        (*)UserDir enabled ユーザー名
        (*)DocumentRoot /home/ユーザー名/バーチャルホスト名/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        (*)<Directory /home/ユーザー名/バーチャルホスト名/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        (*)ErrorLog /home/ユーザー名/バーチャルホスト名/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

       (*)CustomLog /home/ユーザー名/バーチャルホスト名/access.log combined
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>

とこんな感じである。
これでバーチャルホスト名を例えば、example.comとかしていたら
HTMLファイルかなんかを指定のフォルダに入れていたら
URLにexample.comと打ち込んで表示される。


躓いたことはローカルのバーチャルホストで設定したドメイン
ユーザーディレクトリにあるphpファイルにアクセスすると
ダウンロードされてしまうというissue。

解決方法はphp5.confの修正

/etc/apache2/mods-available/php5.conf 

を念の為に

sudo cp /etc/apache2/mods-available/php5.conf /etc/apache2/mods-available/php5-cp.conf

とコピーしておく。

/etc/apache2/mods-available/php5.conf

<IfModule mod_userdir.c> 
<Directory /home/*/public_html>
 php_admin_value engine Off 
</Directory> 
</IfModule>

#<IfModule mod_userdir.c> 
#<Directory /home/*/public_html>
# php_admin_value engine Off 
#</Directory> 
#</IfModule>

コメントアウトすることであった。
最後にapacheを再起動して、

$ sudo /etc/init.d/apache2 restart

ユーザーディレクトリでもphpファイルの表示が可能になった。

参考
Ubuntu(11.04)でLAMPP(Linux Apache MySQL PHP PHPMyAdmin)を構築!インストールと設定
http://niwatako.info/20110611/article847.html
apache2
http://wiki.lampetty.net/apache2.html
webサーバ(apache2)の設定
http://www005.upp.so-net.ne.jp/develop-tom/deb/apache-deb.html
Apacheの設定 2 - ユーザーディレクトリでPHPを実行可能にする
http://blog.livedoor.jp/slowhandblues/archives/4871377.html