alias server='open http://localhost:8000 && python -m SimpleHTTPServer' |
This comment has been minimized.
This comment has been minimized.
You can specify the port number too: # put this in ~/.profile or whatever u use
server() {
open "http://localhost:${1}" && python -m SimpleHTTPServer $1
} E.g.
|
This comment has been minimized.
This comment has been minimized.
Thats hot. Does SimpleHTTPServer ship with OSX 10.7? |
This comment has been minimized.
This comment has been minimized.
@iammerrick, AFAIK, yes. I'm using a relatively fresh install of Lion and it works fine. |
This comment has been minimized.
This comment has been minimized.
ian, yeah it's definitely been in snow leopard since the beginning to it's easy to assume all mac-based developers have it. |
This comment has been minimized.
This comment has been minimized.
I've gone slightly further with my serve bash script. It accepts both an optional port, file, and opens a browser for you. |
This comment has been minimized.
This comment has been minimized.
servedir may be of interest, too. |
This comment has been minimized.
This comment has been minimized.
With PHP 5.4 you can do:
Note: Does not support directory listing. |
This comment has been minimized.
This comment has been minimized.
Not just Mac-based developers. All linux guys have it by default as well. Very handy shortcut to have all around. |
This comment has been minimized.
This comment has been minimized.
SimpleHTTPServer has shipped with Python since forever, so it's cross platform. It takes command line arguments too, so you can specify a port number as the last argument if you like. |
This comment has been minimized.
This comment has been minimized.
@iammerrick @padolsey @paulirish Python's edit:// haha @EmilStenstrom you were faster! In Python 3,
it has to be there. Furthermore many people do not know that the same works with a simple SMTP server (read: email):
|
This comment has been minimized.
This comment has been minimized.
You can also add a default bind port like so: ##
# Quickly starts a webserver from the current directory.
#
# Thanks to:
# http://superuser.com/questions/52483/terminal-tips-and-tricks-for-mac-os-x
#
# @param [optional, Integer] bind port number, default 8000
web_serve() {
$(which python) -m SimpleHTTPServer ${1:-8000}
} (source: https://github.com/fnichol/bashrc/blob/master/bashrc#L874-883) |
This comment has been minimized.
This comment has been minimized.
If you like a bit of Ruby action, especially if you're doing Sass and Compass, this might be of interest: http://get-serve.com/ |
This comment has been minimized.
This comment has been minimized.
And as you add features, etc, you get mongoose. Okay, so it is another sub-100k binary, and it's not using either Python or Ruby, but it reads |
This comment has been minimized.
This comment has been minimized.
I do a lot of Twisted stuff, so my version looks like this:
|
This comment has been minimized.
This comment has been minimized.
no python needed, here's the good ole emergency web server.
or
|
This comment has been minimized.
This comment has been minimized.
Inspired by @padolsey’s snippet, I’ve replaced the # Start an HTTP server from a directory, optionally specifying the port
function server() {
local port="${1:-8000}"
open "http://localhost:${port}/" && python -m SimpleHTTPServer "$port"
} |
This comment has been minimized.
This comment has been minimized.
For a node.js version, made this a while ago: https://github.com/balupton/simple-server |
This comment has been minimized.
This comment has been minimized.
My version: defaults the port, but allows you to override it. And opens the browser with your real hostname, instead of localhost, for pasting to other people.
|
This comment has been minimized.
This comment has been minimized.
Thanks guys, from ubuntu I now do this: function server() {
local port="${1:-8000}"
gnome-open "http://localhost:${port}/"
python -m SimpleHTTPServer "$port"
} |
This comment has been minimized.
This comment has been minimized.
Overcomplicated? function server() {
local port="${1:-8080}"
local phpfiles=$(find . -type f -iname "*.php" | awk 'END {print NR;}')
local phpversion=$(php -v | grep "PHP 5" | sed 's/.*PHP \([^-]*\).*/\1/' | cut -d\ -f 1)
local phpvmajor=$(echo ${phpversion} | cut -d. -f 1)
local phpvminor=$(echo ${phpversion} | cut -d. -f 2)
open "http://localhost:${port}/"
if [ ${phpvmajor} -ge 5 -a ${phpvminor} -ge 4 -a ${phpfiles} -gt 0 ]; then
php -S localhost:${port}
else
python -m SimpleHTTPServer "${port}"
fi
} |
This comment has been minimized.
This comment has been minimized.
This supports simple native servers for Ruby, Sinatra, PHP & fallback to Python server() {
local port="${2:-8000}"
open "http://localhost:${port}/"
if [[ "$1" == "ruby" ]]; then
ruby -run -ehttpd . -p$port
elif [[ "$1" == "sinatra" ]]; then
ruby -rsinatra -e'set :public_folder, "."; set :port, $port'
elif [[ "$1" == "php" ]]; then
php -S localhost:$port
else
# Set the default Content-Type to `text/plain` instead of `application/octet-stream`
# And serve everything as UTF-8 (although not technically correct, this doesn’t break anything for binary files)
python -c $'import SimpleHTTPServer;\nmap = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map;\nmap[""] = "text/plain";\nfor key, value in map.items():\n\tmap[key] = value + ";charset=UTF-8";\nSimpleHTTPServer.test();' "$port"
fi
} |
This comment has been minimized.
This comment has been minimized.
My universal version, works with npm, python, php and can run under windows, linux and mac # Instant Server for Current Directory
# https://gist.github.com/JeffreyWay/1525217
function server()
{
local port=${1:-8000}
iscmd python && {
(sleep 1 && o "http://localhost:${port}/")&
python -m SimpleHTTPServer ${port}
}
iscmd npm && (npm -g ls --depth=0 | grep server@) >/dev/null && {
# Use npm server
(sleep 1 && o "http://localhost:${port}/")&
server ${port}
}
iscmd php && {
(sleep 1 && o "http://localhost:${port}/")&
php -S localhost:${port}
}
} Also in my dotfiles. the iscmd is defined in my dotfiles too. |
This comment has been minimized.
This comment has been minimized.
What about running a PHP built-in development server in a Docker container? server() {
local port="${1:-8000}"
local path="${2:-.}"
(sleep 1 && open "http://localhost:${port}")&
docker run --rm --interactive --tty --name="php-built-in-development-web-server-$port" --publish $port:$port --network="local-network" --volume "$PWD":/usr/src/myapp --workdir /usr/src/myapp --user $(id -u):$(id -g) php:7.2-alpine php -S 0.0.0.0:$port -t $path
} Portable |
This comment has been minimized.
npm install serve -g
This offers a serve command with additional configuration like:
serve -p 3000