« 嫁と格安SIM − mineoの場合 − (その4) | トップページ | OS Xの標準機能で他OS向けZIPをつくる »

2016.02.09

OS X 10.11 El Capitan におけるApacheの設定メモ

かつて、OS Xには「Web共有」という機能がありましたが、現在のバージョンでは、姿を消しています。ただし、OS XをインストールするとApacheは入っていますので、設定ファイルを書き換えれば使えます。Yosemiteで設定済みだったとしても、El Captanにアップグレードすると、Apacheのバージョンが上がっていることと、設定ファイル(httpd.conf)が上書きされるので、やはり設定作業は必要となります。
最近、JavaScriptを勉強している関係で、OS Xで使えるテスト環境が欲しくなり、この度新たに設定したので、その手順をメモ。

とは、言っても、ほぼ、The Complete Guide to Setting Up a Local Web Development Environment with Apache in OS X 10.11 El Capitanの手順を踏襲しているので、そちらもご覧ください。

(2016.02.12追記)
Apacheのバージョンは、


$ sudo httpd -v
$ sudo apachectl -v
で調べられます。
自分の環境にインストールされていたApacheのバージョンは、2.4.16でした。
(2016.02.12追記ここまで)

1.自分のホームディレクトリにSitesディレクトリを作成
もし、自分のホームディレクトリにSitesディレクトリがない場合は、作成します。

$ mkdir ~/Sites

それから、バーチャルホストのテスト用として、example1.localとexample2.localを作成してみます。
(不要なら以下example1.localとexample2.localの設定は無視して下さい)
$ cd ~/Sites
$ mkdir example1 && mkdir example2

2.htmlファイルのサンプルを作成
~/Sites/index.html.en

<html><body><h1>It works!</h1></body></html>

~/Sites/example1/index.html.en
<html><body><h1>It works!</h1><br>This is the <strong>example1.local</strong><br>
<a href="http://example2.local/index.html.en">Example2</a></body></html>

~/Sites/example2/index.html.en
<html><body><h1>It works!</h1><br>This is the <strong>example2.local</strong><br>
<a href="http://example1.local/index.html.en">Example1</a></body></html>

3.ApacheのUsers設定ファイルを編集

$ cd /etc/apache2/users

ここに、個人設定ファイルを作成します。
$ sudo vi /etc/apache2/users/$USER.conf

$USERには自分のユーザーネームを入れて下さい。whoamiコマンドで分かりますね。
そして、次のような内容のファイルを作成します。

<Directory "/Users/$USER/Sites/">
    AddType text/html .shtml .html
    AddHandler server-parsed .shtml .html
    Options Indexes MultiViews FollowSymlinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>
パーミッションを設定。
$ sudo chmod  644 $USER.conf

4.Apacheのhttpd.confを編集
/etc/apache2/httpd.confを書き換えますので、同ファイルのバックアップをとっておきましょう。

LoadModule include_module libexec/apache2/mod_include.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php5_module libexec/apache2/libphp5.so
Include /private/etc/apache2/extra/httpd-userdir.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf
を探してコメントアウトを外します。

1行目は、SSIを有効にします。
2行目ないし3行目はアクセス制御、4行目はユーザー設定、5行目はバーチャルホスト、6行目はURL書き換えやリダイレクト指定、7行目はPHPの設定を有効化しています。


5.Apacheのhttpd-userdir.confを編集
/etc/apache2/extra/httpd-userdir.confのバックアップを取った後に、同ファイルを編集します。

Include /private/etc/apache2/users/*.conf
のコメントアウトを外します。

6.Apacheのhttpd-vhosts.confを編集
/etc/apache2/extra/httpd-vhots.confのバックアップを取った後に、同ファイルを編集します。

<FilesMatch ".+\.html$">
SetHandler application/x-httpd-php
</FilesMatch>

を追加して、さらに、
<VirtualHost *:80>
ServerAdmin webmaster@example1.local
DocumentRoot "/Users/$USER/Sites/example1"
ServerName example1.local
ServerAlias www.example1.local
ErrorLog "/private/var/log/apache2/example1-error_log"
CustomLog "/private/var/log/apache2/example1-access_log" common
<Directory "Users/$USER/Sites/example1">
RewriteEngine On
Options -Indexes
#WWW to HTTP
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
#Remove Index.html
RewriteCond %{THE_REQUEST} ^GET\ .*/index\.html
RewriteRule ^(.*)index\.html$ /$1 [R=301,L]
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@example2.local
DocumentRoot "/Users/$USER/Sites/example2"
ServerName example2.local
ErrorLog "/private/var/log/apache2/example2-error_log"
CustomLog "/private/var/log/apache2/example2-access_log" common
<Directory "Users/$USER/Sites/example2">
RewriteEngine On
Options -Indexes
#WWW to HTTP
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
#Remove Index.html
RewriteCond %{THE_REQUEST} ^GET\ .*/index\.html
RewriteRule ^(.*)index\.html$ /$1 [R=301,L]
</Directory>
</VirtualHost>
となるように編集します。

7./etc/hostsを編集
/etc/hostsのバックアップを取って、同ファイルを編集します。

127.0.0.1  http://www.example1.local www.example1.local http://example1.local example1.local
127.0.0.1 http://www.example2.local www.example2.local http://example2.local example2.local

8.php.iniをコピーして編集

$ cd /etc/
$ sudo cp php.ini.default php.ini && sudo vi php.ini

php.iniを編集します。;date.timezoneを検索し、コメントアウトを外して、
date.timezone = Asia/Tokyo
と記述します。
$ echo "<? php echo phpinfo(); ?>" >  ~/Sites/index.php
して、PHPの情報を表示できるようにします。


9.Apacheを起動
設定ファイルをテスト

$ apachectl configtest

Apacheを手動で起動(未起動時)

$ sudo apachectl start

Apacheを手動で再起動

$ sudo apachectl restart

Apacheを自動起動する設定

$ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist

(2016.12.19追記)
CGIを動作させる設定にも触れておきます。
/etc/apache2/httpd.confの


#LoadModule cgi_module libexec/apache2/mod_cgi.so
#AddHandler cgi-script .cgi

のそれぞれのコメントアウトを外します。
~/Sites/cgi-bin配下のcgiファイルを実行できるようになります。(ファイルに実行属性を与えてやることに注意)
(2016.12.19追記ここまで)

|

« 嫁と格安SIM − mineoの場合 − (その4) | トップページ | OS Xの標準機能で他OS向けZIPをつくる »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1024423/63833183

この記事へのトラックバック一覧です: OS X 10.11 El Capitan におけるApacheの設定メモ:

« 嫁と格安SIM − mineoの場合 − (その4) | トップページ | OS Xの標準機能で他OS向けZIPをつくる »