Linux:人大金仓数据库-KingBaseES V8与 php7的连接配置

发布时间 2023-08-18 16:48:56作者: 柴高八斗

序言: 

    近几年“信创”的这个词在整个信息化产业内开始流行,这也是我国信息化的一个必然方向,支持国产发展国产。当然面对这一转变,令我们许多IT行业的使用者来说是一个挑战,不得不面临数据库、中间件、操作系统的切换,在实际中我们面对的问题比较多,而现在互联网上相关问题的解决方案却甚少,毕竟这需要有千千万万的程序员,架构师们不停的尝试,发现问题,解决问题,我想未来信创产业会成为主流。不说了,进入正题。

解决的问题:在CentOS-Linux系统环境下,搭建KingBaseES数据库同php7,完整的安装配置,实例说明,希望对大家有帮助。

环境

CPU:x86_64

OS:CentOS Linux release 7.5

nginx: nginx/1.24.0

php : 7.2.34

db: KingbaseES V8R6

nginx安装配置

  1. 安装yum-utils

yum install yum-utils
  1. 设置yum源,创建文件/etc/yum.repos.d/nginx.repo

[root@localhost etc]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# touch nginx.repo
[root@localhost yum.repos.d]# vim nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
  1. 安装nginx

yum install nginx

安装成功!

  1. 启动nginx服务:

service nginx start
或者
systemctl start nginx.service

#可以通过进程查看是否启动
ps -ef |grep nginx

  1. 测试nginx

浏览器输入服务器IP地址,(nginx默认是80端口,请注意关闭防火墙或者打开80端口)

systemctl stop firewalld #暂时关闭防火墙,重启后自动开启

php安装配置

  1. 下载安装包
    采用源码方式安装较新的php 7.2.34版本, 首先下载php 7.2.34源码包(https://www.php.net/downloads.php)

下载地址:https://www.php.net/releases/#7.2.34

下载安装

#安装wget下载命令
yum -y install wget

#下载php安装包
wget https://www.php.net/distributions/php-7.2.34.tar.gz
  1. 安装php的依赖包:依次安装即可

yum install gcc
yum install libxml2*
yum install libssl*
  1. 解压、编译、安装
#解压安装包
tar -zxvf php-7.2.34.tar.gz
cd php-7.2.34
 
#配置
 ./configure --prefix=/opt/php --enable-fpm #启用php-fpm
 --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd 
 --with-mysql-sock=/tmp/mysql.sock --enable-mysqlnd 
 
 #编译安装
 make & make install

配置php-fpm

#创建一个www用户来启动运行php-fpm进程
useradd -s /sbin/nologin www

#拷贝一份php-fpm的配置文件
cd /opt/php/etc
cp php-fpm.conf.default  php-fpm.conf

#编辑php-fpm.conf文件,并修改
vim php-fpm.conf    
#去掉注释:pid = run/php-fpm.pid

cd /opt/php/etc/php-fpm.d/
cp www.conf.default www.conf
#编辑www.conf文件,并修改 user = www group = www listen = 127.0.0.1:9000

配置nginx代理

把php页面请求转发送至php-fpm

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
# 处理php页面请求  add by qin
    location ~ \.php$ {      # 匹配php后缀的请求   
        root /data/www;      # php页面映射本地路径/data/www
        fastcgi_pass  localhost:9000;   # php-fpm本地端口为9000
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

启动 php-fpm

#启动php-fpm
cd /opt/php/sbin
./php-fpm #启动

#查看启动进程php-fpm
ps -ef|grep php-fpm

浏览器访问 http://192.168.100.128/info.php

以上表示php的环境搭建成功。

配置php与kingBase驱动

  1. 下载kingbase的 php 驱动

https://www.kingbase.com.cn/qd/index.htm

下载后是一个压缩包:php-x86.zip,解压:

  1. 新建目录/opt/kdblib目录,并把kingbase的php驱动放在该目录下,核心文件是pdo.kdb.so

  1. 在php配置文件/opt/php/lib/php.ini中, 把pdo_kdb.so的路径加入到extension_dir配置中:

#第1处 引入驱动文件目录
extension_dir = "/opt/kdblib"

#第2处 引入文件完整路径
extension=/opt/kdblib/pdo_kdb.so
  1. 再重新访问info.php页面,查看Kingbase驱动是否加载成功。POD和pod_kdb 成功加载了驱动。

  1. 启动kingbase服务,新建一个来测试连接kingbase数据库测试页面kbo.php

<?php
  $dsn = 'kdb:host=192.168.100.128;port=54321;dbname=test';
try {
  //connect to the db
  $pdo = new PDO($dsn, "system", "Kingbase123");
  if(!$pdo){
     echo "Error : Unable to open database\n";
  } 
  else {
     echo "Opened database successfully\n";
  }

} catch (PDOException $e) {
  $error_message = $e->getMessage();
  echo $error_message;
  exit();
}

?>
  1. 浏览器访问kbo.php页面,打印出成功连接数据库的信息。

  1. 写一个简单的示例,查询test数据库下的t_user表信息。

<?php
  $dsn = 'kdb:host=192.168.100.128;port=54321;dbname=test';
try {
  //connect to the db
  $pdo = new PDO($dsn, "system", "Kingbase123");
  if(!$pdo){
    echo "Error : Unable to open database\n";
  } else {
    // echo "Opened database successfully\n";
    queryData($pdo);
  }

} catch (PDOException $e) {
  $error_message = $e->getMessage();
  echo $error_message;
  exit();
}

//查询数据
function queryData($pdo){
  $sql = "select * from t_user;";
  $stmt = $pdo->prepare($sql);
  if($stmt===false){
    var_dump($pdo->errorInfo());die;
  }
  $rs = $stmt->execute();
  if ($rs) {
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
      var_dump($row);
    }
  }
}
?>

查询并成功输出用户信息。

总结

本篇文章内容完整的叙述了,关于通过php语言,连接kingBase数据库的完整过程。nginx环境的安装及代理的搭建,php-fpm环境的安装配置,最后重要的一步是KingBase数据库驱动的配置,以及提供了测试用的示例。希望本篇文章能对于困扰与php与人大金仓数据库Kingbase结合使用过程中遇到的问题提供帮助。