LoginSignup
1
3

More than 5 years have passed since last update.

メモ: デプロイ

Last updated at Posted at 2014-10-15

手動でデプロイすることの問題点

  • 別に手動で問題ない。
    • やり方を知っている人しかデプロイ出来ないという問題あり。
  • 手動に面倒くさくなったらデプロイ方法の改善を考えれば良い
    • 作業漏れの恐れ

とはいうものの

  • 自分しか居ない場合
    • git + scp
    • ある時点から変更されたファイルが何か、後でわかるようにgit使う。
    • 大量の変更の場合は、デプロイ前にディレクトリをバックアップとっておきいつでも戻せるようにしておく。
    • rsyncとsshでローカルコマンド発行

デプロイツール

scpでのデプロイスクリプトの例

deploy.sh
#!/bin/sh
set -eu
export LANG=C

# 検証環境
STAGING="/home/htdocs"

# 本番環境
#WWWDIR=$STAGING
#WWWDIR="/var/www.20141009"
#WWWDIR="/var/www.20141015"
WWWDIR="/var/www"

#----------------------------------------
file_exists() {
    if [ ! -e $STAGING/${1} ];then
      echo "$STAGING/${1} not found."
      exit 1
    fi
    php -l $STAGING/${1} > /dev/null 2>&1 || return 1
}

echo_scp() {
    echo scp -p "$STAGING/${2}" "apache@web${1}.srv:$WWWDIR/${2}"
}

exec_scp() {
    echo web${1}
    scp -p "$STAGING/${2}" "apache@web${1}.srv:$WWWDIR/${2}"
}

#check_diff() {
#    ssh apache@web{1} "cat ${WWWDIR}/${2}" | diff - $STAGING/${2}
#}

if [ ! `whoami` = "apache" ];then
    echo "apacheユーザで実行してください。"
    echo "例) (cd `pwd` && sudo -u apache sh $0)"
    exit 1
fi
#----------------------------------------

# ここにデプロイしたいファイル一覧を列挙
for file in  \
  model/select.php \
  includes/search.php
do
  file_exists $file
  #check_diff 10 $file
  echo_scp 10 $file
  echo_scp 09 $file
  echo_scp 08 $file
  echo_scp 07 $file
  echo_scp 06 $file
  echo_scp 05 $file
  echo_scp 04 $file
  echo_scp 03 $file
  echo_scp 02 $file
  echo_scp 01 $file
  #
  echo "press enter to exec.."
  read ENTER
  exec_scp 10 $file
  exec_scp 09 $file
  exec_scp 08 $file
  exec_scp 07 $file
  exec_scp 06 $file
  exec_scp 05 $file
  exec_scp 04 $file
  exec_scp 03 $file
  exec_scp 02 $file
  exec_scp 01 $file
done
1
3
0

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
1
3