Straipをサーバーで公開する

2024/06/30に公開

ローカル開発したStrapiをAWS EC2サーバーで公開します。

1. EC2サーバーを準備する

node.jsをインストールする

pm2との相性を考えて、nvmでインストールします。

https://nodejs.org/en/download/package-manager

# installs nvm (Node Version Manager)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# download and install Node.js (you may need to restart the terminal)
nvm install 18
# verifies the right Node.js version is in the environment
node -v # should print `v18.20.3`
# verifies the right NPM version is in the environment
npm -v # should print `10.7.0`

2. データベースを準備する

Postgresに、データベースユーザーとデータベースを作成します。

CREATE USER strapi WITH PASSWORD 'strapipass';
GRANT strapi TO postgres WITH ADMIN OPTION;
CREATE DATABASE openpit_api OWNER openpit_api;

3. 環境変数を作成する

.evnファイルを作成して、環境変数を設定します。

HOST=0.0.0.0
PORT=1337
APP_KEYS=<>
API_TOKEN_SALT=<>
ADMIN_JWT_SECRET=<>
TRANSFER_TOKEN_SALT=<>
# Database
DATABASE_CLIENT=postgres
DATABASE_HOST=<データベースホストのIPアドレスまたはホスト名>
DATABASE_PORT=5432
DATABASE_NAME=strapi
DATABASE_USERNAME=strapi
DATABASE_PASSWORD=strapipass
DATABASE_SSL=false
JWT_SECRET=<>

4. ビルドする

productionモードで起動するために、strapiをビルドします

cd starpi_app
yarn build

起動する

NODE_ENV=production yarn start

5. pm2で自動起動の設定をする

pm2をインストールします

npm install pm2 -g

設定する

pm2 init simple
File /home/ec2-user/.pm2/ecosystem.config.js generated

生成されたecosystem.config.jsを編集します

vi .pm2/ecosystem.config.js
module.exports = {
  apps : [
    {
      name   : "strapi",
      cwd    : "/home/ec2-user/openpit-api/strapi-app",
      script : "yarn",
      args   : "start",
      env: {
          "NODE_ENV": "production"
      }
    }
  ]
}

起動します

pm2 start .pm2/ecosystem.config.js

saveします

pm2 save

確認します

pm2 list

自動起動を設定する

pm2 startup
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/home/ec2-user/.nvm/versions/node/v18.20.2/bin /home/ec2-user/.nvm/versions/node/v18.20.2/lib/node_modules/pm2/bin/pm2 startup systemd -u ec2-user --hp /home/ec2-user

出力されたコマンドを実行します

sudo env PATH=$PATH:/home/ec2-user/.nvm/versions/node/v18.20.2/bin /home/ec2-user/.nvm/versions/node/v18.20.2/lib/node_modules/pm2/bin/pm2 startup systemd -u ec2-user --hp /home/ec2-user

Discussion