linuxのアップデート
先ずはlight sailのlinuxのパッケージのアップデートを行います
① apt-get update
linuxの内部にあるパッケージのリストを更新する。
実際にインストールするわけでなく、あくまで”リストを更新する”だけです。
② apt-get upgrade
インストール済みのパッケージを先ほど更新したリストに基づいて実際に更新します。
パッケージを最新にすることにより、セキュリティの強化やパフォーマンスの改善が期待できます。
--パッケージリストの更新
$ apt-get update
--パッケージの更新
$ apt-get upgrade
※上記コマンドは権限の関係で permission deniedになる場合があるので、その際はsudoなどで適宜対応してください。
PostgresSQLのインストール
ここから実際にpostgresSQLのインストールを行います。
--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=# 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を設定する
--末尾に以下を追加します
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に書き換えました
#変更前
# 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 "データベース名"
必要なパスワードは下の方のパスワードですが、思いつくものが無かったので一旦リセットして作成し直すことにしました
#パスワード無しでログインできるように変更
local all postgres trust
postgresを再起動します
$ sudo service postgresql restart
次にpostgresにログインし、下記のコマンドを実行
ALTER ROLE 'ユーザー名' WITH PASSWORD '新しいパスワード';
これで設定完了です。
結果
postgresの問題も解決して無事にpm2でStrapiの起動、ログインもできました!
postgresのパスワードだけはハマってしまいましたが、他は参考記事の通りに進めたら問題なくいけたので、今後同じ作業も問題なくできそうです!
最後に
この記事を作成するにあたり、下記を参考にさせていただきました。
ありがとうございました。