CentOS,Apache,PHP,PostgreSQLの環境作成メモ 21/3/23更新

 

apache  
    インストールされているか確認 --名称はhttpです
yum list httpd | grep httpd
 
     実行例 [root@cent7php ~]# yum list httpd | grep httpd
~~~
httpd.x86_64                     2.4.6-93.el7.centos                     @base  
 
    削除 sudo yum remove httpd*  
    インストール    
    インストール yum -y install httpd  
    バージョン確認 httpd -v  
    自動起動を有効にする systemctl enable httpd.service  
    apacheでdb接続許可確認する getsebool -a | grep httpd_can_network_connect_db  
     実行例 offだと接続不可
[root@cent7php ~]# getsebool -a | grep httpd_can_network_connect_db
httpd_can_network_connect_db --> off
 
    apacheでdb接続を許可する setsebool -P httpd_can_network_connect_db 1  
     実行例 onだと接続可能
[root@cent7php ~]# getsebool -a | grep httpd_can_network_connect_db
httpd_can_network_connect_db --> on
 
    起動する systemctl start httpd.service  
    接続確認 ブラウザで http://127.0.0.1/ に接続する  
PHP  
    インストールされているか確認 yum list installed | grep php  
     実行例 PHPある場合 [root@cent7php ~]# yum list installed | grep php
oniguruma5php.x86_64                       6.9.6-1.el7.remi           @remi    
php.x86_64                                 7.2.34-2.el7.remi          @remi-php72
~~
 
    phpの削除 yum remove php php-*  
    インストール    
    remiリポジトリ設定 yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm  
    インストール yum -y install --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-pdo_pgsql  php-pdo_pgsql  
    apache再起動 systemctl restart httpd.service  
    テストファイルを作成し確認 ver/www/html 配下に以下ファイルを作成する。
ファイル名:version.php
内容
<?php phpinfo(); ?>
 
    ブラウザでアクセス http://127.0.0.1/version.php  
postgresql  
    インストールされているか確認 yum list installed | grep postgresql  
     実行例 [root@cent7php ~]# yum list installed | grep postgresql
postgresql12.x86_64                        12.2-2PGDG.rhel7           @pgdg12  
postgresql12-libs.x86_64                   12.2-2PGDG.rhel7           @pgdg12  
postgresql12-server.x86_64                 12.2-2PGDG.rhel7           @pgdg12  
 
    削除 yum remove postgresql  
  インストール  
    リポジトリ設定 yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm  
    インストール yum -y install postgresql12-server  
    DB初期化 PGSETUP_INITDB_OPTIONS="-E UTF8 --locale=C" /usr/pgsql-12/bin/postgresql-12-setup initdb  
    DB起動 systemctl start postgresql-12.service  
    自動起動の設定 systemctl enable postgresql-12.service  
  環境設定  
    pg_hba.confの設定 /var/lib/pgsql/12/data/pg_hba.conf  
     他のPCからパスワード認証許可
 ※範囲指定可能
# IPv4 local connections:
host all  all  192.168.0.0/16  password
 
     自端末はパスワード無しでログイン許可 host    all             all             127.0.0.1/32            trust  
    postgresql.confの設定 /var/lib/pgsql/12/data/postgresql.conf  
     他のPCから接続可能にする
 ※範囲指定不可
listen_addresses = '*'  
  DB、テストテーブル作成  
    postgresユーザにスイッチ su - postgres  
    データベース接続 psql postgres  
    データベース作成 CREATE DATABASE testdb;  
    ユーザ作成 CREATE ROLE testuser WITH LOGIN PASSWORD 'password';  
    作成したユーザ確認 select usename from pg_user;  
    作成したdbに接続 psql testdb  
    作成したユーザにDBの全権限付与 GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA testdb To testuser;  
    rootユーザに戻る exit  
    作成したユーザでDBに接続 psql -h 127.0.0.1 -p 5432 -U testuser -d testdb  
    サンプルテーブル作成 CREATE TABLE T_user (  ID nchar(6),  Namae nchar(5) );  
    サンプルデータのインサート INSERT INTO T_user(id,namae) VALUES (1,'織田信長');
INSERT INTO T_user(id,namae) VALUES (2,'豊臣秀吉');
 
    セレクトで確認する SELECT * FROM T_user;  
         
PHPとposgre接続テスト  
    サンプルファイル作成
PHP_PostgreSQL_test.php
<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");
  print("接続成功".'<br>');

  //SQL
  $sql = 'select id,namae from t_user';
  //$sql = 'SELECT 1 AS id, 2 AS namae';

  //SQL実行
  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/PHP_PostgreSQL_test.php  
    よく間違えるとこ apacheネットワーク設定 http://sixwish.jp/Technote/Centos5/php/
    postgresql設定ファイル記述ミス