2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Light sail】AWSのLight SailでPostgresSQLを使用してStrapiを構築する【Strapi】

Last updated at Posted at 2024-11-07

linuxのアップデート

先ずはlight sailのlinuxのパッケージのアップデートを行います

① apt-get update

linuxの内部にあるパッケージのリストを更新する。
実際にインストールするわけでなく、あくまで”リストを更新する”だけです。

② apt-get upgrade

インストール済みのパッケージを先ほど更新したリストに基づいて実際に更新します。
パッケージを最新にすることにより、セキュリティの強化やパフォーマンスの改善が期待できます。

linux
--パッケージリストの更新
$ apt-get update

--パッケージの更新
$ apt-get upgrade

※上記コマンドは権限の関係で permission deniedになる場合があるので、その際はsudoなどで適宜対応してください。

PostgresSQLのインストール

ここから実際にpostgresSQLのインストールを行います。

linux
--postgresのインストール
$ sudo apt install postgresql

--psqlコマンドが使えるようにする
$ sudo apt install postgresql-client

--アプリケーションからpostgresに接続できるようにする
$ sudo apt install libpq-dev

--postgresが正常に動いているかどうか確認
$ sudo systemctl status postgresql

Strapiに使用するデータベースの作成

ユーザー名:postgresにパスワードを付与

$ sudo passwd postgres

postgresユーザーに切り替えます。

$ su postgres
Password:"設定したパスワード"

psqlを起動する

$ psql
psql (15.8 (Debian 15.8-0+deb12u1))
Type "help" for help.
postgres=# 

Strapi用のデータベースを作成する

$ CREATE DATABASE dbname;
CREATE DATABASE

postgresから出る

postgres
postgres=# quit

Strapiのセットアップ

インストール

--プロジェクト作成フォルダに移動
$ cd /opt/bitnami/apache2/htdocs/

--Strapiのインストール
$ npx create-strapi@latest

Need to install the following packages:
create-strapi@5.1.1
Ok to proceed? (y) 

y

Strapi   v5.1.1  Let's create your new project

? What is the name of your project? (my-strapi-project) 

"任意のプロジェクト名"

We can't find any auth credentials in your Strapi config.

Create a free account on Strapi Cloud and benefit from:

- ✦ Blazing-fast ✦ deployment for your projects
- ✦ Exclusive ✦ access to resources to make your project successful
- An ✦ Awesome ✦ community and full enjoyment of Strapi's ecosystem

Start your 14-day free trial now!


? Please log in or sign up. (Use arrow keys)
❯ Login/Sign up 
  Skip 

Skipを選択

? Do you want to use the default database (sqlite) ? (Y/n)
--postgreを今回使用するので、nを選択

n

? Choose your default database client (Use arrow keys)
❯ sqlite 
  postgres 
  mysql 

--postgresを使用するので、postgresを選択

? Database name: 
--作成したDBの名前を入力

? Host: (127.0.0.1)
--デフォルトでOKなのでEnter

? Port: (5432)
--こちらも同様にEnter

? Username:
--任意のユーザー名(今回はpostgres)

? Password: 
--設定したパスワード

? Enable SSL connection: (y/N) 
--特段設定していないので、今回はN

N

? Start with an example structure & data? (y/N) 

N

? Start with Typescript? (Y/n) 
--Typescriptを使いたい人はY

Y

? Install dependencies with npm? (Y/n) 

Y

? Initialize a git repository? (Y/n) 
--gitの設定を行っていないとエラーになるので、今回は設定しません
n

上記完了しましたらStrapiが依存関係と合わせてインストールされます。

ProxyPassを設定する

/opt/bitnami/apache2/conf/httpd.conf
--末尾に以下を追加します
ProxyPass / http://localhost:1337/
ProxyPassReverse / http://localhost:1337/

apacheを再起動します

$ sudo /opt/bitnami/ctlscript.sh restart apache
Restarted apache

pm2のインストール

strapiを動かすにあたり、プロセスマネージャーであるpm2を入れます。

$ sudo npm install pm2 -g
--起動中のプロセスを確認するには
$ pm2 list

--プロセスを停止するには
$ pm2 stop ID等

--ログを見るには
$ pm2 log

開発サーバーの起動

strapiはbuildする一部機能が制限されるため、内部のコンテンツデータ作成等のため、一時的に開発モードで起動します。

$ pm2 start npm --name "任意の名前" -- run develop

DB接続が失敗した場合

以下は実際に私がハマったエラーになります

エラー文
ror: password authentication failed for user "ユーザー名"
以下省略

こちらが実際に今回出たエラー文です。
ユーザー名に対するパスワードの認証エラーとなっています。

原因

私の場合は以下の二でした

①postgresの認証設定によるエラー

postgresではユーザー認証の方法をpg_hba.confというファイルで行っています。
認証方法としては

◆ peer方式
カーネルからクライアント上(light sailのデフォルトではbitnami)のシステムユーザー名を取得しpostgresのデータベースユーザーと一致する場合のみ接続が可能になる

◆ md5方式
MD-5ハッシュ化されたパスワードがクライアントから送信されるパスワードベースの認証方法

◆ scram-sha-256方式
md5よりも安全と言われているため、基本的にはこちらが使われている

◆ trust
サーバーに接続できる全ての人がアクセス可能※非推奨

初期設定ではpeer方式だった以下の部分をscram-sha-256に書き換えました

/etc/postgresql/15/main/pg_hba.conf
#変更前
# Database administrative login by Unix domain socket
local   all             postgres                                peer

#変更後
# Database administrative login by Unix domain socket
local   all             postgres                                scram-sha-256

②postgresへのユーザー認証パスワードが違う

以下の二つのコマンドで使用するパスワードは別だということを認識しておらず上のパスワードを使用していたため、認証できていませんでした。

$ su "ユーザー名"
$ psql -U "ユーザー名" -d "データベース名"

必要なパスワードは下の方のパスワードですが、思いつくものが無かったので一旦リセットして作成し直すことにしました

/etc/postgresql/15/main/pg_hba.conf
#パスワード無しでログインできるように変更
local   all             postgres                                trust

postgresを再起動します

$ sudo service postgresql restart

次にpostgresにログインし、下記のコマンドを実行

ALTER ROLE 'ユーザー名' WITH PASSWORD '新しいパスワード';

これで設定完了です。

結果

postgresの問題も解決して無事にpm2でStrapiの起動、ログインもできました!

postgresのパスワードだけはハマってしまいましたが、他は参考記事の通りに進めたら問題なくいけたので、今後同じ作業も問題なくできそうです!

最後に

この記事を作成するにあたり、下記を参考にさせていただきました。
ありがとうございました。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?