ssh接続でアップロードしてインストールします
環境はubuntu16.04で、webサーバーはapacheです
このスクリプトはlaravelのルートディレクトリに保存してそのディレクトリに移動してから実行します
DIR_NAME,APACHE_USER,SSH_USERを書き換えて
$./deploy.sh upload
でアップロード
$./deploy.sh install
でインストールします
#!/bin/sh
DIR_NAME="service_name"
APACHE_USER="www-data"
SSH_USER="ubuntu"
case $1 in
"")
echo "./deploy.sh upload then install"
;;
"upload")
#アップロード先のファルダを作成
ssh ${SSH_USER} mkdir -p /var/www/${DIR_NAME}_uploaded
#高速にアップロードするために、ローカルで圧縮してからサーバーにアップロードしてサーバー側で展開する
tar cvf - . | ssh ${SSH_USER} tar xvf - -C /var/www/${DIR_NAME}_uploaded
;;
"install")
#デバッグモードをオフにしてファイルやフォルダの権限を設定
ssh -t ${SSH_USER} "\
sudo sed -i -e "s/APP_DEBUG=true/APP_DEBUG=false/g" /var/www/${DIR_NAME}_uploaded/.env \
&& sudo chown -R ${SSH_USER}:${APACHE_USER} /var/www/${DIR_NAME}_uploaded \
&& sudo chmod -R 750 /var/www/${DIR_NAME}_uploaded \
&& sudo chmod -R 770 /var/www/${DIR_NAME}_uploaded/storage/ /var/www/${DIR_NAME}_uploaded/bootstrap/cache/ \
"
#アップロードしたバージョンと現在稼働中のバージョンが存在しバックアップが存在すればバックアップを削除
ssh ${SSH_USER} "\
[ -d /var/www/${DIR_NAME}_uploaded ] \
&& [ -d /var/www/${DIR_NAME} ] \
&& rm -rf /var/www/${DIR_NAME}_backup \
"
#アップロードしたバージョンと現在稼働中のバージョンが存在すればバックアップに
ssh ${SSH_USER} "\
[ -d /var/www/${DIR_NAME}_uploaded ] \
&& [ -d /var/www/${DIR_NAME} ] \
&& mv /var/www/${DIR_NAME} /var/www/${DIR_NAME}_backup \
"
#アップロードしたバージョンが存在すれば稼働させる
ssh ${SSH_USER} "\
[ -d /var/www/${DIR_NAME}_uploaded ] \
&& mv /var/www/${DIR_NAME}_uploaded /var/www/${DIR_NAME} \
"
;;
esac