48
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RaspbianにおけるApache2の設定

Last updated at Posted at 2018-10-24

Raspberry Pi 3にApache2とPHPをインストールしたときの設定メモです。
ラズパイのOSはRaspbianでDebian系なので、DebianやUbuntuで検索すれば大抵の解決策はヒットします。

インストール

$ sudo apt-get install apache2

Apacheの起動・停止・再起動

# 起動
$ sudo service apache2 start
# 停止
$ sudo service apache2 stop
# 再起動
$ sudo service apache2 restart

設定ファイル変更して、変更を反映させるには必ず再起動が必要。

設定ファイルについて

/etc/apache2/ ディレクトリに設定ファイルが作成される。

最初に/etc/apache2/apache2.confの設定ファイルが読み込まれる。

次に/etc/apache2/conf.d以下の設定ファイルが追加で読み込まれる。

仮想ホストの設定は/etc/apache2/sites-availableディレクトリにあるファイル

モジュールの設定は/etc/apache2/mods-availableディレクトリにあるファイル

仮想ホストやモジュールの設定は、実際に読み込まれるのは*-availableではなく*-enabledディレクトリにあるシンボリックリンクであり、有効にしたい設定のシンボリックリンクを作るという感じで設定を有効にする。

設定ファイルの構造

一行ごとにディレクティブと呼ばれる設定内容を記述する。セクションコンテナ内に書いた設定は、セクションコンテナ内だけ有効の設定となる。

/etc/apache2/apache2.conf
<Directory "/var/www/html">  # セクションコンテナ
        #Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

ポート番号の設定

Apacheが待ち受けるポート番号の設定は次のように設定する。

/etc/apache2/ports.conf
Listen 80  # Apacheが待ち受けるポート番号

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
    # (略)
</VirtualHost>

管理者のメールアドレスの設定

/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
    ServerAdmin hoge@gmail.com
    # (略)
</VirtualHost>

サーバ名の設定

 /etc/apache2/conf.dディレクトリに新しくservernameというサーバ名専用の設定ファイルを新しく作成する。

/etc/apache2/conf.d/servername
ServerName www.hoge.jp:80  # エラー時に表示されるサーバ名とポート番号
UseCanonicalName On        # Onにするとサーバ名としてServerNameの値を使う

作成した設定ファイルを読み込ませる設定を書く。

/etc/apache2/apache2.conf
Include conf.d/servername

ドキュメントルートの設定

WEBサーバは独自にルートディレクトリを持っており、そこにHTMLファイルなどを置く。このWEBサーバのルートディレクトリをドキュメントルートと呼ぶ。

/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
        # /var/www/htmlディレクトリをドキュメントルートとする設定
        DocumentRoot /var/www/html  
</VirtualHost>

エラーログの設定

Apache2系のエラーはデフォルトで/var/log/apache2/error.logに出力される。
ファイル名等を変更したい場合は以下の設定を変更する。

/etc/apache2/apache2.conf
ErrorLog ${APACHE_LOG_DIR}/error.log

${APACHE_LOG_DIR}の設定は/etc/apache2/envvarsに書いてある。

インデックスファイルの設定

WEBブラウザのURL欄にディレクトリを指定してページを開いたとき、あらかじめ設定されたファイルを開きたい。

たとえば、index.htmlを開くようにするには次のようなディレクティブを追記する。

/etc/apache2/apache2.conf
DirectoryIndex index.html index.htm  # 左のものが優先される

ファイル一覧を表示しないようにする

WEBブラウザのURL欄にディレクトリを指定してページを開くと、ファイルの一覧が開く。これを無効化したい。

たとえば、/var/www/htmlがルートディレクトリのとき、ルートディレクトリ以下すべてのページでこれをしたい場合、次のディレクティブを追記する。

/etc/apache2/apache2.conf
<Directory /var/www/html>
        Options Indexes FollowSymLinks
</Directory>

エラーページの設定

404エラーが発生したとき、専用の特別なページを表示したい。次のようにディレクティブを追記する。

/etc/apache2/apache2.conf
<Directory /var/www/html>
        # 404エラーのとき、/error/404.htmlを表示する
        ErrorDocument 404 /error/404.html
        ErrorDocument 403 /error/403.html
<Directory>

ルートディレクトリ以外の場所のファイルを参照したい

すべてのファイルをルートディレクトリに設置したくない。このようなとき、エイリアスを設定することでディレクトリをルートディレクトリに存在するように見せることができる。

/etc/apache2/apache2.conf
# /etc/jquery/ディレクトリを、/jquery/と書いてアクセスできる。
Alias /jquery/ "/etc/jquery/"
<Directory /etc/jquery/>
        Require all granted
</Directory>

こうすることで、htmlファイルに次のように書くことができるようになる。

<script type="text/javascript" src="/jquery/jquery-3.1.1.min.js"></script>

ダイジェスト認証の設定

まず、htdigestコマンドでダイジェストファイルを作成する。

ファイル名:.htdigest
レルム名(AuthName):RealmName
ユーザ名:Aoba
パスワード:zoizoizoi
とすると、

$ sudo htdigest -c /var/www/html/.htdigest 'RealmName' Aoba
Adding password for Aoba in realm RealmName.
New password:zoizoizoi
Re-type new password:zoizoizoi

次に、ダイジェスト認証モジュールを有効にする。

$ sudo a2enmod auth_digest  # 有効化する
$ sudo a2dismod auth_digest # 無効化する

ダイジェスト認証を有効にしたいディレクトリの設定を書く。

/etc/apache2/apache2.conf
<Directory /var/www/html>
        AuthType Digest
        AuthName "RealmName"  # レルム名
        AuthUserFile /var/www/html/.htdigest
        Require valid-user
</Directory>

文字コードの設定

どの文字コードでデコードされるべきかはHTTPリクエストとレスポンスのヘッダ情報に従うのが通常であり、文字化けの原因になるのでApacheの設定で指定しないほうが良い。

/etc/apache2/conf-available/charset.conf
# AddDefaultCharset UTF-8  # コメントアウトするか
AddDefaultCharset off      # offにする
48
57
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?