⭐
Straipをサーバーで公開する
ローカル開発したStrapiをAWS EC2サーバーで公開します。
1. EC2サーバーを準備する
node.jsをインストールする
pm2との相性を考えて、nvmでインストールします。
# 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