LoginSignup
4
6

More than 5 years have passed since last update.

さくっと簡易Webサーバを立てる

Last updated at Posted at 2016-07-12
1 / 6

はじめに

最近以下の様なReactとかいろんな記事が出ていて試そうと思うけど、

生のReactを知ろう – JSX、Flux、ES6、Webpackを使わず… | プログラミング | POSTD

Webサーバどう立てようのようなことがちょくちょくあり、普通にApacheとかnginxを立ててやってもいいんですが、少しだけ写経したいとかの時にわざわざ設定するのも面倒だなという方向けの記事です。


簡易Webサーバをコマンド化

前提条件

PHP5.3以上で使えるビルトインサーバを使う想定です。
RubyやPythonなどでもコマンドから起動することは出来ますが、たまにPHPも一緒に動かしたい時があったりするので、 PHP5.3以上 が入っていることを前提とします。


スクリプトについて

以下のシェルスクリプトを serve という名前で PATH の通っているところへ配置したとします。

実行方法

カレントディレクトリをドキュメントルートとして8080ポートで起動
$ serve 

オプション
-t path/to/public : /path/to/public をドキュメントルートとして起動
-p 4000           : ポートを4000として起動

オプションを何も指定しなければ、 http://localhost:8080 でアクセスできます。


スクリプト本体

#!/bin/sh

usage_exit() {
  echo "Usage $0 [-h] [-t target-dir=.] [-p port=8080]"
  exit 1
}

# デフォルト値
target="."
port=8080

while getopts ht:p: option; do
  case $option in
    h)  usage_exit
        ;;
    t)  target=$OPTARG
        ;;
    p)  port=$OPTARG
        ;;
    \?) usage_exit
        ;;
  esac
done

shift $((OPTIND - 1))

### exec
## php5.3+
php -S localhost:$port -t $target

## rubyのwebrickを使う方法
# ruby -run -e httpd $target -p $port

注意事項

条件付きGET や 部分GET など特殊なリクエストヘッダの機能を利用したアプリケーションの場合は、素直に nginx や Apache を立ててやった方がいいかもしれません。
部分GET を試した時は 206 のステータスにならず、若干ハマりました。。。

4
6
1

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
4
6