プログラミング

LaravelをGithubActionsでロリポップ!にデプロイする

備忘録。

個人開発の小さなプロダクトを作るとき、インフラは何を使えばいい塩梅になるのか。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ブランチにプッシュされると

  1. ソースコードをチェックアウトする
  2. 秘密鍵をsecretから作成する
  3. composerで依存関係をインストールする
  4. rsyncコマンドでデプロイ

という処理が走ります。今回は説明のため簡易的なものを用意しましたが実際はテストコードの実行や.envファイルへの記入、マイグレーション、フロントエンドのビルドなども行うように処理を書いていきます。

ActionsSecretsに設定した環境変数は${{ secrets.SSH_KEY }}といった表記で使えます。

メモ

今回のアプリはlaravelのソースコードは./app/laravelに置いています。都度cdで作業ディレクトリを変えなくてもworking-directory: ./app/laravelと書いておけばcdしなくて済みました

コードの変更をpushする

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

ではでは!

-プログラミング

© 2022 ノダガジェット Powered by AFFINGER5