やってみないことにはその良さがわからないことはいろいろありますが,その一つにローカルでウェブサーバを立ち上げることがあります.人には見せずに,自分だけのためにウェブサーバを立ち上げるのです.
- 自分のパソコンなんだから,簡単にデータを開くことができるじゃない?
-
HTML ファイルを開きたければ,クリックして開けばいいじゃない.
-
別にウェブ開発なんかしないもの.
などなど,疑問はあるでしょう.やってみないことには,なかなか伝わらなくて,騙されたつもりでやってみて欲しいという心境ではあるのですが,強いて利点を挙げると.
- マニュアルが保存されているフォルダのなかから索引を探し出す手間が省けます.
Python のマニュアルを展開したら何百という数のHTMLファイルが出てきました.そのなかからindex.htmlを見つけて開くのはなかなかやっかいです.ブラウザから localhost/man/python/ を開けば勝手に index.html が見られるのは案外便利なものですよ.
索引のファイル名は index.html, index.shtml, index.cgi, … と一貫していないからややこしいです.
一部のマニュアルをダウンロードするとそれが CGI だったりして,手元で見るのが大変な場合があります.ウェブサーバから直接見られるようになっているとその点も問題なし.
ウェブサーバが動いていたら CGI が利用できます.さっきのポストにも書きましたが,Markdown 形式のファイルをブラウザから開いてプレビュアーとして利用しています.
とはいえ,ウェブブラウザを起動したり管理するのは面倒なんじゃないの?
はい,面倒です.そこで,この記事が紹介する禁断のウェブ設定.普通はセキュリティでガチガチに守られているウェブブラウザの設定を Dropbox にいれてしまおうという甘くて危険なお誘いです.
ところで,ウェブを起動すること自体は簡単です.Mac ユーザなら,ウェブサーバは Mac に付属していて以下のコマンドを実行するだけで起動できます.
sudo apachectl start
でも,早まらないで!ウェブサーバの設定で苦しむ前に,以下の設定を施してからでも遅くはありません.この記事では以下の設定について紹介します.
- 自分の Dropbox フォルダをウェブサイトのルートにする
http://localhost/
を開くと,自分の Dropbox が見えるようになります.
ウェブサーバの設定を Dropbox に保存して,複数の Mac で共有
ウェブサーバの設定は Dropbox に保存して共有するので,新しい設定を加えたときは他の Mac ではウェブサーバを再起動するだけで設定が完了.
Dropbox にウェブサーバの設定を保存する場所を作りましょう
作業は簡単です.
mkdir -p $HOME/Dropbox/lib/apache/{cgi-bin,other}
要するに $HOME/Dropbox/lib/apache
をウェブサーバの設定場所とし,そこに二つのフォルダを作成します.other
は一般的なウェブサーバの設定の保存場所です.なんでother
という名前かというと,本来,/etc/apache2/other
に保存すべき内容をここに保存するからです.cgi-bin
はCGIスクリプトの保管場所です.
ウェブサーバの設定の変更(管理者権限が必要です)
管理者権限を入手して/etc/apache2/httpd.conv
を編集します.
DocumentRoot をDropboxに変更
- Before
- DocumentRoot “/Library/WebServer/Documents”
- After
- DocumentRoot “/Users/ユーザ名/Dropbox”
CGI の保存場所を自分のスクリプト置き場に変更
- Before
-
ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) "/Library/WebServer/CGI-Executables/$1"
- After
ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) "/Users/ユーザ名/Dropbox/lib/apache/cgi-bin/$1"
自分のサーバ設定を読み込む設定を追加
httpd.conf
の最後に以下を追加します.
Include "/Users/ユーザ名/Dropbox/lib/apache/other/*.conf"
以上の設定が有効になれば,たいていの設定作業はDropboxに施すことができます.手近だから簡単ですし,同じ設定をほかのパソコンと共有できるので,何度も同じ設定作業で頭を悩ますことがありません.
Dropbox の設定
Dropbox のデフォルト設定では,グループや他人に対して読み込み権限を与えていないと思います.読み込み権限を確認して必要であれば,追加して下さい.
chmod go+r $HOME/Dropbox
次はウェブサーバの設定(Dropbox/lib/apache/other/dropbox.conf)です.
<Directory "/Users/ユーザ名/Dropbox"> Options Indexes FollowSymLinks MultiViews AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.1 ::1 localhost </Directory>
ウェブサーバでは普通アクセスを許さない場所なので,アクセス権限の設定をしています.セキュリティに鑑み,サーバを動かしている機械からのアクセスのみを許しています.
(おまけ)Markdown 書式用の CGI の設定
ここでは *.md
という名前のファイルを開こうとしたら,それを HTML に変換して閲覧する設定を施します.まず,.md
という拡張子は標準ではサポートされていませんので,これを追加します.(Dropbox/lib/apache/other/markdown.conf)
AddHandler cgi-script .cgi AddHandler text/markdown .md Action text/markdown /cgi-bin/markdown.cgi
ここでは,.md
という拡張子を宣言し,その拡張子をもったファイルのハンドラとして /cgi-bin/markdown.cgi
を指定しています.ちなみにこの,/cgi-bin/markdown.cgi
はScriptAliasMatch
によってDropbox/lib/apache/cgi-bin/markdown.cgi
を指します.
ということで,最後になりましたがそのCGIスクリプトは以下のとおりです.
#!/bin/sh echo "Content-type: text/html\n\n" /opt/brew/bin/multimarkdown -f < $PATH_TRANSLATED
ここでサーバの(再)起動
以上の設定を施したらサーバを起動して下さい.