Closed15
CloudRunとPostgreSQL in GCEとの接続を確立
参考にした。。が繋がらず・・
なんか私の設定が悪いのだろう
PostgreSQL in GCEは外部から接続できることを確認
以下のコマンドを同じVPC内の別GCEからアクセスできることを確認した
psql -U db_user -h 10.138.0.4 -p 5432 -d db_name
Django in CloudRun側からの設定がダメっぽいので、それをみていく
localのdockerとPostgreSQL in GCEで通信ができるかを試す
GCEの/etc/postgresql/15/main/pg_hba.conf
にて以下を追加
ローカルとの接続をできるようにするため
host all cooking_recipe 000.000.000.000/32 md5
```
その後再起動
sudo systemctl status postgresql
sslmodeを追加
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
...
'OPTIONS': {
'sslmode': 'require',
}
}
}
データベースの所有者を確認して、返信する
postgres=# SELECT datname, pg_catalog.pg_get_userbyid(datdba) AS owner
FROM pg_database
WHERE datname = 'cooking_recipe';
datname | owner
----------------+----------
cooking_recipe | postgres
postgres=# ALTER DATABASE cooking_recipe OWNER TO cooking_recipe;
ALTER DATABASE
postgres=# SELECT datname, pg_catalog.pg_get_userbyid(datdba) AS owner
FROM pg_database
WHERE datname = 'cooking_recipe';
datname | owner
----------------+----------------
cooking_recipe | cooking_recipe
```
スキーマの所有者も確認
postgres=# SELECT nspname, pg_catalog.pg_get_userbyid(nspowner) AS owner
FROM pg_namespace
WHERE nspname = 'public';
nspname | owner
---------+-------------------
public | pg_database_owner
(1 row)
postgres=# ALTER SCHEMA public OWNER TO cooking_recipe;
ALTER SCHEMA
postgres=# SELECT nspname, pg_catalog.pg_get_userbyid(nspowner) AS owner
FROM pg_namespace
WHERE nspname = 'public';
nspname | owner
---------+----------------
public | cooking_recipe
今はpostgreが起動できない状態
atusibba1014@instance-20240827-105436:~$ sudo journalctl -xeu postgresql.service
....
Oct 09 11:55:39 instance-20240827-105436 pg_ctl[89019]: pg_ctl: another server might be running; trying to start server anyway
/lib/systemd/system/postgresql.service
の設定変更
sudo su -
passwd
## ctrl + D
sudo vi /lib/systemd/system/postgresql.service # typeをforkingに変更する
sudo systemctl daemon-reload
sudo service postgresql restart
できず
こっちはできた
atusibba1014@instance-20241013-005824:~$ sudo systemctl status postgresql@15-main
● postgresql@15-main.service - PostgreSQL Cluster 15-main
Loaded: loaded (/lib/systemd/system/postgresql@.service; enabled-runtime; preset: enabled)
Active: active (running) since Sun 2024-10-13 01:18:58 UTC; 4s ago
Process: 4178 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 15-main start (code=exited, status=0/SUCCESS)
Main PID: 4184 (postgres)
Tasks: 6 (limit: 4682)
Memory: 18.1M
CPU: 198ms
CGroup: /system.slice/system-postgresql.slice/postgresql@15-main.service
├─4184 /usr/lib/postgresql/15/bin/postgres -D /var/lib/postgresql/15/main -c config_file=/etc/postgresql/15/main/postgresql.conf
├─4185 "postgres: 15/main: checkpointer "
├─4186 "postgres: 15/main: background writer "
├─4188 "postgres: 15/main: walwriter "
├─4189 "postgres: 15/main: autovacuum launcher "
└─4190 "postgres: 15/main: logical replication launcher "
Oct 13 01:18:56 instance-20241013-005824 systemd[1]: Starting postgresql@15-main.service - PostgreSQL Cluster 15-main...
Oct 13 01:18:58 instance-20241013-005824 systemd[1]: Started postgresql@15-main.service - PostgreSQL Cluster 15-main.
これが良かったのかも
sudo systemctl restart postgresql@15-main
DBクラスタがまだ初期化されていなかった・・?
それをpostgresql@15-mainのクラスタを作って起動したから良かった?
postgresql.service
自体はメタユニットであるため、それをどのバージョンでどう使うかを定義してあげたことが良かった?serviceと@15-mainは継承の関係にある感じ?
cloudrunからgceに接続ができなく、localのdockerからgceにアクセスしにいくと
以下の通りのエラーが出ていた。
Error: '' is not a valid port number.
shだと変数が正しく取得できないみたい
x
CMD ["sh", "-c", "python manage.py migrate && gunicorn app.wsgi:application --bind 0.0.0.0:$PORT"]
o
CMD python manage.py migrate
CMD gunicorn app.wsgi:application --bind 0.0.0.0:$PORT
GCEへの内部IPを設定した
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'xxzx',
'USER': 'xxx',
'PASSWORD': 'xxx',
'HOST': '10.138.0.4',
'PORT': '5432',
'OPTIONS': {
'sslmode': 'require',
}
}
DONE!!!
料理レシピを一元管理するアプリです。
5レシピまでの登録制限ありますが、良かったら!
このスクラップは1ヶ月前にクローズされました