Linux:PHP7 与 人大金仓数据库-KingBaseES之应用(实战、手把手教会你)
序言:
近几年“信创”的这个词在整个信息化产业内开始流行,这也是我国信息化的一个必然方向,支持国产发展国产。当然面对这一转变,令我们许多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安装配置
-
安装yum-utils
yum install yum-utils
-
设置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
-
安装nginx
yum install nginx
安装成功!
-
启动nginx服务:
service nginx start
或者
systemctl start nginx.service
#可以通过进程查看是否启动
ps -ef |grep nginx
-
测试nginx
浏览器输入服务器IP地址,(nginx默认是80端口,请注意关闭防火墙或者打开80端口)
systemctl stop firewalld #暂时关闭防火墙,重启后自动开启
php安装配置
-
下载安装包
采用源码方式安装较新的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
-
安装php的依赖包:依次安装即可
yum install gcc
yum install libxml2*
yum install libssl*
- 解压、编译、安装
#解压安装包
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驱动
-
下载kingbase的 php 驱动
https://www.kingbase.com.cn/qd/index.htm
下载后是一个压缩包:php-x86.zip,解压:
-
新建目录/opt/kdblib目录,并把kingbase的php驱动放在该目录下,核心文件是pdo.kdb.so
-
在php配置文件/opt/php/lib/php.ini中, 把pdo_kdb.so的路径加入到extension_dir配置中:
#第1处 引入驱动文件目录
extension_dir = "/opt/kdblib"
#第2处 引入文件完整路径
extension=/opt/kdblib/pdo_kdb.so
-
再重新访问info.php页面,查看Kingbase驱动是否加载成功。POD和pod_kdb 成功加载了驱动。
-
启动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();
}
?>
-
浏览器访问kbo.php页面,打印出成功连接数据库的信息。
-
写一个简单的示例,查询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结合使用过程中遇到的问题提供帮助。