Ubuntu 上で非 Postgres ユーザーとして PostgreSQL を実行する: 決定版ガイド - Manish R Jain (2023)

私たちは Struct の実稼働デプロイメントのために Postgres を実行しています。まだ発売されていない) ライブコミュニケーションの無秩序な混乱に対処するために私たちが構築しているチャットプラットフォーム。私はデータの保存に PostgreSQL を使用しています — 使いやすさ、ドキュメント、特にコマンドライン ツールに関する数十年にわたる改良により、PostgreSQL を楽しむようになりました。psql(ただし、スキーマ管理に関するいくつかのことは、奇妙に明示的で、時代遅れに感じられます)。どのようにスケールするかはこれからわか​​りますが、今のところはうまくいっていそうです。

I’m firmly in the baremetal camp. And we run our own PostgreSQL server. One of the things we wanted to do is to run it as the linux user that’s running the application server and docker images, called 。これにより、ユーザーを切り替える必要がなくなり、ファイルやシステムの管理が容易になります。

この記事は、PostgreSQL をセットアップして実行するためのガイドです。ポストグレデフォルトのユーザー、および主要使用する Postgres サービス。代わりに、ユーザーと構造体サービス。

Postgres をパージする方法

PostgreSQL 15 を使用する予定です。そのため、まず、システムに付属している既存の Postgres インストールまたは古い Postgres インストールを削除します。これと以下の Postgres のインストールは、オプションステップ。

警告:これらの手順に従うと、すべての Postgres データと構成ファイルが削除されます。これらは、価値のあるデータや構成がない場合、または Postgres データベースをバックアップした場合にのみ実行してください。この記事の最後に使用できるバックアップ コマンドがあります。

$ sudo apt --purge 削除 postgresql\*$ sudo rm -rf /run/postgresql$ sudo rm -rf /etc/postgresql$ sudo rm -rf /var/lib/postgresql

Postgres 15 をインストールする

このセットアップでは Postgres 15 を使用していますが、Postgres の以前のバージョンでも動作するはずです。

以前のバージョンがインストールされており、更新したくない場合は、それに応じてコマンドを調整できます。一部の手順や構成はバージョン間で異なる場合があることに注意してください。

# ファイルリポジトリ設定を作成するsh -c'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'# リポジトリ署名キーをインポートするwget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | /etc/apt/trusted.gpg.d/pgdg.asc &>/dev/null# 利用可能なパッケージのリストを更新しますapt updateapt install postgresql-15 postgresql-client-15 -y

メインの Postgres クラスターを削除する

権限の競合を避けるために、メインの Postgres クラスターを削除することをお勧めします。この手順は、目的の構成がデフォルトの Postgres クラスターによって中断されないようにするために特に重要です。メイン クラスターを削除する理由に興味がある場合は、メイン クラスターが以下の環境で実行されていると考えてください。ポストグレこの設定ではこれを避けようとしています。

最終的な目標は、次の環境で Postgres クラスターを 1 つだけ実行することです。

$ sudo systemctl stop postgres$ sudo pg_dropcluster --stop 15 main

ユーザーをpostgresグループに追加する

を追加すると、ユーザーからポストグレgroup は、Postgres 関連のファイルおよびディレクトリと対話するために必要な権限を付与します。これにより、これらのリソースの権限を手動で変更する必要がなくなり、クリーンな状態が保たれます。

$ sudo usermod -a -G postgresボックス

新しい Postgres クラスターを作成する

新しいクラスターを作成するには、次のコマンドを実行します。pg_createcluster指図。各フラグの役割を詳しく見てみましょう。pg_createcluster指図:

  • -uflag はユーザーを指定します。この場合、
  • -gflag はグループを示します。ポストグレここ。
  • -dflag は、Postgres がファイルを保存するディレクトリを指定します。
  • 人数、個数、総数15は私たちが使用している Postgres のバージョンです、そして
  • 構造体は、作成しているクラスターの名前です。
$ sudo pg_createcluster -u box -g postgres -d /struct/pgdata/struct -e UTF8 --locale C 15 struct# 新しい PostgreSQL クラスター 15/struct を作成します ...# /usr/lib/postgresql/15/bin/initdb -D /struct/pgdata/struct --auth-localpeer --auth-host scram-sha-256 --no-instructions --encoding UTF8 --locale C# このデータベース システムに属するファイルは、ユーザー "box" によって所有されます。# このユーザーはサーバー プロセスも所有している必要があります。# データベース クラスターはロケール "C" で初期化されます。# デフォルトのテキスト検索設定は「english」に設定されます。# データページのチェックサムは無効になっています。# 既存のディレクトリ /struct/pgdata/struct の権限を修正します ... ok# サブディレクトリを作成しています ... OK# 動的共有メモリ実装の選択 ... posix# デフォルトの max_connections を選択 ... 100# デフォルトのshared_buffersを選択 ... 128MB# デフォルトのタイムゾーンを選択します ... Etc/UTC# 設定ファイルを作成します ... OK# ブートストラップ スクリプトを実行しています ... OK# ブートストラップ後の初期化を実行します ... OK# データをディスクに同期しています ... OK# Ver クラスター ポート ステータス 所有者 データ ディレクトリ ログ ファイル# 15 struct 5432 ダウンボックス /struct/pgdata/struct /var/log/postgresql/postgresql-15-struct.log

サーバーのPostgres設定

Postgres を実行している特定のサーバーの設定を確認してみましょう。サーバー固有の最適な設定を行うには、次の場所にあるこのチューニング ツールをお勧めします。https://pgtune.leopard.in.ua/。推奨される構成を生成するために必要なパラメータを変更します。

これは、サーバー用に生成された構成と、設定したパラメーターです。

# DB バージョン: 15# OS タイプ: linux# DB タイプ: web# 総メモリ (RAM): 64 GB# CPU 数: 32# 接続数: 64# データ ストレージ: ssdmax_connections = 64shared_buffers = 16GBEffective_cache_size = 48GBmaintenance_work_mem = 2GBcheckpoint_completion_target = 0.9wal_buffers = 16MBdefault_statistics_target = 100random_page_cost = 1.1Effective_io_concurrency = 200work_mem = 64MBmin_wal_size = 1GBmax_wal_size = 4GBmax_worker_processes = 32max_Parallel_workers_per_gather = 4max_Parallel_workers = 32max_Parallel_maintenance_workers = 4

にそれを追加しました/etc/postgresql/15/struct/postgresql.conf終わりに向かって。

Postgres とのすべての通信がローカルであるか、またはVPN、その場合は必要ありませんSSLの上。実際、これはデフォルトではオフになっているはずです。ただし、これを明示的にオフにすることもできます。

SSL = オフ

これらすべての設定は、ワークロード、ハードウェア、セットアップ、データベース サイズの性質によって異なる場合があることに注意してください。変更を運用サーバーに適用する前に、必ず変更をテストしてください。

サービスを開始する

$ sudo systemctl postgresqlを再起動# 再起動時に自動的に実行されるようにします$ sudoシステムctl有効ポストグレSQL

よく見ると、別のサービスがあります。postgresql@15-struct.service。これは自動的に生成され、postgresql.サービス。したがって、実行するために特別なことは何も必要ありません。ただし、特定のサービスのステータスを確認できるのは良いことです。

$ sudo systemctl status postgresql@15-struct.service

を作成します。DBパスワードを設定してください

$ createdb -O box -E UTF8 構造体

ユーザーのパスワードを設定できるようになりました

$ psql -d structstruct=# hello として「world」を選択します。こんにちは------world(1行)struct=# パスワード「abracadabra」でユーザーボックスを変更します。

上記の手順では、新しいデータベースを作成し、ユーザーのパスワードを設定しました。。それでも、アブラカダブラかなりです魔法のパスワードは多くの扉を開く可能性があるため、強力でユニークで覚えにくいパスワードに必ず置き換えてください。このような機密情報を保存するにはパスワード マネージャーを使用することをお勧めします。1Password をお勧めします。

バックアップと復元

実行中のデータベースができたので、そこにデータを追加します。別の場所で別のデータベースを実行している場合は、それをこのデータベースに移動するとよいでしょう。そのために、バックアップおよび復元操作を実行できます。

# ソースマシンでバックアップを実行します$ pg_dump -F t 構造体 >backup.tar#backup.tar をこのマシンの ~/backups にコピーします# このマシンで復元を実行します$ pg_restore -d struct ~/backups/backup.tar

結論

Ubuntu でデフォルト以外のユーザーで PostgreSQL をセットアップする詳細なプロセスを完了しました。このプロセスは少し複雑ではありますが、サーバーを管理するためのより合理的かつ効率的な方法を提供し、ユーザー アカウントを常に切り替える必要がなくなりました。

実行されるすべてのステップ、実行されるすべてのコマンド、および調整されるすべての設定が、最適化されたシステムの作成に貢献します。改善は継続的な学習と適応によってもたらされることを忘れないでください。ですから、好奇心を持ち続けて探索を続けてください。今日の取り組みにより、明日にはよりスムーズでパフォーマンスの高いアプリケーションが作成されるでしょう。

私はツイッターをしています。ですから、お気軽にメッセージを送ったり、質問したり、あなたの経験を共有してください。幸せなデータの蓄積!

タグ

ポストグレ ubuntu ベアメタル

日にち

2023 年 5 月 19 日

この投稿へのリンク

暗号化された ZFS および Ubuntu 22.04 LTS 上の Postgres 15 私は新しいスタートアップに Postgres を使用しています。このスタートアップはまだステルス モードなので、あまり詳しく話すことはできません。しかし、スタートアップの焦点を考えると、

次に

Cloudflare IP の UFW ルールを自動化してオリジンサーバーを保護する Cloudflare を使用してオリジンサーバーへのトラフィックを管理している場合、受信トラフィックを Cloudflare からのみに制限することができます。これ

以前

TIL: Go レスポンスボディは、読まなくても閉じなければなりません。最近、Go サーバーで goroutine リークを目撃しました。こんな感じでした。オンラインで検索すると、圧倒的なコンセンサスは、

References

Top Articles
Latest Posts
Article information

Author: Pres. Lawanda Wiegand

Last Updated: 03/20/2023

Views: 5287

Rating: 4 / 5 (71 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Pres. Lawanda Wiegand

Birthday: 1993-01-10

Address: Suite 391 6963 Ullrich Shore, Bellefort, WI 01350-7893

Phone: +6806610432415

Job: Dynamic Manufacturing Assistant

Hobby: amateur radio, Taekwondo, Wood carving, Parkour, Skateboarding, Running, Rafting

Introduction: My name is Pres. Lawanda Wiegand, I am a inquisitive, helpful, glamorous, cheerful, open, clever, innocent person who loves writing and wants to share my knowledge and understanding with you.