文書の過去の版を表示しています。
目次
Apache2 でWebサーバ
Apache2 で Web サーバを構築する。セキュリティを考慮してとりあえず、HTTP 標準の 80 ポートは使用せず、SSL を使用して 443 “以外” のポートで通信を行うようにする。
環境
インストール前の環境
- Ubuntu 14.04.1 LTS 64bit
パッケージ名 | バージョン |
---|---|
apache2 | 2.4.7-1ubuntu4.1 |
mysql-server | 5.5.40-0ubuntu0.14.04.1 |
libapache2-mod-php5 | 5.5.9+dfsg-1ubuntu4.5 |
Apache2、MySQL、PHP は Ubuntu をインストールした際に、ついでにインストール済み。
インストールするパッケージ等
インストール
インストールしていない場合は apt-get でインストール。
$ sudo apt-get install apache2
ufw で 80 ポートへのアクセスを許可する。
$ sudo ufw allow 80/tcp
インストールしてサーバにブラウザでアクセスすると、とりあえず It works! は表示される。
apache2 ディレクトリ内のファイル
/etc/apache2 ディレクトリ内のファイル
- apache2.conf: メイン設定ファイル。グローバル設定を記述する。
- conf-available: 設定ファイルを格納するディレクトリ。以前は “conf.d” という名前だったが変更された。
- conf-enabled: /etc/apache2/conf-available に格納されている設定ファイルへのシンボリックリンクを格納する。このディレクトリに格納されたシンボリックリンクに対応する設定ファイルが次回の Apache2 起動時に読み込まれる。
- envvars: Apache2 で使用する環境変数を記述する。
- mods-available: モジュールとモジュールの設定ファイルを格納するディレクトリ。ただし、すべてのモジュールが、設定ファイルが必要な訳ではない。
- mods-enabled: /etc/apache2/mods-available に格納されているモジュールへのシンボリックリンクを格納する。このディレクトリに格納されたシンボリックリンクに対応するモジュールが次回の Apache2 の起動時に有効化される。
- ports.conf: Apache2が接続を受け入れるポートの設定。
- sites-available: このディレクトリにはApache2のバーチャルホストの設定ファイルを格納する。
- sites-enabled: /etc/apache2/sites-available に格納されている設定ファイルへのシンボリックリンクを格納する。このディレクトリに格納されたシンボリックリンクに対応するバーチャルホストが次回の Apache2 の起動時に有効化される。
- magic: MIME タイプの認識方法を設定するファイル。
サイトの設定
インストール時点でデフォルトのサイトが有効かされている。
このサイトの設定ファイルをコピーして新しいサイトの設定ファイルを作成する。
$ cd /etc/apache2/sites-available/ $ sudo cp ./000-default.conf ./mynewsite.conf $ sudo vi ./mynewsite.conf
- ServerAdmin: サーバ管理者のメールアドレスを設定する。
apacheのSSLを有効にする
SSLモジュールの有効化
$ sudo a2enmod ssl
/etc/apache2/sites-available/ に default-ssl が生成される。
コマンドで default-ssl を有効にすると、/etc/apache2/sites-enabled/ にシンボリックリンクが張られる。
$ sudo a2ensite default-ssl
$ ls -l /etc/apache2/sites-enabled/ total 0 lrwxrwxrwx 1 root root 26 2010-10-29 10:47 000-default -> ../sites-available/default lrwxrwxrwx 1 root root 30 2010-10-29 12:41 default-ssl -> ../sites-available/default-ssl
SSL接続を使用するサーバの設定を行う。
$ sudo vi /etc/apache2/sites-available/default-ssl
- <VirtualHost _default_:443>: アクセスするポートを変更する場合は数字を変更
- ServerAdmin: 管理者のメールアドレスに変更
- DocumentRoot: Apache2 のドキュメントルートを任意のパスに変更
鍵のパスを実際のパスに変える。Postfixで設置した鍵を使用。
- SSLCertificateFile /etc/ssl/certs/server.crt
- SSLCertificateKeyFile /etc/ssl/private/server.key
アクセスするポートを変更した場合は、/etc/apache2/ports.conf でポート番号を変更する。
$ sudo vi /etc/apache2/ports.conf
- Listen 443: 番号を任意のポート番号に変更
設定に間違いがないかをチェック。
$ sudo apache2ctl configtest
こんな警告が、、、
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
どうやら
$ hostname --fqdn
とした時に、グローバルからアクセス可能なホスト名が出てこないのが原因らしい。
/etc/hosts を編集する。
$ sudo vi /etc/hosts
127.0.1.1 hostname
こんな行があるはずなので、
127.0.1.1 your.domain.com hostname
グローバルからアクセスできるホスト名を、172.0.1.1に対応する最初のホスト名として記述する。
apache再起動する。
$ sudo /etc/init.d/apache2 restart
ブラウザからアクセスできるかをチェックする。
WevDavの設定
Apache2 の WebDav モジュールを有効にする。
$ sudo a2enmod dav_fs
Webdavで使用するディレクトリを作成。所有者は www-data:www-data にする。
$ sudo mkdir -p /var/www/webdav $ sudo chown www-data:www-data /var/www/webdav
/etc/apache2/default か default-sslに WebDav フォルダの設定を追加する。
<IfModule mod_dav_fs.c> Alias /dav "/var/www/webdav" <Location /dav> DAV on Options Indexes Order deny,allow AuthType Basic AuthName "Webdav" AuthUserFile /etc/apache2/dav.passwd Require valid-user </Location> </IfModule>
認証用のパスワードファイルを作成する。
$ cd /etc/apache2/ $ sudo htpasswd -c ./dav.passwd hoge ← 最初の一人のときだけ New password: Re-type new password: Adding password for user hoge
-c オプションは新しくファイルを作成してしまうので、2人目以降は
$ sudo htpasswd ./dav.passwd hoge
で追加する。
パスワードファイルのパーミッションを変更。
$ sudo chown www-data:www-data ./dav.passwd $ sudo chmod 600 ./dav.passwd
Apache2 を再起動。
$ sudo /etc/init.d/apache2 restart
ブラウザから http://your.domain.com/dav にアクセスしてチェック。
文字化け対策
以前は文字化け対策で mod-encoding をインストールしていた気がするけれど、文字化けの現象が現れないのでとりあえず放置。