1. php编译

1.1. 安装依赖包

1
yum install sqlite-devel libxml2 libxml2-devel libcurl-devel oniguruma oniguruma-devel

1.2. 编译php

1
2
3
4
cd ~
wget https://www.php.net/distributions/php-7.4.33.tar.gz
cd php-7.4.33
./configure --prefix=/usr/local/php7/ --with-config-file-path=/usr/local/php7 --enable-fpm --enable-mbstring --enable-bcmath --enable-fileinfo --with-openssl --with-zlib --with-iconv --with-curl --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --enable-xml --enable-sockets --enable-soap --enable-cli

如果出现缺少依赖的情况比如下图就是缺少sqllite3的依赖,缺少就用yum安装对应依赖,安装完重新执行./configure --prefix=/usr/local/php7/ --with-config-file-path=/usr/local/php7

1
2
3
4
5
6
7
8
9
10
configure: error: Package requirements (sqlite3 > 3.7.4) were not met:

Package 'sqlite3', required by 'virtual:world', not found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables SQLITE_CFLAGS
and SQLITE_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

一直到出现下面的提示,才算成功,缺少什么依赖就yum安装什么依赖

1
2
3
4
5
6
7
8
9
10
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+

Thank you for using PHP.

编译并安装

1
make && make install

一直到出现 Build complete提示就成功了,类似下面这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Build complete.
Don't forget to run 'make test'.

Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-non-zts-20190902/
Installing PHP CLI binary: /usr/local/php7/bin/
Installing PHP CLI man page: /usr/local/php7/php/man/man1/
Installing phpdbg binary: /usr/local/php7/bin/
Installing phpdbg man page: /usr/local/php7/php/man/man1/
Installing PHP CGI binary: /usr/local/php7/bin/
Installing PHP CGI man page: /usr/local/php7/php/man/man1/
Installing build environment: /usr/local/php7/lib/php/build/
Installing header files: /usr/local/php7/include/php/
Installing helper programs: /usr/local/php7/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php7/php/man/man1/
page: phpize.1
page: php-config.1
/root/php-7.4.33/build/shtool install -c ext/phar/phar.phar /usr/local/php7/bin/phar.phar
ln -s -f phar.phar /usr/local/php7/bin/phar
Installing PDO headers: /usr/local/php7/include/php/ext/pdo/

1.3. 配置php

配置php.ini 给php执行程序建立软连接

1
2
cp php.ini-production /usr/local/php7/php.ini
ln -s /usr/local/php7/bin/php /usr/bin/php

可以执行php -mphp -v测试php是否安装成功

2. 安装达梦数据库DM8

2.1. 准备环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
cd ~
# 下载
wget https://download.dameng.com/eco/adapter/DM8/202401END/dm8_20231226_HWarm920_kylin10_sp1_64.zip
# 解压
unzip dm8_20231226_HWarm920_kylin10_sp1_64.zip -d ~/dm8
cd ~/dm8
# 创建用户所在的组
groupadd dinstall
# 创建用户
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
# 修改用户密码 需要输入两次密码 注意密码要一致同时最好大小写字母+数字
passwd dmdba
# 修改文件打开最大数(重启服务器后永久生效) 下面多行一起复制到EOF再粘贴 回车
cat >> /etc/security/limits.conf <<EOF
dmdba hard nofile 65536
dmdba soft nofile 65536
dmdba hard stack 32768
dmdba soft stack 16384
EOF

# 挂载iso安装盘
mount dm8_20231226_HWarm920_kylin10_sp1_64.iso /mnt
# 创建目录用于安装达梦数据库
mkdir /usr/local/dm8
# 查看临时目录大小
df -h
1
2
3
4
5
6
7
8
9
10
11
[root@ecs-9883 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.5G 0 1.5G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 1.8G 14M 1.7G 1% /run
tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
/dev/vda2 39G 6.3G 30G 18% /
tmpfs 1.8G 64K 1.8G 1% /tmp
/dev/vda1 1022M 5.8M 1017M 1% /boot/efi
tmpfs 349M 0 349M 0% /run/user/0
/dev/loop0 984M 984M 0 100% /mnt

注意检查/tmp,这里显示Size只有1.8G,达梦要求临时目录最小为2G。所以需要执行一个指定临时目录的命令,够大的不用执行。

1
2
3
4
5
6
# 给dmdba用户授予dm8安装目录权限
chown dmdba:dinstall -R /usr/local/dm8/
chmod -R 755 /usr/local/dm8

# 切换到dmdba用户
su - dmdba

指定临时目录 /tmp 目录够大的省略下面这两行

1
2
mkdir ~/tmp
export DM_INSTALL_TMPDIR=~/tmp

2.2. 安装

1
2
cd /mnt
./DMInstall.bin -i

提示输入key时输入n 不输入

1
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n

安装类型为1典型安装

1
2
3
4
5
6
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:1

请选择安装目录输入我们自己创建的目录/usr/local/dm8

1
2
3
请选择安装目录 [/home/dmdba/dmdbms]:/usr/local/dm8
可用空间: 27G
是否确认安装路径(/usr/local/dm8)? (Y/y:是 N/n:否) [Y/y]:y

安装完成按照提示执行

请以root系统用户执行命令:
/usr/local/dm8/script/root/root_installer.sh

安装结束

1
2
3
4
# 切换回root用户
su - root
# 执行
/usr/local/dm8/script/root/root_installer.sh

3. 给PHP配置达梦数据库

1
2
3
# 复制达梦的php库到php库目录
cp /usr/local/dm8/drivers/php_pdo/php74* /usr/local/php7/lib/
cp /usr/local/dm8/drivers/php_pdo/libphp74* /usr/local/php7/lib/

修改/usr/local/php7/php.ini文件,添加达梦配置,可以使用vi命令或sftp客户端修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[PHP_DM]
extension_dir ="/usr/local/php7/lib/"
extension=libphp74_dm.so
extension=php74_pdo_dm.so
[dm]
dm.port=5236
; 是否允许持久性连接
dm.allow_persistent = 1
; 允许建立持久性连接的最大数. -1 为没有限制.
dm.max_persistent = -1
; 允许建立连接的最大数(包括持久性连接). -1 为没有限制.
dm.max_links = -1
; 默认的主机地址
dm.default_host = localhost
; 默认登录的数据库
dm.default_db = SYSTEM
; 默认的连接用户名
dm.default_user = SYSDBA
; 默认的连接口令.
dm.default_pw = SYSDBA
;连接超时,这个参数未实际的用到,等待服务器支持
dm.connect_timeout = 10
;对于各种变长数据类型,每列最大读取的字节数。如果它设置为 0 或是小于 0,那么,读取变长字段时,将显示 NULL 值
dm.defaultlrl = 4096
; 是否读取二进制类型数据,如果它设置为 0,那么二进制将被 NULL 值代替
dm.defaultbinmode = 1
;是否允许检察持久性连接的有效性,如果设置为 ON,那么当重用一个持久性连接时,会检察该连接是否还有效
dm.check_persistent = ON

设置环境变量指定达梦数据库的安装位置

1
2
3
4
5
cd /etc/ld.so.conf.d/
# 在此目录下创建dm.conf文件
touch dm.conf
# 编辑文件在文件里写上达梦的执行文件路径 /usr/local/dm8/bin 也可以用sftp客户端操作
vi dm.conf

执行ldconfig使环境遍历生效,此时可以执行php -m检验。