備忘録。
個人開発の小さなプロダクトを作るとき、インフラは何を使えばいい塩梅になるのか。IaaSを使って○○万円も請求が来た!というQiitaの記事を読んで頭を冷やし、いきついた答えはレ ン タ ル サ ー バ ー。PHPが動く、RDBが無料で使える、WAFがついてくる、いくら使っても定額と一見最強に見えます。個人で他の名義でアフィブログをいくつか運営しておりそこでロリポップ!を使っているので今回もロリポップを使ってみることにしました。
というわけでLaravelをロリポップ!にデプロイ!

無事に動きました。
GithubActionsでデプロイする方法
だいぶ昔web制作の仕事をしていたときはFFFTPで手動でデプロイしていたのですが、個人開発とはいえ2021年にもなって手動でデプロイするのは酔狂がすぎるのでmainブランチにプッシュするとデプロイが始まるようパイプラインを引きます。
今回のプロジェクトはソースの管理をgithubで行っているのでGithubAcrionsでデプロイできるようにします。
GitHub Actionsを使用すると、ワールドクラスのCI / CDですべてのソフトウェアワークフローを簡単に自動化できます。 GitHubから直接コードをビルド、テスト、デプロイでき、コードレビュー、ブランチ管理、問題のトリアージを希望どおりに機能させます。
https://github.co.jp/features/actions
SSH用の鍵を作成する
ssh-keygen -t rsa
で鍵を作ります。ロリポップにSSHし公開鍵を/home/users/2/ユーザー名/.ssh
に配置します

ロリポップは管理画面でSSHの情報を確認することができます。
Actions secretsを登録する
GithubでSettings > Actionsを開き環境変数を登録します。

SSHで使用するサーバーの情報と秘密鍵をActions secretsに登録します。他にもソースコードで管理したくない機密情報(DBへの接続情報なども)はここに入れておきます。
GithubActionsでデプロイするためのパイプラインを作る
.github
│ └── workflows
│ └── deploy.yml
上記の位置にdeploy.ymlを置きます。ファイル名はなんでもいいです。これにもりもりワークフローを書いていきます。
name: lolipop
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: ssh key generate
run: |
mkdir -p ~/.ssh/
echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
- name: deploy
working-directory: ./app/laravel
run: |
composer validate
composer install -n --prefer-dist
rsync -auvz -e "ssh -o 'StrictHostKeyChecking no' -i ~/.ssh/id_rsa -p ${{ secrets.SSH_PORT }}" ./ ${{ secrets.SSH_ACCOUNT }}@${{ secrets.SSH_SERVER }}:/home/users/2/path/to/hogehoge
という内容のymlを記載しました。mainブランチにプッシュされると
- ソースコードをチェックアウトする
- 秘密鍵をsecretから作成する
- composerで依存関係をインストールする
- rsyncコマンドでデプロイ
という処理が走ります。今回は説明のため簡易的なものを用意しましたが実際はテストコードの実行や.envファイルへの記入、マイグレーション、フロントエンドのビルドなども行うように処理を書いていきます。
ActionsSecretsに設定した環境変数は${{ secrets.SSH_KEY }}
といった表記で使えます。
メモ
今回のアプリはlaravelのソースコードは./app/laravelに置いています。都度cdで作業ディレクトリを変えなくてもworking-directory: ./app/laravelと書いておけばcdしなくて済みました
コードの変更をpushする

変更をpushすると処理が始まります。これでレンタルサーバーに自動デプロイができるようになりました。
ではでは!