Назад | Перейти на главную страницу

Bash - сценарий развертывания файлов на веб-сервер

Я использую старую машину в качестве веб-сервера для размещения статического сайта, созданного с помощью кода (сайт обслуживает документацию HTML, JS, PDF-файлы и изображения). Старая машина вместе с ПК разработки находятся в домашней сети и подключены к одному модему.

Мы будем благодарны за общие советы, которые касаются приведенных ниже вопросов:

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 одному из DEVELOP или STAGING среды, так что в локальной сети контент будет обслуживаться из этого каталога и доступен в myuser@hostname или просто hostname/ на /etc/host config.

дополнительные детали