A smarter lighttpd?

There is an instruction a better way of virtual host setting on Mac at A Smarter MAMP. I tried to set it up with lighttpd instead of Apache2.

DNS server (BIND) settings are the same as the article. The following instruction is setting up lighttpd.

  1. Install lighttpd with MacPorts
    $ sudo port install lighttpd
    
  2. Create lighttpd.conf
    $ cd /opt/local/etc/lighttpd
    $ sudo cp lighttpd.conf.default lighttpd.conf
    
  3. Edit lighttpd.conf and add following line to include custom configuration file
    include "evhost.conf"
    
  4. Modify document root path if necessary
    server.document-root = "/Users/username/Sites/default/public/"
    
  5. Create evhost.conf with the following contents.
    server.modules += ( "mod_evhost" )
    $HTTP["host"] =~ "^[^.]+.[^.]+$" {
        evhost.path-pattern  = "/Users/username/Sites/%1/%2/public/"
    }
    
  6. Create required directories for lighttpd
    $sudo mkdir -p /opt/local/var/run
    $sudo mkdir /var/log/lighttpd
    $sudo chown www:www /var/log/lighttpd
    

Test run.

sudo lighttpd -f /opt/local/etc/lighttpd/lighttpd.conf

And then verify the result.

I’m not sure the regular expression in the above evhost.conf is the best, but it works as I expected.

Advertisements
A smarter lighttpd?

ApacheとBINDでVirtualHostの簡単設定

参照元: A Smarter MAMP

POSTPOSTMODERNに書かれていた、Mac OSX上で、ApacheとBINDを使ってVirtual hostを簡単に設定する方法。この設定をすると、ローカルで新しいサイト用の環境を作るのが簡単になる。

(以下、概要)

古い方法

  1. サイト用のディレクトリを作る。例:
    mkdir -p ~/Sites/domain.com/public
    
  2. /etc/hostsに1行追加する。
    127.0.0.1 domain.dev
    
  3. Apacheの設定ファイルにvirtual hostの設定を追加する。
    <VirtualHost *>
        ServerName domain.dev
        DocumentRoot /Users/jason/Sites/domain.com/public
    </VirtualHost>
    
  4. Apacheをリスタート
    sudo apachectl graceful
    

新しい方法

  1. サイト用のディレクトリを作る。例:
    mkdir -p ~/Sites/domain.com/public
    

終了。

ということで、ローカルに複数サイト用の環境を作るのが楽に。OSXにはデフォルトでBIND (named)が用意されているので、それを利用する。手順は次の通り。

POSTPOSTMODERNのJasonさんはローカル環境で個人用のサイトに.ppm、実験用に.dev、仕事用に.bsiというTLDを使っていて、下のような構成にしてある(一部省略)。

Sites
|-- bsi
|   |-- this
|   `-- that
|-- dev
|   `-- experiment1
`-- ppm
    |-- postpostmodern
    `-- littlebeestudio

それぞれ、

  • this.bsi
  • that.bsi
  • experiment1.dev
  • postpostmodern.ppm
  • littlebeestudio.ppm

となるように設定していく。

rndcのセットアップ

$ sudo -s
# rndc-confgen > /etc/rndc.conf
# head -n 6 /etc/rndc.conf > /etc/rndc.key
# exit
$

DNS zoneファイルの作成

例えば.dev用には次のような内容のファイル dev.zone を/var/namedに作る。

;
; BIND data file for dev sites
;
$TTL    604800
@       IN      SOA     dev. root.dev. (
                     2008101920         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      dev.
@       IN      A       127.0.0.1
*.dev.  14400   IN      A       127.0.0.1

同様のファイルを使用するTLD分作る。

named.confの設定

まず、DNS情報をどこから取得するかを設定する。OpenDNSを使う場合optionセクションのdirectory “/var/named”の後に次の行を追加する。

forwarders {
    208.67.222.222;
    208.67.220.220;
};

そして、作成したzoneファイルの分だけ次のようなセクションを追加する(localhostセクションの次辺りに)。

zone "dev" IN {
  type master;
  file "dev.zone";
};

LaunchDeamonの設定と読み込み

/System/Library/LaunchDaemons/org.isc.named.plist の Disabled を true から false に変更する。

次のコマンドを実行して読み込む。

sudo launchctl load /System/Library/LaunchDaemons/org.isc.named.plist

Apacheの設定

Jasonさんの場合、個人用の設定ファイルが/etc/apache2/usersの下にあるので /etc/apache2/users/jason.conf を次のように設定している。

DocumentRoot "/Users/jason/Sites/default/public/"

NameVirtualHost 127.0.0.1

<VirtualHost 127.0.0.1>
    VirtualDocumentRoot /Users/jason/Sites/%-1/%-2+/public
</VirtualHost>

これで、http://example.dev/にアクセスした場合、/Users/jason/Sites/dev/example/publicが読み込まれるようになる。

そしてApacheをリスタートする。

sudo apachectl graceful

ネットワークの設定

システム環境設定のネットワークで、DNSサーバに127.0.0.1を追加する。

補足

Tigerの場合、apacheのバージョンが1.3で、/etc/httpd/users/username.confを上のようにしても、動かない。うちはTigerなので、MacPortsでApache2をインストールした。

sudo port install apache2
cd /opt/local/apache2/conf
sudo cp httpd.conf.sample httpd.conf

/opt/local/apache2/conf/extraに自分用の設定ファイル(上のjason.confの内容)を作る。

DocumentRoot "/Users/username/Sites/default/public/"

<Directory "/Users/username/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

NameVirtualHost 127.0.0.1

<VirtualHost 127.0.0.1>
    VirtualDocumentRoot /Users/username/Sites/%-1/%-2+/public
</VirtualHost>

httpd.confに次の行を追加。

Include conf/extra/username.conf

Apacheをスタートして、確認。

sudo /opt/local/apache2/bin/apachectl start
ApacheとBINDでVirtualHostの簡単設定

検索結果ページに出る広告の効果が高いのは、ユーザーがその広告を受け入れられるような状況・環境にいるからだ

検索連動型広告=「効果が高い」、本当の理由。: mediologic.com/weblog

(translation)

The reason why advertisement in search results is effective, users are under the situation and/or environment that they can be accepted these advertisements.

# If the above English is not natural, please tell me. I’m studying English. – izmi_at_the_domain_of_this_blog (replace “_at_…” to “@…”)

Quote