WSL環境に apache2.4 を導入する

サーバーのインストール

  1. インストーラーを起動する
    $ sudo apt install apache2
    
  2. 既存のバーチャルホストを削除する
    $ sudo systemctl stop apache2
    $ sudo a2dissite 000-default.conf
    Site 000-default disabled.
    To activate the new configuration, you need to run:
      systemctl reload apache2
    
  3. バーチャルホスト(dev80.conf)を作成して有効化する
    $ cd /etc/apache2/sites-available/
    $ sudo cp 000-default.conf dev80.conf
    $ sudo a2ensite dev80.conf
    Enabling site dev80.
    To activate the new configuration, you need to run:
      systemctl reload apache2
    $ sudo systemctl start apache2
    
    この時点で、http://localhost/ でデモページが表示されれば稼働OK

ドメイン名の設定

  1. WSL側のIPアドレスを調べる(eth0 > inet)
    $ ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:15:5d:10:17:f9 brd ff:ff:ff:ff:ff:ff
        inet 172.28.249.132/20 brd 172.28.255.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::215:5dff:fe10:17f9/64 scope link
           valid_lft forever preferred_lft forever
    
  2. dev.ipadtaxi.jp のIPアドレスをDNSに登録する。

    自身が管理しているDNSを更新する

  3. Windows側からWSLへの疎通確認
    > ping dev.ipadtaxi.jp
    
    dev.ipadtaxi.jp [172.28.249.132]に ping を送信しています 32 バイトのデータ:
    172.28.249.132 からの応答: バイト数 =32 時間 <1ms TTL=64
    172.28.249.132 からの応答: バイト数 =32 時間 <1ms TTL=64
    
    この時点で、http://dev.ipadtaxi.jp/ でデモページが表示されれば稼働OK

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

  1. 以下の設定ファイルを変更する
    $ sudo vi /etc/apache2/apache2.conf
    

    以下のエントリを追加

    <Directory /mnt/c/htdocs/>
    	Options Indexes FollowSymLinks
    	AllowOverride ALL
    	Require all granted
    </Directory>
    
    AllowOverride は Deny -> ALL にしないと .htaccess が効かなくなる
  2. 以下の設定ファイルを変更する
    $ sudo vi /etc/apache2/sites-available/dev80.conf
    

    以下のエントリを変更

    DocumentRoot /mnt/c/htdocs
    
  3. ドキュメントルートに仮ページ(index.html)を設置
  4. Webサーバー再起動
    $ sudo systemctl restart apache2
    
    http://dev.ipadtaxi.jp で仮ページが表示されればOK

SSLの導入

  1. WebサーバーにSSLモジュールを追加する
    $ sudo a2enmod ssl
    
  2. Webサーバーにrewriteモジュールを追加する
    $ sudo a2enmod rewrite
    
    .htaccess 内でRewrite機能を使用するためにこれをロードする必要がある。http->https へ自動的に移動させるために .htaccessで以下の設定を加えるために必要となる。

    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    
  3. バーチャルホスト(dev443.conf)を作成する
    $ cd /etc/apache2/sites-available/
    $ sudo cp default-ssl.conf dev443.conf
    $ sudo vi dev443.conf
    

    以下のエントリを変更

    DocumentRoot	/mnt/c/htdocs
    SSLCertificateFile	/etc/letsencrypt/live/dev.ipadtaxi.jp/cert.pem
    SSLCertificateKeyFile	/etc/letsencrypt/live/dev.ipadtaxi.jp/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/dev.ipadtaxi.jp/chain.pem
    SSLCACertificateFile	/etc/letsencrypt/live/dev.ipadtaxi.jp/fullchain.pem
    
    既定では /etc/letsencrypt/live/ およびリンク先の /etc/letsencrypt/archive/ のパーミッションは apache起動アカウント(グループ)ではアクセスできないため、必要に応じて権限設定を変更する必要がある。本環境ではグループオーナーを www-data に変更した上で読取権限を追加して対応した。
  4. バーチャルホスト(dev443.conf)を有効化する
    $ sudo a2ensite dev443.conf
    Enabling site dev443.
    To activate the new configuration, you need to run:
      systemctl reload apache2
    $ sudo systemctl restart apache2
    
    https://dev.ipadtaxi.jp で仮ページが表示されればOK

PHPの導入

引き続きこちらを参照