PostgreSQLまたはPostgresは、SQL言語を使用および拡張する、強力なオープンソースのリレーショナルデータベース管理システムです。複雑なデータワークロードを安全に保存およびスケーリングする多くの高度な機能を備えています。 phpPgAdminは、PostgreSQLデータベースを管理および編集するためのPHPベースのアプリケーションです。
このチュートリアルでは、Fedora34ベースのサーバーにPostgreSQLとphpPgAdminをインストールする方法を示します。
-
Fedora34ベースのサーバー。
-
システムを最新の状態に保ちます。
$ sudo dnf update
-
sudo権限を持つroot以外のユーザー。
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
ロールとデータベースは、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
ファイル/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
と入力します ブラウザで。
Crontabエディタを開きます。
$ EDITOR=nano sudo crontab -e
次の行を下部に貼り付けます。
. . .
25 2 * * * /usr/bin/certbot renew --quiet
25 2 * * *
この行の一部は、「毎日午前2時25分に次のコマンドを実行する」ことを意味します。いつでも選択できます。
Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。
SSL証明書は自動的に更新されます。
これで、Fedora34ベースのサーバーにPostgreSQLとphpPgAdminをインストールする方法に関するチュートリアルは終了です。ご不明な点がございましたら、下のコメント欄に投稿してください。