0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MacOSX CatalinaでApche環境設定

Last updated at Posted at 2020-04-07

以前(6年ほど前に購入)MacBookでWebサーバのテスト環境を作りました。
昨今の事情で、別のMacBookで同様の環境を作ろうとして、あれ?と思ったことから、今回はここに記録を残します。

環境

MacOSX Catalina 10.15.3
Apache 2.4.41
ruby 2.6.3

やりたいこと

ユーザディレクトリをドキュメントルートとして公開し、cgiを動かす

設定内容

現状

古いMacBookには「サイト」(ターミナル上のlsでは「Sites」)というフォルダがありましたが、新しいMacBookにはこのフォルダがありませんでした。
~ $ sudo apachectl start
を実行して、ブラウザで「 http://localhost/ 」 にアクセスすると「It works!」が表示される。
OS XにあったWebサーバ機能「Web共有」はMountain Lion(10.8)以降なくなり、ホームフォルダ直下「Sites」フォルダはなくなった(らしい....)

ドキュメントルートの作成と設定

# cd /Users/hoge/     
# mkdir Sites2            #「Sites」フォルダを作成
# touch Sites/.localized  # 「.localized」ファイルを作成すると以前のように『サイト』と表示

Finderで確認
スクリーンショット2020-04-07_14.22.34.png

/private/etc/apache2/httpd.confを編集する(数値は行番号)

183 #LoadModule userdir_module libexec/apache2/mod_userdir.so
520 #Include /private/etc/apache2/extra/httpd-userdir.conf
   ↓
183 LoadModule userdir_module libexec/apache2/mod_userdir.so
520 Include /private/etc/apache2/extra/httpd-userdir.conf

/private/etc/apache2/extra/httpd-userdir.confを編集する(数値は行番号)

16 #Include /private/etc/apache2/users/*.conf
   ↓
16 Include /private/etc/apache2/users/*.conf

Apacheを再起動しローカルフォルダのSitesにindex.htmlを作成

~ $ sudo apachectl restart
~ $ sudo vi /Users/entero/Sites/index.html
~ $ cat /Users/entero/Sites/index.html 
Here is User dir.

ブラウザで参照する

元々のドキュメントルート
スクリーンショット 2020-04-07 15.32.58.png
ユーザのドキュメントルート
スクリーンショット 2020-04-07 15.31.51.png
なにも自分では指定しなかったのに、/Users/hoge/Sitesがドキュメントルートになっていました。
理由はここに既定値で“Sites”と指定されていました。 /etc/apache2/extra/httpd-userdir.conf
10 UserDir Sites

ユーザディレクトリに作成したドキュメントルートのアクセスを制御するためのディレクティブは
/private/etc/apache2/users/hoge.conf に記述します。例として以下を設定してみました。

<Directory "/Users/entero/Sites/">
        Options Indexes        # ファイル一覧の表示を許可     
        Require all granted    # すべて許可
</Directory>

ファイルindex.htmlをindex2.htmlにrenameして設定が有効になっていることを確認しました。
スクリーンショット 2020-04-07 15.59.43.png

cgiを動作させる

変更箇所は2つ

・ /private/etc/apache2/users/hoge.conf にユーザディレクトリのSites/cgiでcgiを動かすことを指定

<Directory "/Users/hoge/Sites/cgi">
    Options +ExecCGI
    AddHandler cgi-script .cgi
</Directory> 

・ /private/etc/apache2/httpd.conf の173行目のコメントアウトを解除

    169 <IfModule !mpm_prefork_module>
    170         #LoadModule cgid_module libexec/apache2/mod_cgid.so
    171 </IfModule>
    172 <IfModule mpm_prefork_module>
    173         LoadModule cgi_module libexec/apache2/mod_cgi.so
    174 </IfModule>
動作確認

cgiディレクトリに下記のファイルtest.cgiを作成する

$ cat /Users/hoge/Sites/cgi/test.cgi 
# !/usr/bin/env ruby
print "Content-Type: text/html; charset=UTF-8\n"
print "\n"
print "<html>"
print "これは<b>CGI</b>のテストです。"
print "</html>"

ブラウザで http://localhost/~hoge/cgi/test.cgi にアクセスすると「これはCGIのテストです。」と表示されてOK。
cgiexec.png
htmlのソースが表示される時は、上記の変更箇所
文字化けしてしまう時は、「charset=」を確認してください

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?