Bash - 将文件部署到 Web 服务器的脚本

Bash - 将文件部署到 Web 服务器的脚本

我正在使用一台旧机器作为网络服务器来托管一个静态代码生成的网站(该网站提供 HTML 文档、JS、PDF 和图像)。这台旧机器和开发 PC 都位于家庭网络上,并连接到单个调制解调器。

如果您能提供以下问题的一般建议,我们将不胜感激:

1.下面的 bash 脚本如何扩展部署到我网络上的旧机器?

2.iptables是否需要创建任何规则?(特别是关于#3

3.将来如何扩展脚本以用于生产环境和/或允许访问家庭网络之外的站点?


#! /bin/bash
# deploy.sh

# Note: This script must be run as root or sudo, assumes the user 
# $WEBSERVER is created, and that thttpd is installed.

DEVELOP_ENV="/home/me/www"             # localhost www dir
STAGING_ENV="half_broken_server/www"   # target host www dir to deploy to
WEBSERVER="thttpd"                     # webserver user

function usage {
    printf "deploy [options...] [STAGING|DEVELOP]\n"
}

if [[ "$1" == "STAGING" ]]; then
    # prompt before deploying to staging
    read -p "Deploy to staging server?" -n 1 -r
    echo
    if [[ ! $REPLY =~ ^[Yy]$ ]]; then
        echo "Abort"
        exit 1
    fi
    echo "TODO: Ask StackExchange for help with this part"
elif [[ "$1" == "DEVELOP" ]]; then
    if [ -d dist ]; then
        # make www directory if it does not exist
        if [ ! -d `dirname $DEV_ENV` ]; then 
           mkdir -p $DEVELOP_ENV
        fi
        # copy all files to be served from dist
        cp -rf dist/* $DEVELOP_ENV 
    fi
    # grant read-only perms to local network users
    chmod -R 744 $DEVELOP_ENV 
    # restart the thttpd webserver process (if it is running)
    killall thttpd         
    $WEBSERVER -u $WEBSERVER -d $DEVELOP_ENV

    echo "Deployment sucessful!"
else
    usage
fi

bash 脚本将文件从名为 的目录复制dist到其中一个DEVELOPSTAGING环境中,以便在本地网络上从该目录提供内容并myuser@hostnamehostname/根据/etc/host配置进行访问。

额外细节

  • 所提供的文件完全由代码生成(HTML/ CSS/ JSCLua并且BashMake并且在构建过程中不断变化

  • 网络服务器是thttpd,在基础安装上运行Debian Wheezy

  • 首选:标准Unix实用程序(例如scp, ) ,rsync而不是其他部署框架(例如Fabric,,)或上述语言之一的标准库ChefVagrant

  • 该网络服务器仅用于个人项目工作,不希望其他人使用

相关内容