ロリポップでのSSHログインを自動化する

2

目次

実現したいこと

  • Laravelのローカル環境開発
  • GitHubでのコード管理
  • GitHubからロリポップへの自動デプロイ

手順

ローカルからLaravel内に置いたシェルスクリプト(auto-ssh.sh)を実行すると、ロリポップに自動ログインしてp1.shというロリポップ内のシェルスクリプトを実行する。(そのため、p1.shは事前にロリポップサーバー内auto-ssh.shと同階層にアップしておく)

auto-ssh.sh
#!/bin/sh

ACCOUNT="hoge-hoge.jp-hoge"
SERVER="ssh.lolipop.jp"
PASSWORD="XXXXXXXXXXXX"
#下はロリポップサーバー内に設置したシェルスクリプト
FILENAME="./p1.sh"

#ロリポップにSSHログイン
expect -c "
  set timeout 5
  spawn ssh ${ACCOUNT}@${SERVER} -p 2222
  expect \"password:\"
  send \"${PASSWORD}\n\"
  expect \"$\"
  send \"${FILENAME}\n\"
  expect \"Compiled views cleared!\"
  send \"exit\n\"
  interact
"

p1.shではmigrateやキャッシュのクリア、GitHubから最新のcommitをpullして今度はlaravel内に設置したdeploy-lolipop.shを実行する。

p1.sh
#!/bin/bash

cd web/p1
git reset --hard
git pull
echo "-----------------------------------"
git log -1
echo "-----------------------------------"
chmod 755 ./deploy-lolipop.sh
./deploy-lolipop.sh

deploy-lolipop.shではvendor以下をインストールしたり※、マイグレーションしたり、キャッシュ削除したりする。

Laravelではvendorファイルはgitignoreに指定されており、その都度インストールする必要がある。gitignoreファイルを編集して解除する手もあるが非推奨

deploy-lolipop.sh
#!/bin/sh

/usr/local/php/7.3/bin/php ../../composer.phar install --no-dev
cp .env.lolipop .env
/usr/local/php/7.3/bin/php artisan migrate --force
/usr/local/php/7.3/bin/php artisan config:cache
/usr/local/php/7.3/bin/php artisan view:clear
rm -f storage/logs/*.log

ロリポップ内の全ての処理が終わるとロリポップサーバーからログアウトする。

まとめ

これでローカル環境の構築およびローカルからgit pushしたあとにlaravel内のauto-ssh.shシェルスクリプトを実行すればロリポップ側(本番環境)のLaravelもgithubから最新のバージョンにアップデートされる一連の流れができた。ちゃんちゃん。

  • SNSでシェアしよう
  • Twitterでシェア
  • FaceBookでシェア
  • Lineでシェア
  • 記事タイトルとURLをコピー
トップへ戻るボタン

\ HOME /

トップへ戻る