ロリポップでの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から最新のバージョンにアップデートされる一連の流れができた。ちゃんちゃん。