本文章主要是安装完CentOS 7 后遇到的一些问题总结。
目录
6.添加lib库自动搜索路径到/etc/ld.so.conf,然后ldconfig使设置生效
1.静态地址配置
1.编辑网络配置文件: vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
2.修改:
BOOTPROTO=static
ONBOOT=yes
添加:
IPADDR=192.168.56.108
NETMASK=255.255.255.0
GATEWAY=192.168.56.103
3.重启网络
service network restart
2.字符集设置
1.查看Linux当前语言
echo $LANG
2.查看系统支持的字符集
locale -a #系统可以支持的语言
locale #当前系统的语言环境
3.修改系统环境字符集
LANG #系统主要语系
LC_ALL #系统整体语系
两个地方都可以:
vim /etc/profile
export LANG=zh_CN.GBK
source /etc/profile
cat /etc/sysconfig/i18n #修改文件,也是一种方案
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
//SYSFONT="lat0-sun16"
SYSFONT="latarcyrheb-sun16" #系统字体
3.db2安装
1.官网下载v11安装包v11.1_linuxx64_expc.tar.gz,上传到虚拟机路径/opt 下
2.解压 tar -zxvf v11.1_linuxx64_expc.tar.gz,得到一个expc的目录文件
3.cd /opt/expc 进入目录:
ls
db2 db2ckupgrade db2_deinstall db2_install db2ls db2prereqcheck db2setup
4. ./db2prereqcheck -- 这个是检查安装的依赖关系,缺什么包装什么包(我直接跳过了)
5. ./db2_install
需要输入两次yes,同意协议,同意安装路径。
6.安装成功后,就是创建实例了:
[root@localhost expc]# groupadd -g 2000 db2iadm1
[root@localhost expc]# groupadd -g 2001 db2fadm1
[root@localhost expc]# useradd -m -g db2iadm1 -d /home/db2inst1 db2inst1
[root@localhost expc]# useradd -m -g db2fadm1 -d /home/db2fenc1 db2fenc1
[root@localhost expc]# passwd db2inst1
[root@localhost expc]# passwd db2fenc1
7.切换目录,安装许可证
[root@localhost expc]# cd /opt/ibm/db2/V11.1/adm/
[root@localhost adm]# chmod -R 775 *
[root@localhost adm]# ./db2licm -a /opt/expc/db2/license/db2expc_uw.lic--(许可证,我用的express-c的,所以没装许可证)
绑定端口
[root@localhost adm]# cd /opt/ibm/db2/V11.1/instance/
[root@localhost instance]# chmod -R 775 *
[root@localhost instance]# ./db2icrt -p 50000 -u db2fenc1 db2inst1
切用户,创建样本数据库
[root@localhost instance]# su - db2inst1
[db2inst1@localhost ~]$ db2sampl
[db2inst1@localhost ~]$ db2start
SQL1063N DB2START processing was successful.
[db2inst1@localhost ~]$ db2 connect to sample
Database Connection Information
Database server = DB2/LINUXX8664 11.1.2.2
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
[db2inst1@localhost ~]$ db2 "select * from staff"
[db2inst1@localhost ~]$ db2licm -l
Product name: "DB2 Express-C"
License type: "Unwarranted"
Expiry date: "Permanent"
Product identifier: "db2expc"
Version information: "11.1"
Max number of CPUs: "2"
Max amount of memory (GB): "16"
Max number of cores: "2"
Enforcement policy: "Soft Stop"
8.设置环境变量
db2set AUTOSTART=ON
db2set DB2COUNTRY=86
db2set DB2CODEPAGE=1386
db2set DB2COMM=TCPIP
4.关闭防火墙
防火墙不关闭有可能导致远程无法连接到数据库
关闭防火墙:
systemctl stop firewalld.service
关闭开机启动:
systemctl disable firewalld.service
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
开启防火墙:
systemctl start firewalld.service
开启开机启动:
systemctl enable firewalld.service
5.安装rpm
编译过程中往往会缺少系统文件导致编译错误,需要安装rpm文件:
cd到你存放rpm文件包的目录
rpm -ivh glibc-devel-2.17-222.el7.i686.rpm
--安装时可能会遇到缺少包的错误。
rpm -ivh --replacepkgs glibc-devel-2.17-222.el7.i686.rpm
--软件包重复安装将会失败,若仍需要安装必须加--replacepkgs
rpm -ivh --replacefiles glibc-devel-2.17-222.el7.i686.rpm
--软件包的某个文件已在安装其他软件包时安装过,则安装将会失败,若仍需要安装必须加--replacefiles
rpm -ivh --nodeps glibc-devel-2.17-222.el7.i686.rpm
--软件包所依赖的软件包未安装,则安装将会失败,若仍需要安装必须加—nodeps
rpm -ivh --force glibc-devel-2.17-222.el7.i686.rpm
--强制安装指定软件包
6.添加lib库自动搜索路径到/etc/ld.so.conf,然后ldconfig使设置生效
ld.so 动态共享库搜索顺序
1、ELF可执行文件中动态段DT_RPATH指定;gcc加入链接参数“-Wl,-rpath”指定动态库搜索路径;
2、环境变量LD_LIBRARY_PATH指定路径;
3、/etc/ld.so.cache中缓存的动态库路径。可以通过修改配置文件/etc/ld.so.conf 增删路径(修改后需要运行ldconfig命令);
4、默认的 /lib/;
5、默认的 /usr/lib/
与动态链接库相关命令
(1)ld 是gcc的链接程序。
(2)ldd是查看可执行文件中所依赖的库的程序,比如想查main程序用到了那些动态库,可以直接
ldd main
(3)ldconfig用来更新文件/etc/ld.so.conf的修改生效。
(4)nm用来查看.so库中的函数名字,标记是T的就是动态库里面生成的名字。如:nm /lib/libc*.so
Linux动态链接库的搜索路径按优先级排序为:
1.编译目标代码时指定的动态库搜索路径;
在编译时通过gcc 的参数”-Wl,-rpath,”指定。当指定多个动态库搜索路径时,路径之间用冒号”:”分隔。
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
/etc/ld.so.conf的第一行有个引用命令:include ld.so.conf.d/*.conf
因此,最优雅的方式是在ld.so.conf.d目录下创建一个你的程序依赖的配置文件,配置文件内容为程序依赖的动态链接库的路径,一个路径一行。
添加完配置文件后执行ldconfig使其生效。
4.默认的动态库搜索路径/lib;
5.默认的动态库搜索路径/usr/lib;
7.yum安装需要的软件
a.安装gcc和g++
由于CentOS是最小安装,所以没有gcc。编译时报错:
gcc: error trying to exec ‘cc1plus’: execvp: 没有那个文件或目录
[root@localhost ~]# yum install gcc gcc-c++;
b.安装dos2unix
yum install -y dos2unix*
8.安装32位包
系统是64位,在编译32位程序时会引起部分包缺失问题
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
/bin/ld: warning: libpam.so.0, needed by /home/db2inst1/sqllib/lib32/libdb2.so, not found安装之前一定要先把下面的包直接补充安装一下,默认是不安装的,另外要记得修改配置,直接连32位包也一并安装上。好多32包都默认不安装的,会引发不少问题。
echo 'multilib_policy=all' >> /etc/yum.conf
yum install -y glibc* libstdc*
yum install -y pam*
9.环境搭建小问题
创建数据库:db2 "create database ksdbs using codeset GBK territory CN collate using SYSTEM"
a.新建环境后将集中交易bcc+zqbu和账户中心bcc搭建在同一个数据库中,由于crt_db.sql中一些表空间名字相同,需要将账户中心的建表语句进行修改:
drop tablespace AC_HIS_DATA_TBS;
create tablespace AC_HIS_DATA_TBS
managed by database
using( file '/home/db2inst1/hdata' 32768) ----> using( file '/home/db2inst1/ac/hdata' 32768)
extentsize 32
prefetchsize 256;
b.服务启动后报:
[zhzxbcc@localhost ~]$ 103940888 14:12:20 9528 Level120 -- TESTINFO:(1533103940)SVR向通讯平台0发送数据,长度:179--OK
103940888 14:12:20 9528 Level1011 -- 处理失败,错误-9998:<没有找到请求数据(功能号:684715)提供服务的BU组!>
原因是crt_view.sql中有建立视图语句:
DROP VIEW KS.BU_FUNC;
create VIEW KS.BU_FUNC as
SELECT REQUEST_TYPE,BUGID,LIB_NAME,FUNC_NAME,NOTE,USE_FLAG FROM AC.BU_FUNC;
comment on table KS.BU_FUNC is
'BU功能列表视图';
由于和集中交易在同一个数据库,固ks.bu_func表是存在的,所以视图是创建不成功的,/kssbmp/sbmpbu/std_sbmpbu/bmpbusqc.sqc中BuFuncOpenCursor取的是视图ks.bu_func数据,所以报找不到提供服务的bu组。需要将视图ks.bu_func修改为ac.bu_func。(或者新建视图ac.v_bu_func并修改bmpbusqc.sqc的BuFuncOpenCursor)
c.报错:
10.linux环境修改tab为4个空格
root用户,/etc/virc文件,增加set ts=4
安装vim yum install vim*
11.ssh访问虚拟机下的centos慢的解决方法
主要是连接centos慢(需要等待30秒甚至更长),连接red hat就没有问题。
ssh -v ssh_test@192.168.56.103 查看ssh连接过程
解决方法:
[root@localhost ssh]# pwd
/etc/ssh
[root@localhost ssh]# vi sshd_config
将#UseDNS yes这一行,取消注释并把yes改成no,然后重启ssh服务
[root@localhost ssh]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
修改为
原因【转 https://blog.csdn.net/chenghuikai/article/details/53023256】:
UseDNS选项打开状态下,当客户端试图登录OpenSSH服务器时,服务器端先根据客户端的IP地址进行DNS PTR反向查询,查询出客户端的host name,然后根据查询出的客户端host name进行DNS 正向A记录查询,验证与其原始IP地址是否一致,这是防止客户端欺骗的一种手段,但一般我们的IP是动态的,不会有PTR记录的,打开这个选项不过是在白白浪费时间而已。