Ubuntu 上配置 Informix 网络的实用步骤
一 系统网络准备
- 查看网卡名称:ip addr show(记下如 eth0/enp0s3 等)。
- Ubuntu 18.04+ 通常使用 netplan:编辑 /etc/netplan/*.yaml(如 50-cloud-init.yaml),示例:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers: { addresses: [8.8.8.8, 8.8.4.4] }
- 应用:sudo netplan apply;验证:ip addr show eth0。
- 如为云主机或使用了 cloud-init,修改后可能需要 sudo netplan try 或重新生成 cloud-init 网络配置。
二 服务器端网络与实例配置
- 环境变量(以 informix 用户执行):
export INFORMIXDIR=/opt/IBM/informix
export INFORMIXSERVER=informix
export ONCONFIG=onconfig.informix
export PATH=$INFORMIXDIR/bin:$PATH
export LD_LIBRARY_PATH=$INFORMIXDIR/lib:$LD_LIBRARY_PATH
- 配置监听协议(编辑 $INFORMIXDIR/etc/onconfig):
- NETTYPE 行示例:NETTYPE onsoctcp,1,8,CPU(启用 TCP 套接字)
- 如需本地共享内存:CPUNETTYPE ipcshm,1,8,CPU
- 注册服务端口(编辑 /etc/services):
informix_services 8888/tcp(端口可自定义,建议避开知名端口)
- 配置 $INFORMIXDIR/etc/sqlhosts:
informix onsoctcp your_server_hostname informix_services
说明:协议 onsoctcp 为 TCP,主机名需在 /etc/hosts 可解析,服务名与 /etc/services 一致。
- 启动实例:oninit -iv(首次初始化可用 -iv,之后用 oninit 或 onmode 管理)。
三 客户端连接配置
- 安装客户端(DEB 可直接安装,RPM 可用 alien 转换后安装),并设置环境变量:
export INFORMIXDIR=/opt/informix
export LD_LIBRARY_PATH=$INFORMIXDIR/lib:$LD_LIBRARY_PATH
export PATH=$INFORMIXDIR/bin:$PATH
- 配置 sqlhosts(客户端可使用独立文件,如 ~/.sqlhosts 或 $INFORMIXDIR/etc/sqlhosts):
myserver onsoctcp server_ip 8888
说明:myserver 为连接别名,server_ip 为数据库服务器地址,8888 为 /etc/services 中定义的服务端口。
- 测试连接:isql -v myserver username password(成功将进入 SQL 提示符)。
四 防火墙与连通性验证
- 放行端口(示例使用 8888/tcp):
sudo ufw allow 8888/tcp
或 firewalld:sudo firewall-cmd --permanent --add-port=8888/tcp && sudo firewall-cmd --reload
- 连通性测试:
- 网络层:ping server_ip
- 端口层:nc -vz server_ip 8888 或 telnet server_ip 8888
- 服务层:isql -v myserver username password
- 排错要点:
- 确认 sqlhosts 中协议、主机名、端口一致;
- 确认 /etc/services 端口与 sqlhosts、服务器 onconfig 一致;
- 云环境需放行安全组/NACL 对应端口;
- 服务器本机可用 onstat -g ntt 查看网络监听状态。
五 常见注意事项
- 主机名解析:确保客户端与服务器之间对 sqlhosts 中的主机名可解析(/etc/hosts 或 DNS)。
- 端口选择:避免使用知名端口,建议自定义如 8888,并在 /etc/services 与防火墙同步配置。
- 协议选择:本地优先 ipcshm,跨机远程必须使用 onsoctcp。
- 云与虚拟化:若使用云服务器,除系统防火墙外还需在云平台安全组放行对应端口。