ubuntu on Windows に Apacheサーバーをインストールする 20200401更新 20170616

1.Apache2.4 サーバーのインストール

$ sudo apt-get install apache2

インストール成功

apacheのバージョン表示
$ sudo apache2ctl -v
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2020-03-13T12:26:16


2.起動テスト

apache2の起動
$ sudo service apache2 start
  [Wed Apr 01 23:05:38.704525 2020] [core:warn] [pid 5154:tid 140388535569344] (92)Protocol not available: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT
 *
failedも出ているが,とりあえず起動成功
あとで設定ファイルへの修正で対応する。(AcceptFilterの設定)

Windows側のブラウザで「http://localhost」を表示すると
「Apache2 Ubuntu Default Page」が表示される。
「http://自分のIPアドレス」でも同様に表示される。
(/var/www/html/index.htmlが見えている。)

他のマシンからのアクセスを禁止するためには,windowsのファイアウォールで,ポート80を閉鎖すればよい。
他のマシンからアクセスできるようにするには,windowsのファイアウォールで,ポート80を開放すればよい。

apache2を止める。
$ sudo service apache2 stop
 * Stopping Apache httpd web server apache2
 *

3.設定ファイルの修正

初期状態のDocumentRoot(公開用html文書などの置き場所)は「/var/www/html」であるが,
windowsとの親和性のため,DocumentRootを,windowsのc:\var\www\htmlにすることにすると, 注1
ubuntu側から見たディレクトリは /mnt/c/var/www/html になるのでそのように修正

/etc/apache2/sites-available/000-default.confの存在を確認してから,次に進む。
/etc/apache2/sites-available/000-default.confを修正することにしたので,
バックアップを作成
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf.bak

エディタnanoで修正
$ sudo nano /etc/apache2/sites-available/000-default.conf

・DocumentRootの行(/var/www/html)を次のように修正して,Windowsとの共通領域に設定する。

       DocumentRoot /mnt/c/var/www/html

・</VirtualHost>の直前に以下を挿入

        <Directory /mnt/c/var/www/html>
                Options FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>

・</VirtualHost>の直後に以下を挿入
これは「Failed to enable APR_TCP_DEFER_ACCEPT」対策

        AcceptFilter http none
        AcceptFilter https none

設定を変更したので,もしapache2が稼働中であったらapache2を再起動しておく
$ sudo service apache2 restart

注1 DocumentRootを,windowsのc:\var\www\htmlにすると生ずる不具合
PHPでセッションを使うとき,セッションディレクトリをc:\var\www\html配下のディレクトリに設置できない。
使用するセッションディレクトリの名前をリンクで/tmpにすることで,この不具合は解消する。

4.自分で作成した.htmlを表示してみる

c:\var\www\html にindex.htmlを置く
------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body>
<h1>Hello.&nbsp; Apache on Ubuntu works!</h1>
</body></html>
------------------------------------------

もしapache2が停止中であったらapache2を起動
$ sudo service apache2 start

ここでブラウザで http://localhost/index.html とアクセスすると,
c:\var\www\html\index.html が見える。
localhostのところを自分のIPにしても見える。

apache2を止める。
$ sudo service apache2 stop
 * Stopping Apache httpd web server apache2
 *

apache2を起動したまま,ubuntuからexitしてしまうとubuntuが終了してしまい,
apache2も終了してしまう。


5.apache DocumentRootのオーナーとグループ

ApacheのDocumentRootを/mntの配下に作成しているので,
DocumentRootおよびその配下のディレクトリ・ファイルはオーナーもグループもrootになっている。