ひとりまとめ

もろもろのメモ

Apache2のDocumentRootを変更したい!RaspberryPiで。

ときたまいじる程度のApache設定。そのため毎回なにがなんだかわからなくなってしまいます。今度こそ覚えておくために、やったこと備忘録。

 

使ったバージョン

Raspbian GNU/Linux 8

Apache/2.4.10 (Raspbian)

 

手順

1. Apacheのインストール

2. DocumentRoot用のディレクトリ作成

3. Apacheの設定変更

4. Apacheの再起動

 

1. Apacheのインストール

apt-getを使ってインストールしました。

apt-getを使う前に、パッケージのリストをサーバーから入手し、その上で目的のものをインストールします。

sudo apt-get update

sudo apt-get install apache2

 

Apacheの起動はこうします。

sudo /etc/init.d/apache2 start

この状態で、http://192.168.XXX.XXX (このラズパイのIPアドレス)にブラウザでアクセスすると、Apacheの画面が表示されていることが確認できます。

 

なお、デフォルトでラズパイ起動時にApacheも起動するように設定されているようで、

/etc/rc2.d/以下にS02apache2というのが入っているのが確認できます。

 

 

2. DocumentRoot用のディレクトリ作成

今回はpiのホームディレクトリ以下の/home/pi/wwwをDocumentRootを設定してみることにします。

httpdを動かすユーザーが、このディレクトリに触れる必要があります。ということで、httpdを動かしているユーザーが誰なのか、次にようにして確認してみます。

ps auxw | grep httpd

するとpiというのが出ますので、ラズパイの場合はpiユーザーが動かしていることがわかります。ということで、デフォルトのpiでそのままディレクトリを作ることにします。

mkdir /home/pi/www

この後設定できていることが確認できるように、適当にindex.htmlというファイルを作って入れておくことにします。

 

3. Apache2の設定

変更する設定ファイル

Apache2にはいくつもの設定ファイルがあります。

Debian Apache2の設定(1)

今回はDocumentRootの場所を変更するだけなので、/etc/apache2/sites-available以下の「〜.conf」という拡張子のファイルをいじります。

デフォルトでは「000-default.conf」と「default-ssl.conf」という2つファイルが置かれていますが、「000-default.conf」をコピーして「default.config」というのを作って、そっちを変更してみることにします。

 

ちなみにこの「〜.conf」というファイルですが、新たに追加したりする場合は設置しただけではダメで、明示的に読み込ませるようにしないといけないので注意。

というのも、RaspbianのようなDebian系のApache2では、/etc/apache2/sites-enabled/に入れた設定が有効で、/etc/apache2/sites-available/には利用可能な設定を入れておく場所というルールがあるっぽい。

で、どれを有効にしてどれを無効にするのかは、次のコマンドを使います。

登録 sudo a2ensite

解除 sudo a2dissite

実はこれは、sites-enabledへのシンボリックリンクを作ったり消したりするコマンドなのでした。

sudo a2dissite

と打ってみると、次のようなメッセージが出ます。

Your choices are: 000-default

Which site(s) do you want to disable (wildcards ok)?

 

これは、現在000-defaultが設定されていることを示しています。これを解除するには、このメッセージに続けて「000-default」と入力します。

 

設定ファイルの変更

コピーして作ったdefault.configをviなどで開くと、

DocumentRoot /var/www/html

 

と書かれているのがわかります。ここでパスを指定していました。このディレクトリ以下の権限を示すDirectoryディレクティブは、/etc/apache2/apache2.confの中に記述されています。そのため、/var/www/htmlを/home/pi/wwwに変更しただけでは403エラーが発生してページが表示されません。

なので、DocumentRootの場所とDirectoryディレクティブを、default.configの中に記述します。

DocumentRoot /home/pi/www  ←これは変更

↓これは追加

<Directory /home/pi/www/>

    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

 

 

設定ファイルの登録

今更新したdefault.configを登録します。

sudo a2ensite

これを打つと、次のようなメッセージが出ます。

Your choices are: 000-default default-ssl default
Which site(s) do you want to enable (wildcards ok)?

/etc/apache2/sites-available以下に3つのファイルがあり、どれにするかを聞かれているので、defaultと入力して登録します。

 

4.Apacheの再起動

再起動はこれ。

sudo /etc/init.d/apache2 restart

 

 

これで新しいDocumentRoot以下のファイルが見えるようになるかと思います。

 

 

最初、Directoryディレクティブのことを忘れてて、DocumentRootだけを変更して「なんで403になるんだー」などと思ってました。「Apache2では/etc/apache2/sites-availableに設定を書くんだ!」とだけ書かれた記事を見つけて自分がハマったので、備忘録。