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を再起動しておく
注1 DocumentRootを,windowsのc:\var\www\htmlにすると生ずる不具合
$ sudo service apache2 restart
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. 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になっている。