Mac OSX Mavericks で Apache環境構築 + 任意のディレクトリからCGIプログラムの実行まで行う.
環境
Mac OSX Mavericks(このご時世にいつまで使うのやら)
Server version: Apache/2.2.26 (Unix)
Server built: Dec 10 2013 22:09:38
Apacheの設定
verの確認
ApacheはMac OSX Mavericksでは標準でインストールされているはずです.
従って,今回はそれを利用します(homebrewでぶっ込んで試したけど挫折した).
$ httpd -v
でまずはver確認から.
標準では
Server version: Apache/2.2.26 (Unix) Server built: Dec 10 2013 22:09:38
と出力されるはずです.
Apacheの起動確認
$ sudo apachectl start
で起動できます.
終了は
$ sudo apachectl stop
でOK.
設定ファイルを弄った後は
$ sudo apachectl restart
をして再起動してください.
http://localhost/
を参照すると起動が出来ているか確認できると思います.
設定ファイルの変更
標準では設定ファイルが /etc/apache2/配下に置かれているはずです.
今回はエディタのEmacsで編集を行うので
$ sudo emacs /etc/apache2/httpd.conf
で編集を行います.
変更箇所
1カ所目
ユーザディレクトリを許可するモジュールをアンコメントアウト
LoadModule userdir_module libexec/apache2/mod_userdir.so
デフォルトではコメントアウトされているので外します.
2カ所目
#User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf
同様にこのInclude文もコメントアウトされているので外します.
3カ所目
# # AddHandler allows you to map certain file extensions to "handlers": # actions unrelated to filetype. These can be either built into the server # or added with the Action directive (see below) # # To use CGI scripts outside of ScriptAliased directories: # (You will also need to add "ExecCGI" to the "Options" directive.) # AddHandler cgi-script .cgi
この最後の文も標準ではコメントアウトされているので外します.
ここで,rubyやperlなどをcgiプログラムで活用したい場合は
AddHandler cgi-script .cgi .rb .pl
のようにして追記すると良いでしょう.
任意のディレクトリを参照できるように設定
次にユーザディレクトリを設定します.
設定するためには
$ sudo emacs /etc/apache2/users/[user_name].conf
を行って作成する必要があります.
自分のuser_nameは
$ whoami
で確認することが出来るので,各自確認の上[user_name]部分を変更してください.
設定は以下のコードを入力してください.
<Directory "/Users/[user_name]/Sites/"> AllowOverride All Options Indexes FollowSymLinks MultiViews +ExecCGI AddHandler cgi-script .cgi Order allow,deny Allow from all </Directory>
Options Indexes FollowSymLinks MultiViews +ExecCGI
この+ExecCGIと,
AddHandler cgi-script .cgi
この一文がCGIプログラムを任意のディレクトリで実行するために重要になります.
任意のディレクトリを設定するには
<Directory "任意のディレクトリ"> </Directory>
とすれば任意のディレクトリを設定することができる(はず)です.
CGIプログラムを動かすための準備
ここまで設定が完了したら,実際に動かすために準備を行います.
$ cd $ mkdir ~/Sites
としてSitesというディレクトリを作成します.
続いてディレクトリのパーミッション(アクセス権限)の設定を行います.
$ sudo chmod 755 ~/Sites
としてアクセス権限を変更します.
$chmod 755 とは
- 所有者:読み出し,書き込み,実行が全て可
- グループ:読み出し,実行が可
- その他ユーザ:読み出し,実行が可
という状態に変更する事を指します.
CGIプログラムを動かす
いよいよCGIプログラムを動かすためのプログラムを書きます.
$ cd ~/Sites $ emacs test.cgi
として~/Sites 配下にtest.cgiというファイルを作成します.
内容は以下のような簡単なものに.
#!/usr/local/bin/ruby print "Content-Type: text/html\n\n" str = "Hello World" print str print "\n"
作成後は先ほどと同様にパーミッションを設定します.
$ cd $ sudo chmod 755 ~/Sites/test.cgi
ここまで完了したら,
$ sudo apachectl restart
として再起動をかけてください.
http://localhost/~[user_name]/
を入力して何か表示されていれば成功.
http://localhost/~[user_name]/test.cgi
を叩いて
が表示されればOkay!
エラーが出る場合は
これはmacの場合に限るかと思いますが…
$ tail -f /private/var/log/apache2/error_log
これで適宜エラーログを確認することが出来ます.便利!
おつかれさまでした.
何か間違い等ありましたらコメントお願いします. 適宜修正いたします.