API サーバーホスティング
Frourio ではクライアントとサーバーを別々にデプロイすることができます。
- npm
- yarn
API サーバーは以下のコマンドで起動します。
npm install --prefix server
npm run build:server
npm run start:server
API サーバーは以下のコマンドで起動します。
yarn install --cwd server
yarn run build:server
yarn run start:server
以下はいくつかの例です。 もちろん、ここに書かれていない方法でデプロイすることもできますので、試してみてください!
Dockerfile
- npm
- yarn
Dockerfile
FROM node:15
RUN mkdir /src
RUN mkdir /src/server
WORKDIR /src
COPY /server/package.json /server/package-lock.json ./server/
RUN npm install --prefix server
COPY . .
EXPOSE 8080
CMD npm run build:server && npm run start:server
Dockerfile
FROM node:15
RUN mkdir /src
RUN mkdir /src/server
WORKDIR /src
COPY /server/package.json /server/yarn.lock ./server/
RUN yarn install --cwd server
COPY . .
EXPOSE 8080
CMD yarn run build:server && yarn run start:server
専用サーバー (with PM2)
| question in create-frourio-app | choice |
|---|---|
| Daemon process manager | PM2 |
| Serverless service | Dedicated server |
Step 1. GitHub Actions Workflow を追加
備考
プロジェクトの作成時に Serverless service として Dedicated server を選択していた場合は、Step 2 に進んでください!
プロジェクト作成時に Dedicated server を選択していなかった場合は、以下の workflow を参考に、デプロイ用 workflow を追加してください。
.github/workflows/deploy-server.yml
.github/workflows/deploy-server.yml
name: Deploy server
on:
push:
branches:
- main
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 14
- uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.API_DEPLOY_SSH_KEY }}
name: id_rsa
# If known_hosts needs to be set, use this.
# known_hosts: ${{ secrets.API_DEPLOY_KNOWN_HOSTS }}
- run: |
npm install -g pm2@^4.5.1
npx pm2 deploy production setup || true
npx pm2 deploy production update
env:
API_DEPLOY_USER: ${{ secrets.API_DEPLOY_USER }}
API_DEPLOY_HOST: ${{ secrets.API_DEPLOY_HOST }}
API_DEPLOY_REPO: https://github.com/${{ github.repository }}.git
API_DATABASE_URL: ${{ secrets.API_DATABASE_URL }}
API_JWT_SECRET: ${{ secrets.API_JWT_SECRET }}
API_USER_ID: ${{ secrets.API_USER_ID }}
API_USER_PASS: ${{ secrets.API_USER_PASS }}
API_ORIGIN: ${{ secrets.API_ORIGIN }}
API_BASE_PATH: ${{ secrets.API_BASE_PATH }}
API_SERVER_PORT: ${{ secrets.API_SERVER_PORT }}
API_UPLOAD_DIR: ${{ secrets.API_UPLOAD_DIR }}
Step 2. リポジトリに Secrets を追加
以下の secrets を GitHub リポジトリに追加してください。
API_BASE_PATH: API の basepath。
例:/apiAPI_DATABASE_URL: MySQL の本番 URL。
例:mysql://mysql-instance1.123456789012.us-east-1.rds.amazonaws.com:3306API_DEPLOY_HOST: 専用サーバーのホスト。
例:ec2-public-ipv4-address.compute-1.amazonaws.comAPI_DEPLOY_USER: SSH ユーザー名。
例:ciAPI_DEPLOY_SSH_KEY: ホストに接続可能な SSH 秘密鍵。
例:ssh-keygen -t rsa -b 4096 -m PEM -f frourio-ci.keyをローカルマシンで実行します。frourio-ci.keyの中身をコピーして secret の値として貼り付けます。frourio-ci.key.pubをホストマシンに送信し、~/.ssh/known_hostsに追加します。
API_UPLOAD_DIR: ユーザーコンテンツ(アイコンなど)をアップロードするためのディレクトリ。
例:/mnt/efs-1/upload,/srv/upload- デフォルトのサンプルでは、アップロードされたアイコンを保存するために使用されます。
AWS Lambda(静的ホスティング)
| question in create-frourio-app | choice |
|---|---|
| API server hosting | Serverless |
| Serverless service | AWS Lambda |
これは 設定が複雑 なので、create-frourio-app で上記の選択肢を選んで、自動で設定するようにしましょう。
create-frourio-app で AWS Lambda を選択した際に表示される説明文の日本語訳は以下の通りです。
注意
AWS Lambda にデプロイするためには、最低限以下のものを用意する必要があります。
- ユーザーからのリクエストに応答するための Lambda 関数。
- この Lambda の名前を GitHub Actions Secrets
LAMBDA_FUNCTION_NAME_SERVERにセットします。
- この Lambda の名前を GitHub Actions Secrets
- マイグレーションを実行するための Lambda 関数。
- この Lambda の名前を GitHub Actions Secrets
LAMBDA_FUNCTION_NAME_MIGRATIONにセットします。 - NOTE: 長めの時間制限を設定することを推奨します。
- この Lambda の名前を GitHub Actions Secrets
- ビルド済みバンドルスクリプトや node_modules などのデプロイアーティファクトをアップロードするための Amazon S3。
- この S3 バケットの名前を GitHub Actions Secrets
S3_BUCKETにセットします。 - オプション: S3 キーのプレフィックスを指定する場合は、secrets に S3_PREFIX` も追加してください。
- 詳しく説明すると、
${S3_BUCKET}/${S3_PREFIX}deployment_server.zipキーがデータを保管するために使用されます。
- この S3 バケットの名前を GitHub Actions Secrets