GNU/Linux >> Linux の 問題 >  >> Fedora

Fedora34にPostgreSQLとphpPgAdminをインストールする方法

PostgreSQLまたはPostgresは、SQL言語を使用および拡張する、強力なオープンソースのリレーショナルデータベース管理システムです。複雑なデータワークロードを安全に保存およびスケーリングする多くの高度な機能を備えています。 phpPgAdminは、PostgreSQLデータベースを管理および編集するためのPHPベースのアプリケーションです。

このチュートリアルでは、Fedora34ベースのサーバーにPostgreSQLとphpPgAdminをインストールする方法を示します。

前提条件
  1. Fedora34ベースのサーバー。

  2. システムを最新の状態に保ちます。

    $ sudo dnf update
    
  3. sudo権限を持つroot以外のユーザー。

ステップ1-PostgreSQLをインストールする

Fedora 34には、リポジトリから入手できるさまざまなバージョンのPostgreSQLが付属しています。パッケージと依存関係のコレクションである適切なモジュールを有効にすることで、これらのバージョンから選択できます。

まず、postgresqlの利用可能なストリームを確認します dnfを使用するモジュール コマンド。

$ dnf module list postgresql
Name                        Stream                  Profiles                           Summary
postgresql                  9.6                     client, server [d]                 PostgreSQL module
postgresql                  10                      client, server [d]                 PostgreSQL module
postgresql                  11                      client, server [d]                 PostgreSQL module
postgresql                  12                      client, server                     PostgreSQL module
postgresql                  13                      client, server                     PostgreSQL module

PostgreSQLをインストールするには、対応するモジュールストリームを有効にする必要があります。

$ sudo dnf module enable postgresql:13

プロンプトが表示されたら、Yと入力します ストリームを有効にします。

次に、PostgreSQLサーバーをインストールします。

$ sudo dnf install postgresql-server

contribをインストールすることをお勧めします パッケージ。PostgreSQLデータベースシステムにいくつかの追加機能を追加します。

$ sudo dnf install postgresql-contrib

サーバーがインストールされたので、新しいユーザーを作成する必要があります。

ステップ2-新しいPostgreSQLデータベースクラスターを作成する

まず、新しいPostgreSQLデータベースクラスターを作成する必要があります。データベースクラスターは、単一のサーバーインスタンスによって管理されるデータベースのコレクションです。クラスタを作成すると、データベースが配置されるディレクトリが作成されます。このプロセス全体は、PostgreSQLの初期化にも似ています。

このプロセスにより、template1が作成されます およびpostgres データベース。 template1 databaseは、PostgreSQLが新しいデータベースを作成するために使用するテンプレートです。 postgres データベースは、ユーザー、ユーティリティ、およびサードパーティアプリケーションが使用するデフォルトのデータベースです。

PostgreSQLを初期化するデータベースクラスターを作成するには、次のコマンドを使用します。

$ sudo postgresql-setup --initdb

次に、PostgreSQLサービスを開始します。

$ sudo systemctl start postgresql

PostgreSQLサービスを有効にします。

$ sudo systemctl enable postgresql

PostgreSQLが稼働しているので、新しいユーザーとデータベースを作成して使用を開始できます。

ステップ3-PostgreSQLの役割と認証方法

Postgresは「ロール」の概念を使用して認証と権限を処理します。 PostgreSQLは複数の認証方法をサポートしています。最も一般的に使用される方法は次のとおりです。

  • 信頼 -/var/lib/pgsql/pg_hba.confで定義されている条件である限り、パスワードなしで接続できる役割 満たされています。
  • パスワード -パスワードを使用して接続する役割。パスワードはmd5として保存できます 、scram-sha-256 クリアテキスト。
  • 同一 -クライアントのOSユーザー名が必要であり、TCP/IP接続でのみサポートされます。
  • ピア -Identと同じですが、ローカルホスト接続でのみサポートされます。

Postgresはデフォルトでピア認証を使用します。つまり、Postgresの役割をLinuxユーザーアカウントの一致に関連付けます。 Postgres内にロールが存在する場合、同じ名前のLinuxユーザー名がそのロールとしてサインインできます。クライアント認証の詳細は、/var/lib/pgsql/pg_hba.confに保存されています。 ファイル。

Postgresのインストールプロセスにより、postgresというユーザーアカウントが作成されます。 これはデフォルトのPostgresロールに関連付けられています。

postgresに切り替えます アカウント。

$ sudo -i -u postgres

次のコマンドを使用して、Postgresプロンプトにアクセスできます。

$ psql

これにより、PostgreSQLプロンプトにログインし、さまざまなコマンドを使用してデータベースにアクセスして使用できます。次のように入力してプロンプトを終了できます:

postgres-# \q

これにより、PostgresアカウントのLinuxアカウントに戻ります。終了して自分のユーザーアカウントに戻るには、「exit」と入力します プロンプトで。

次のコマンドを入力して、アカウントを切り替えずにPostgresプロンプトにアクセスすることもできます。

$ sudo -u postgres psql

プロンプトを終了するには、次のように入力します。

postgres-# \q
ステップ4-新しい役割とデータベースを作成します。

ロールとデータベースは、bashシェルまたはpsqlから直接作成できます。 シェル。ここでは、psqlを使用します 仕事が速くなるのでシェル。

まず、psqlに接続します シェル。

$ sudo -u postgres psql

スーパーユーザー、データベースの作成、ロールの作成、ログインなどの権限を持つ新しいPostgreSQLロールを作成します。このユーザーは、チュートリアルで phpPgAdminにログインするためにさらに使用されます。 。

postgres-# CREATE ROLE username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'yourpassword';

次のコマンドを使用して、使用可能なすべてのユーザーを確認できます。

postgres-# \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 username  | Superuser, Create role, Create DB                          | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

新しいデータベースを作成します。

postgres-# CREATE DATABASE userdb;

次のクエリを実行して、作成したデータベースのユーザーに権限を付与します。

postgres-# GRANT ALL PRIVILEGES ON DATABASE userdb TO username;

次のコマンドを使用して、使用可能なすべてのデータベースを確認できます。

postgres-# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 userdb    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres         +
           |          |          |             |             | postgres=CTc/postgres+
           |          |          |             |             | navjot=CTc/postgres
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

ステップ5-PostgreSQLサーバーへのリモートアクセスを有効にする

デフォルトでは、PostgreSQLサーバーはローカルホストインターフェイスでのみリッスンします。 PostgreSQLサーバーへのリモートアクセスを有効にするには、postgresql.confを開きます。 ファイル。

$ sudo nano /var/lib/pgsql/data/postgresql.conf

[接続と認証]セクションまで下にスクロールし、ハッシュ記号を削除して次の行を変更/編集します。

#listen_addresses = 'localhost'         # what IP address(es) to listen on;

行を次のように変更します。

listen_addresses = '*' 			        # what IP address(es) to listen on;

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

次のステップは、pg_hba.confを編集して、リモート接続を受け入れるようにサーバーを構成することです。 ファイル。

$ sudo nano /var/lib/pgsql/data/pg_hba.conf

リモート接続へのアクセスを許可するには、さまざまな方法があります。リモート接続を単一のユーザーまたは単一のデータベース、あるいはそれらすべてに制限し、接続をすべてのIPアドレスまたは信頼できる場所に制限することができます。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# The user jane can access all databases from all locations using an md5 password
host    all             john            0.0.0.0/0                md5

# The user jane can access only the janedb database from all locations using an md5 password
host    johndb          john            0.0.0.0/0                md5

# The user jane can access all databases from a trusted location (192.168.1.110) without a password
host    all             john            192.168.1.110            trust

ファイルには他のエントリもあり、それらにリストされている認証方法はidentです。 。 identの値を変更する必要があります md5へ Webインターフェイスを介してログインする場合。

必要な構成を追加し、 Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

変更を有効にするためにPostgreSQLサーバーを再起動します。

$ sudo systemctl restart postgresql

ssで変更を確認します ユーティリティ。

$ ss -nlt | grep 5432
LISTEN   0    128    0.0.0.0:5432    0.0.0.0:*       
LISTEN   0    128    [::]:5432      [::]:*  

これは、PostgreSQLサーバーがすべてのインターフェースのデフォルトポートでリッスンしていることを示しています。

ステップ6-phpPgAdmin、Nginx、およびPHPをインストールします

phpPgAdminは通常、PostgreSQLまたはFedoraのリポジトリに同梱されていますが、Fedora 34には同梱されていません。したがって、手動でインストールする必要があります。 phpPgAdminに加えて、NginxWebサーバーとPHPソフトウェアもインストールする必要があります。

GithubリリースページからphpPgAdminの最新バージョンをダウンロードします。このチュートリアルを書いている時点で、利用可能な最新バージョンは7.13.0です。

$ wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.gz

ダウンロードしたアーカイブを抽出します。

$ tar -zxvf phpPgAdmin-7.13.0.tar.gz

サイトが存在するディレクトリを作成します。

$ sudo mkdir /var/www/phppgadmin/html -p

抽出したファイルを/var/www/phppgadmin/htmlに移動します ディレクトリ。

$ sudo mv phpPgAdmin-7.13.0/ /var/www/phppgadmin/html

NginxサーバーとPHPを適切なPHPモジュールと一緒にインストールします。

$  sudo dnf install nginx php-fpm php-cli php-pgsql php-mbstring

Fedoraファイアウォールを設定します。

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

ファイアウォールをリロードしてルールをアクティブにします。

$ sudo firewall-cmd --reload
PHPの構成

ファイル/etc/php-fpm.d/www.confを開きます nano editorを使用して編集する場合 。

$ sudo nano /etc/php-fpm.d/www.conf

Unixユーザー/PHPプロセスのグループをnginxに設定する必要があります 。 user=apacheを見つけます およびgroup=apache ファイル内の行をnginxに変更します。

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

PHP-fpmプロセスを再起動します。

$ sudo systemctl restart php-fpm

Nginxを構成する

次のコマンドを実行して、サイトの構成ファイルを追加します。

$ sudo nano /etc/nginx/conf.d/phppgadmin.conf

次のコードをエディターに貼り付けます。

server {
  listen          *:80;
  server_name     phppgadmin.example.com;
  root            /var/www/phppgadmin/html;
  index           index.php;

  location / {
    try_files   $uri $uri/ =404;
  }
    
  access_log /var/log/nginx/phppgadmin.access.log;
  error_log /var/log/nginx/phppgadmin.error.log;

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass  unix:/run/php-fpm/www.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include  fastcgi_params;
  }
}

Ctrl + Xを押します エディターを閉じてYを押します ファイルを保存するように求められたら。

このファイルは、phppgadmin.example.comをホストすることを前提としています。 ディレクトリ/var/www/html/phppgadmin

Nginx構成をテストします。

$ sudo nginx -t

構成が正しいことを示す次の出力が表示されます。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginxサービスを開始して有効にします。

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

http://phppgadmin.example.comを起動します ブラウザにデフォルトのphpPgAdminページが表示されます。

PostgreSQLをクリックします 左側のサイドバーにあるリンクをクリックし、前に作成したユーザーとパスワードを入力して、ログインしてポータルにアクセスします。

ステップ7-SSLのインストール(オプション)

Let'sEncryptSSLサービスを使用してSSLを有効にできます。そのためには、Certbotツールをインストールします。

$ sudo dnf install certbot-nginx

SSL証明書を生成します。

$ sudo certbot --nginx -d phppgadmin.example.com

メールアドレスの入力と利用規約への同意を求められます。 HTTPSアクセスを求められたら、安全な方法を選択して、すべてのリクエストをHTTPからHTTPSにリダイレクトします。

phpPgAdminにアクセスできるはずです https://phppgadmin.example.comと入力します ブラウザで。

自動更新用のSSLの構成

Crontabエディタを開きます。

$ EDITOR=nano sudo crontab -e

次の行を下部に貼り付けます。

. . .
25 2 * * * /usr/bin/certbot renew --quiet

25 2 * * * この行の一部は、「毎日午前2時25分に次のコマンドを実行する」ことを意味します。いつでも選択できます。

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

SSL証明書は自動的に更新されます。

結論

これで、Fedora34ベースのサーバーにPostgreSQLとphpPgAdminをインストールする方法に関するチュートリアルは終了です。ご不明な点がございましたら、下のコメント欄に投稿してください。


Fedora
  1. OpenSUSELeap42.1にPostgreSQLとphpPgAdminをインストールする方法

  2. Ubuntu15.04にPostgresqlとphpPgAdminをインストールする方法

  3. Fedora34にPostgres14をインストールして設定する方法

  1. Fedora35にAnsibleをインストールして設定する方法

  2. Python2とPython3をFedora35にインストールする方法

  3. Fedora35にMariadbをインストールして設定する方法

  1. WindowsにPostgreSQLをダウンロードしてインストールする方法

  2. Ubuntu20.04にPostgreSQLをインストールする方法

  3. Debian10にPostgreSQLをインストールする方法