前提
VMware等で仮想マシンを作成して、環境構築する
CentOS 8.3 にて以下をインストールいPHPでDBに接続確認する
PostgreSQL12.5
Apache 2.4.37,
PHP7.2
初期設定
FW
ホストPCから接続できるようにFWを無効にする
なので外部公開する際は、適切に設定すること。
・停止する
・自動起動の確認
```
enabled・・有効
disabled・・無効
・自動起動を無効にする
systemctl disable firewalld
# postgresql12インストール
rootユーザで実施する
・インストールされているか確認する
```dnf list installed | grep postgresql
・あれば削除する
・postgresql12を指定してインストール
・インストールしたバージョン確認
・posturesユーザにスイッチする
DB初期化を行う
※インストール後に必要な作業。
PostgreSQLは、データベースクラスタと呼ばれるディレクトリで設定ファイルやデータベースを管理する。
実行後、/var/lib/pgsql/dataディレクトリ、その配下に各種データベースファイルが作成される
pg_hba.confの設定を行う
このファイルはクライアント認証に関する設定ファイル
・ファイルを開く
・ホストPCからパスワード認証可能にする
下記例では、192.168.配下からの接続をパスワード認証で許可する
host all all 192.168.0.0/16 md5
postgresql.confの設定
他のPCから接続できるように設定する
データベース起動とサンプルデータ作成
・rootに戻る
・DBを起動する
・自動起動の設定
テーブル作成と確認
・postgresユーザにスイッチ
・既定のDBに接続 引数指定なし
・サンプルユーザを作成する
・サンプルDBを作成する
・DBから抜ける
・作成したサンプルユーザでサンプルDBに接続する
・サンプルテーブルを作成する
・サンプルデータをインサートする
・セレクトで結果を確認する
以上
Apacheのインストール
Apache httpdのバージョンがCentOS 7の「2.4.6」から
CentOS 8では「http/2」が利用できる「2.4.37」に変更になった
・インストールされているか確認する
・あれば削除する
・インストールする
・インストールされたバージョン確認
↓実行例
Server version: Apache/2.4.37 (centos)
Server built: Nov 4 2020 03:20:37
・自動起動を有効にする
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
apacheからDB接続を許可に設定する
※これを忘れるとDB接続時にエラーになる
・許可設定を確認する
↓実行例
httpd_can_network_connect_db --> on
・起動する
・起動確認 ブラウザで下記アドレスを開く
http://127.0.0.1/
PHPのインストール
CentOS 7まで利用されていた5.4系ではなく7.2系になった。
インストールに関連する違いとしてはApache httpdがデフォルトで「eventMPM」に対応。
そのため、PHPのインストールと設定手順がCentOS 7と異なる
・Apache のMPMについて
「マルチプロセッシングモジュール」の略。Apacheの並列処理に関する挙動方式
主に以下の3つのモジュールがある
・preforkMPM:安定した通信が可能。アクセスが多いとCPUとメモリを多く使う
・workerMPM:マルチスレッドとマルチプロセスのハイブリッド型。preforkに比べてメモリとCPU使用量が少ない
・eventMPM:Apache2.4系から導入されたマルチスレッドとマルチプロセスのモジュール。CPUとメモリの使用量が少ない
・インストールされているか確認する
・あれば削除する
・インストールするパッケージ
ここでは以下のパッケージをインストール
・基本パッケージ
php.x86_64 : Package that installs PHP 7.2
php-xml.x86_64 : A module for PHP applications which use XML
php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
php-json.x86_64 : JavaScript Object Notation extension for PHP
・マルチバイトド画像処理関連
php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling
php-gd.x86_64 : A module for PHP applications for using the gd graphics library
・Postgre
php-pdo
php-pgsql
・インストールする
・バージョン確認
↓実行例
PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
・Apache再起動する
PHP動作確認
var/www/html 配下に以下ファイルを作成する。
・記載内容
・ブラウザで以下URLを開く
http://127.0.0.1/version.php
・PHPとPostgreSQLの接続確認
PHPからPostgreSQLへの接続確認
var/www/html 配下に以下ファイルを作成する。
・サンプル内容
<head><title>DB_conect_sample</title></head>
<body>
DB_conect_sample<BR>
<br>
<?php
$DBHOST = "127.0.0.1";
$DBPORT = "5432";
$DBNAME = "testdb";
$DBUSER = "testuser";
$DBPASS = "password";
try{
//DB接続
$dbh = new
PDO("pgsql:host=$DBHOST;port=$DBPORT;dbname=$DBNAME;user=$DBUSER;password=$DBPASS");
//SQL
$sql = 'select id,namae from t_user';
foreach ($dbh->query($sql) as $row) {
//指定Columnを一覧表示
print($row['id'].' ');
print($row['namae'].'<br>');
}
}catch(PDOException $e){
print("接続失敗".'<br>');
print($e.'<br>');
die();
}
//データベースへの接続を閉じる
$dbh = null;
?>
</body>
</html>
ブラウザで開く
http://127.0.0.1/test.php
以上
★変更履歴
2021/4/14 Markdown記法で再編集した