Локальный сервер из папки в Windows на GO
Небольшой сервер для хостинга локальных файлов в localhost.
Понадобилось на днях запустить приложение в разработке на локальной Windows машине без каких либо инструментов разработчика.
Сначала сделал PowerShell скрипт. Проблема в том, что для его запуска нужны разрешения на запуск скрптов. В системе обычного юзера который не понимает что и зачем, я бы такого делать не рекомендовал. Но, как временное решение, прокатило.
В итоге, решил поискать маленький локальный сервер на GO
.
Расписывать особо нечего просто вот код:
package main
import (
"flag"
"fmt"
"log"
"net/http"
)
func main() {
portPtr := flag.Int("port", 3000, "port number")
dirPtr := flag.String("dir", ".", "directory")
flag.Parse()
listenPar := fmt.Sprintf(":%d", *portPtr)
fs := http.FileServer(http.Dir(*dirPtr))
http.Handle("/", fs)
log.Println(fmt.Sprintf("Serving directory '%s' on port %d", *dirPtr, *portPtr))
http.ListenAndServe(listenPar, nil)
}
Репозиторий автора:
Написал к нему небольшой скрипт для сборки на bash
. Настроил сборку так, что при запуске билда приложения, одновременно запускается и этот скрипт, который собирает данный сервер для 3 ОС: Windows, Linux, MacOS:
#!/bin/bash
## IMPORTANT: Do not run this script directly. Use the build.sh script in the root of the project.
TARGETS="linux darwin windows"
ARCHS="amd64"
DIR="$(pwd)"
mkdir -p $DIR/dist
# Build the server for each target
for target in $TARGETS; do
for arch in $ARCHS; do
echo "Building $target/$arch"
if [ "$target" == "windows" ]; then
ext=".exe"
else
ext=""
fi
GOOS=$target GOARCH=$arch go build -o $DIR/dist/SERVER-$target-$arch$ext $DIR/dirserver/dirserver.go
done
done