3
5

More than 3 years have passed since last update.

Svelteで生成したページをレンタルサーバに自動デプロイする

Last updated at Posted at 2020-08-19

はじめに

ssh で接続可能な任意のサーバに GitHub Actions で master ブランチに push された時デプロイする仕組みを作りました。
さくらのレンタルサーバ(月額500円程度)でも使えるので、Webサイトなどを GitHub で管理しながら運用するのに使えるのではないでしょうか。
今回は、Svelte で生成した静的ファイルを配置するようにしていますが Next.js や NuxtJS でも同様にデプロイできます。

VSCode を起動

image.png

プロジェクト用フォルダを作成

image.png
ここでは svelte というフォルダを作成しました。

Dockerfile 作成

./Dockerfile
FROM node:alpine
RUN apk update && apk add git

image.png

Reopen in Container で From Dockerfile を選択しコンテナに入る

左下の image.png を押すとメニューが出ます。

image.png

image.png

作成された .devcontainer/devcontainer.json に Svelte 拡張機能を追加

.devcontainer/devcontainer.json変更前
    "extensions": []
.devcontainer/devcontainer.json変更後
    "extensions": ["svelte.svelte-vscode"]

image.png

Rebuild Container で拡張機能を有効にする

左下の image.png を押して選択します。
image.png

ターミナルを開いて Svelte プロジェクト作成コマンド実行

プロジェクト作成
npx degit sveltejs/template --force

メニューの Terminal / New Terminal でターミナルを開けます。
image.png

image.png

必要なパッケージをインストール

パッケージインストール
yarn

開発サーバ起動

package.json ファイルを選択すると、 NPM SCRIPTS が表示されますので、その中の dev の三角ボタンをクリックします。

image.png

ブラウザで確認

image.png

git管理開始

image.png を押して、Source Control に切り替えます。

image.png
Publish to GitHub を押します。

image.png
ブラウザが起動して認証画面が表示されますので、 Continue を押します。

image.png
GitHub にログインして Authorize github を選択します。

image.png
連携用の token が発行されますので、コピーして VSCode に貼り付けます。

image.png
private リポジトリに Publish します。

image.png
Publish が完了しました。

image.png
右下の Open In GitHub を押すと GitHub のリポジトリが確認できます。

GitHub Actions 用ファイル作成

.github/workflows/deploy.yml
name: deploy with scp

on:
  push:
    branches:
      - master

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1 
      - run: sudo apt-get -y install sshpass
      - run: yarn
      - run: yarn build
      - run: sshpass -p '${{secrets.PASSWORD}}' scp -rvo StrictHostKeyChecking=no ./public/* ${{secrets.REMOTE}}

secrets.PASSWORD には、sshで接続する際のパスワード を sshpass で指定しています。実際の値は後ほど設定します。
REMOTE には、ユーザ名@ホスト名:コピー先のパス を指定します。今回はデプロイ先を切り替えられるようにこうしましたが、
デプロイ先が固定なら直書きのほうが手っ取り早いです。

image.png
最上位フォルダにあるファイルを選択した状態で、ファイル作成ボタンimage.pngを押します。

image.png
.github/workflows/deploy.yml ファイルを作成します。

image.png

コミット

Source Control に切り替え、コミットコメントを入力し(ここでは、「add github actions file」)コミットボタンimage.pngを押します。
image.png

GitHub の Settings / Secret で PASSWORD, REMOTE を作成

PASSWORD には、sshのパスワード、
REMOTE には、ユーザ名@ホスト名:コピー先のパス を指定

image.png
New secret ボタンで作成できます。

image.png

さくらのレンタルサーバの場合はさくらの管理画面にログインし国外IPアドレスフィルタを OFF にする

image.png
image.png
※GitHub は海外のサーバのため、これをしないと scp の認証時にエラーになります。

GitHub に Push

View and More Actions... ボタンimage.pngから Push を選択します。
image.png

GitHub Actions の状態を確認

image.png
All workflows の add github actions file をクリックすると実行状態を確認できます。

image.png
全て緑のチェックがついていれば正常終了です
※Run sshpass の行でエラーになっている場合は、Secrets の設定名や内容が間違っていないか、国外IPアドレスフィルタがONになっていないかなどを確認してください。

サイトの確認

デプロイ先のレンタルサーバ等のURLにアクセスして表示されれば成功です。

image.png

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5