禁断のウェブ設定


やってみないことにはその良さがわからないことはいろいろありますが,その一つにローカルでウェブサーバを立ち上げることがあります.人には見せずに,自分だけのためにウェブサーバを立ち上げるのです.

  • 自分のパソコンなんだから,簡単にデータを開くことができるじゃない?
  • 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
    

    でも,早まらないで!ウェブサーバの設定で苦しむ前に,以下の設定を施してからでも遅くはありません.この記事では以下の設定について紹介します.

    1. 自分の 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.cgiScriptAliasMatchによってDropbox/lib/apache/cgi-bin/markdown.cgiを指します.

    ということで,最後になりましたがそのCGIスクリプトは以下のとおりです.

    #!/bin/sh
    echo "Content-type: text/html\n\n"
    /opt/brew/bin/multimarkdown -f < $PATH_TRANSLATED
    

    ここでサーバの(再)起動

    以上の設定を施したらサーバを起動して下さい.