0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CentOS8でApache+PHP7+PostgreSQL12の環境構築

Last updated at Posted at 2021-04-11

前提

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を指定してインストール

12/server postgresql:12/client

・インストールしたバージョン確認

・posturesユーザにスイッチする

DB初期化を行う

 ※インストール後に必要な作業。
PostgreSQLは、データベースクラスタと呼ばれるディレクトリで設定ファイルやデータベースを管理する。

 実行後、/var/lib/pgsql/dataディレクトリ、その配下に各種データベースファイルが作成される

pg_hba.confの設定を行う

 
このファイルはクライアント認証に関する設定ファイル

・ファイルを開く

vi /var/lib/pgsql/data/pg_hba.conf

・ホストPCからパスワード認証可能にする
 下記例では、192.168.配下からの接続をパスワード認証で許可する

host    all             all             192.168.0.0/16          md5

postgresql.confの設定

他のPCから接続できるように設定する

データベース起動とサンプルデータ作成

・rootに戻る

・DBを起動する

systemctl start postgresql.service

・自動起動の設定

systemctl enable postgresql.service

テーブル作成と確認

・postgresユーザにスイッチ

・既定のDBに接続 引数指定なし

・サンプルユーザを作成する

・サンプルDBを作成する

・DBから抜ける

・作成したサンプルユーザでサンプルDBに接続する

psql -h 127.0.0.1 -p 5432 -U testuser -d testdb

・サンプルテーブルを作成する

・サンプルデータをインサートする

・セレクトで結果を確認する

以上

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

・自動起動を有効にする

# systemctl enable httpd.service

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 配下に以下ファイルを作成する。

vi var/www/html/version.php

・記載内容

・ブラウザで以下URLを開く
http://127.0.0.1/version.php

・PHPとPostgreSQLの接続確認

PHPからPostgreSQLへの接続確認

var/www/html 配下に以下ファイルを作成する。

vi var/www/html/test.php

・サンプル内容

<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記法で再編集した

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?