一、安装前需安装:
1、首先安装unix-ODBC(redhat5.9自带的unix-ODBC-2.2.11即可)
只需安装这四个包,在安装文件目录下可以找到
rpm–ivhxxxxx.rpm命令进行安装,先安装unixODBC-libs-2.2.11-10.el5.x86_64.rpm
Odbc安装完成后可以数据命令odbcinst–j,查看配置文件的位置,一般应该是在/etc根目录下
查看安装的包
2、安装mysql,redhat5.9自带的mysql-5.0.95-3.el5即可
需要安装包如下,mysql-connector-odbc64-5.1.8-1.el5.x86_64.rpm不需要安装
先安装perl和libtool包,在安装mysql包
rpm–qa|grepmysql命令可以查看安装的mysql包,这个只能查看通过rpm包安装的
3、安装mysql-odbc,redhat5.9自带的mysql-connector-odbc-3.51.26r1127-2.el5.x86_64.rpm即可
4、配置odbc连接mysql数据库
4.1修改/etc/odbcinst.ini[root@dbserver210etc]#catodbcinst.ini
#Exampledriverdefinitions
#See/usr/share/doc/unixODBC/README.64bitformoreinformation
#UsethesedefinitionswiththeoriginalunixODBCpackage
#Driverfromthepostgresql-odbcpackage
#SetupfromtheunixODBC-libspackage
[PostgreSQL]
Description=ODBCforPostgreSQL
Driver=/usr/lib/psqlodbc.so
Setup=/usr/lib/libodbcpsqlS.so
Driver64=/usr/lib64/psqlodbc.so
Setup64=/usr/lib64/libodbcpsqlS.so
FileUsage=1
#Driverfromthemysql-connector-odbcpackage
#SetupfromtheunixODBC-libspackage
[MySQL]
Description=ODBCforMySQL
Driver=/usr/lib/libmyodbc3_r.so
Setup=/usr/lib/libodbcmyS.so
Driver64=/usr/lib64/libmyodbc3_r.so
Setup64=/usr/lib64/libodbcmyS.so
FileUsage=1
#UsethesedefinitionswiththeunixODBC64package
#Driverfromthepostgresql-odbc64package
#SetupfromtheunixODBC64-libspackage
[PostgreSQL64]
Description=ODBCforPostgreSQL(64bit)
Driver=/usr/lib/psqlodbcw.so
Setup=/usr/lib/libodbcpsqlS64.so
Driver64=/usr/lib64/psqlodbcw.so
Setup64=/usr/lib64/libodbcpsqlS64.so
FileUsage=1
#Driverfromthemysql-connector-odbc64package
#SetupfromtheunixODBC64-libspackage
[MySQL64]
Description=ODBCforMySQL(64bit)
Driver=/usr/lib/libmyodbc5.so
Setup=/usr/lib/libodbcmyS64.so
Driver64=/usr/lib64/libmyodbc5.so
Setup64=/usr/lib64/libodbcmyS64.so
FileUsage=1
主要看里面[MySQL]这个地方的配置,看看对应的目录下有没有对应的.so文件,如果没有的话估计是没安装成功,有可能只有lib64目录下有,但lib目录下没有,这可以不用管它。
这个加到odbcinst.ini文件的最后。测试时用,正常使用时应该去掉[ODBC]Trace??????????=1TraceFile???=/tmp/odbc.logDebug??????????=1Pooling????????=No4.2.修改/etc/odbc.ini[root@dbserver210etc]#catodbc.ini
[asterisk]
Description=MySQLconnectionto''asterisk''database
Driver=MySQL#对应odbcinst.ini中配置的[MySQL],名字必须一致
Database=asterisk#对应mysql数据库中建的asterisk对应的数据库
Server=192.168.1.210#对应mysql数据库IP
User=asterisk#用户名,必须是User,不能是UserName,否则不认
#User=root
#Password=684205e50ccfe713
Password=yunhantech#数据库中存的是加密的密码,这里用加密前的密码
Port=3306#对应mysql数据库端口
Socket=/tmp/mysql.sock
#oracle配置如下,使用UserID不是User
[ORCL]
Description=ODBCforOracle
Driver=Oracle
Server=192.168.1.210
Port=1521
ServerName=ORCL
UserId=vm_cddx
Password=vm_cddx
5、遇到的问题
先用mysql–uroot–p测试能不能成功登录mysql,这里需要给root用户添加密码mysql安装
添加asterisk用户,密码yunhantech
5.1Accessdenied错误
如果用root能登录但asterisk用户不能登录,那应是没分配权限,
报错Accessdeniedforuser''asterisk''@''dbserver210''(usingpassword:YES)
[ISQL]ERROR:CouldnotSQLConnect
用root用户登录mysql后执行下面的命令进行授权:
mysql>grantallon.toasterisk@192.168.1.210(计算机名IP)identifiedby"yunhantech";
StartingMySQL.[OK]
QueryOK,0rowsaffected(0.00sec)
mysql>flushprivileges; //执行完上面的命令后必须执行这句话
QueryOK,0rowsaffected(0.00sec)
有时还需要执行
grantallon.toasterisk@dbserver210(计算机名)identifiedby"yunhantech";
grantallon.toasterisk@localhostidentifiedby"yunhantech";
grantallon.toasterisk@127.0.0.1identifiedby"yunhantech";
grantallon.toasterisk@%identifiedby"yunhantech";
其中localhost和127.0.0.1是不同的,具体情况可在添加完后查看mysql数据库中对应的mysql库中的user表
5.2、Isql连接提示Accessdeniedforuser''asterisk''@''dbserver210''(usingpassword:YES)
用root进去后分配权限
[root@dbserver210etc]#isqlasterisk-v
[S1000][unixODBC][MySQL][ODBC3.51Driver]Accessdeniedforuser''asterisk''@''dbserver210''(usingpassword:YES)
[ISQL]ERROR:CouldnotSQLConnect
[root@dbserver210etc]#mysql-uroot-p
Enterpassword:
WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis30
Serverversion:5.0.95Sourcedistribution
Copyright(c)2000,2011,Oracleand/oritsaffiliates.Allrightsreserved.
OracleisaregisteredtrademarkofOracleCorporationand/orits
affiliates.Othernamesmaybetrademarksoftheirrespective
owners.
Type''help;''or''\h''forhelp.Type''\c''toclearthecurrentinputstatement.
mysql>grantallprivilegeson.toasterisk@localhost;
QueryOK,0rowsaffected(0.01sec)
mysql>flushprivileges;
QueryOK,0rowsaffected(0.02sec)
mysql>grantallprivilegeson.toasterisk@dbserver210;
QueryOK,0rowsaffected(0.00sec)
mysql>flushprivileges;
QueryOK,0rowsaffected(0.00sec)
mysql>grantallprivilegeson.toasterisk@127.0.0.1;
QueryOK,0rowsaffected(0.05sec)
mysql>flushprivileges;
QueryOK,0rowsaffected(0.00sec)
mysql>
5.2
6、强制卸载安装的rpm包
对应安装的包如果有依赖关系的话,直接rpm–e可能卸载不了,所以需要在最后加参数—nodeps,但对应即安装了i386又安装了X86_64的时候,会提示specifiesmultiplepackages,这是就需要加参数--nodeps--allmatches
强制卸载rpm安装包:
[root@dbserver210lib]#rpm-qa|grepunixODBC
unixODBC-2.2.11-10.el5
unixODBC-libs-2.2.11-10.el5
unixODBC-libs-2.2.11-10.el5
unixODBC-2.2.11-10.el5
[root@dbserver210lib]#rpm-eunixODBC-2.2.11-10.el5
error:"unixODBC-2.2.11-10.el5"specifiesmultiplepackages
[root@dbserver210lib]#rpm-eunixODBC-2.2.11-10.el5--nodeps
error:"unixODBC-2.2.11-10.el5"specifiesmultiplepackages
[root@dbserver210lib]#rpm-eunixODBC-2.2.11-10.el5--nodeps--allmatches
[root@dbserver210lib]#rpm-eunixODBC-libs-2.2.11-10.el5--nodeps--allmatches
warning:/etc/odbcinst.inisavedas/etc/odbcinst.ini.rpmsave
warning:/etc/odbc.inisavedas/etc/odbc.ini.rpmsave
前面三个必须先安装,然后才能安装asterisk
7、安装SQLite3
下载SQLite3
下载地址http://www.sqlite.org/download.html
#tar–zxvfsqlite-autoconf-3080200.tar.gz
#cdsqlite-autoconf-3080200
#./configure
#make
#makeinstall
不安装的话会报这个提示:
二、Asterisk安装
1、安装dahdi:
http://www.asterisk.org/downloads/dahdi下载
dahdi-linux-complete-current.tar.gz
#tar–zvxfdahdi-linux-complete-current.tar.gz
先拷贝根目录下的Makefile文件到linux/drivers/dahdi下
#cp/home/oracle/asterisk/dahdi-linux-complete-2.8.0.1+2.8.0/Makefile/home/oracle/asterisk/dahdi-linux-complete-2.8.0.1+2.8.0/linux/drivers/dahdi
#make
#makefile
2、安装libpri-1.4.14.tar.gz
http://www.asterisk.org/downloads/libpri/
#tar-zvxflibpri-1.4-current.tar.gz
#cdlibpri-1.4.14
#make
#makeinstall
3、安装pjproject
(1)下载asterisk:网址http://www.asterisk.org/downloads/asterisk-latest-thankyou?sid=516887
http://www.asterisk.org/downloads/asterisk
(2)传到服务器上解压#tar-zxvfasterisk-11-current.tar.gz
上传并加以asterisk包
进入到asterisk解压目录的子目录pjproject下:
/home/oracle/asterisk/asterisk-11.7.0/res/pjproject
就在asterisk这个包中有这个
进到这个目录下
#./configure
#make
#makeinstall
不先安装的话会报这个错误:
4、asterisk-moh-opsound-wav-2.03.tar.gz安装
进入到asterisk解压包的sounds目录下,只需要解压asterisk-moh-opsound-wav-2.03.tar.gz即可,不需要安装
否则会报错:
5、安装asterisk
#./configure
#make
注意这里执行make,不要执行makeall,否则有时会报错找不到ssl.so.1包
#makeinstall
#makesamples
三、asterisk配置
注意是修改/etc/asterisk下的conf文件和建立mysql数据库asterisk
1、modules.conf
修改/etc/asterisk/modules.conf
将;AnexampleofloadingODBCsupportwouldbe:下的这两行前的分号去掉:
preload=>res_odbc.so
preload=>res_config_odbc.so
2、extconfig.conf
修改/etc/asterisk/extconfig.conf,在此处加这三句
sipusers=>odbc,asterisk,sippeerssippeers=>odbc,asterisk,sippeers
extensions=>odbc,asterisk,extensionsodbc对应为/etc/odbc.ini文件
odbc指前面安装的odbc模块,asterisk指mysql数据库中对应的asterisk库
sippeers和extensions对应配置的mysql数据库中asterisk库中的表
sippeers表是用户表,extensions是拨号规则表
3、res_odbc.conf
对应值设为下面的:
[asterisk]
enabled=>yes
dsn=>asterisk //对应/etc/odbc.ini中的配置
username=>asterisk
password=>yunhantech
pre-connect=>yes
limit=>5
4、http.conf
按下面的方式配置
[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk
enablestatic=yes
5、manager.conf
修改
[general]
enabled=yes
webenabled=yes
port=5038
bindaddr=0.0.0.0
在最后添加
[admin]
secret=admin
read=system,call,log,verbose,command,agent,config,read,write,originate
write=system,call,log,verbose,command,agent,config,read,write,originate
[manager]
secret=manager
permit=0.0.0.0/0.0.0.0
read=all
write=all
6、sip.conf
前面部分按这个修改
[general]
context=test
allowoverlap=nobindport=5060bindaddr=0.0.0.0srvlookup=yesqualify=yes最后部分添加上,这两个用户是为了测试文件配置用户的
[1001]
type=friend
secret=test
host=dynamic
[1002]
type=friend
secret=test
host=dynamic
7、extensions.conf
最后添加这两句
[from-sip]
exten=>Realtime/@extensions
只需要这一句,意思是去mysql数据库的extensions表中取查看拨号规则
这三句是用来测试配置文件中添加用户的
[test]
exten=>1001,1,Dial(SIP/1001)
exten=>1002,1,Dial(SIP/1002)
四、asterisk数据库配置
1、创建数据库
通过mysql创建asterisk数据库,并配置asterisk用户密码yunhantech可以连接到asterisk
我用的NavicatforMySQL工具之间连到数据库上进行添加配置的,没用命令添加
createdatabaseasterisk;
GRANTALLPRIVILEGESONasterisk.TO''asterisk''@''localhost''IDENTIFIEDBY''yourpassword''WITHGRANTOPTION;
2、创建表
在asterisk解压目录下的/asterisk-11.2.1/contrib/realtime/mysql目录下有相关的sql文件是用来创建表的,直接用NavicatforMySQL工具导入sql语句见表就可以了
拨号规则表是没有的,创建语句如下:
CREATETABLE`asterisk`.`extensions`(
`id`int(11)NOTNULLauto_increment,
`context`varchar(20)NOTNULLdefault'''',
`exten`varchar(20)NOTNULLdefault'''',
`priority`tinyint(4)NOTNULLdefault''0'',
`app`varchar(20)NOTNULLdefault'''',
`appdata`varchar(128)NOTNULLdefault'''',
PRIMARYKEY(`context`,`exten`,`priority`),
KEY`id`(`id`)
)ENGINE=MyISAM;
3、在sippeers表中建立用户数据
id??name??regseconds??defaultuser??host??type??context??secret
1??10??0??1003??dynamic??friend??from-sip??123456
2??1004??0??1004??dynamic??friend??from-sip??123456
3??1005??0??1005??dynamic??friend??from-sip??123456
4、extensions表中建立数据
INSERTintoextensions(id,context,exten,priority,app)
VALUES('''',''from-sip'',''_.'',''1'',''Answer'');
INSERTintoextensions(id,context,exten,priority,app,appdata)
VALUES('''',''from-sip'',''_.'',''2'',''GotoIf'',''$[${EXTEN:0:${LEN(${AREACODE})}}=${AREACODE}]?3:5'');
INSERTintoextensions(id,context,exten,priority,app,appdata)
VALUES('''',''from-sip'',''_.'',''3'',''Dial'',''Zap/1/${EXTEN:${LEN(${AREACODE})}}'');
INSERTintoextensions(id,context,exten,priority,app)
VALUES('''',''from-sip'',''_.'',''4'',''Hangup'');
INSERTintoextensions(id,context,exten,priority,app,appdata)
VALUES('''',''from-sip'',''_.'',''5'',''Dial'',''SIP/${EXTEN}'');
INSERTintoextensions(id,context,exten,priority,app)
VALUES('''',''from-sip'',''_.'',''6'',''Hangup'');
五、操作命令
1、启动
#asteriskstart//启动asterisk
#asterisk–vvvvvvvvvr//跟踪查看信息,v越多查看的信息越详细
2、关闭
关闭直接用killasterisk的pid
查看pid用命令
#ps–A|grepasterisk
#kill9549
3、Web方式管理asterisk:
可以通过http://:8088/asterisk/manager对asterisk进行管理–r后可执行的命令
查看odbc
查看用户,只能查看配置文件中的用户,数据库中配置的查不到
查看http状态
以下是配置连接oracle数据库的没成功,仅做参考
由于oracle不支持mysql中的key、enum等导致oracle连上后能注册成功,但外呼只能做主叫不能做被叫,具体原因还没搞明白,所以先不用oracle了
安装oracle的odbc驱动
(1)redhat5.3中默认安装的unixODBC是2.2.11版本,这个版本与oracle的odbc驱动不兼容。所以需要将先将其卸载,然后安装unixODBC2.3.0卸载unixODBC的rpm包:rpm-emysql-connector-odbc-3.51.12-2.2.i386rpm-eunixODBC-devel-2.2.11-7.1rpm-eunixODBC-2.2.11-7.1下载安装unixODBC2.3.0从www.unixodbc.org处下载,或者http://olex.openlogic.com/package_versions/download/10003?package_version_id=5966&path=openlogic%2Funixodbc%2F2.3.0%2Fopenlogic-unixodbc-2.3.0-all-src-2.zip在configure时加两个参数:--sysconfdir=/etc--prefix=/usr然后makeinstall就可以啦安装完成后执行odbcinst-j可以看到配置文件等的位置1.从Oracle网站下载客户端安装包http://download.oracle.com/otn/linux/instantclient/11203/oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpmhttp://download.oracle.com/otn/linux/instantclient/11203/oracle-instantclient11.2-odbc-11.2.0.3.0-1.i386.rpm最好再安装一下sqlplushttp://download.oracle.com/otn/linux/instantclient/11203/oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.i386.rpm2.配置lib目录cd/usr/lib/oracle/11.2/client/libpwd>>/etc/ld.so.confldconfig3.修改/etc/odbcinst.ini增加如下:#Driverformoracle[Oracle]Desription?????=ODBCforOracleDriver?????????=/usr/lib/oracle/11.2/client/lib/libsqora.so.11.1Setup??????????=/usr/lib/liboraodbcS.soFileUsage??????=1这个加到odbcinst.ini文件的最后。测试时用,正常使用时应该去掉[ODBC]Trace??????????=1TraceFile???=/tmp/odbc.logDebug??????????=1Pooling????????=No4.修改/etc/odbc.ini
增加如下[ORCLE]#本地数据源名Description????=ODBCforOracleDriver?????????=OracleServer?????????=192.168.1Port???????????=1521ServerName?????=ORCL#tnsnames.ora中的服务名UserID?????????=Password???????=vm_cddx
5.增加/usr/lib/oracle/11.2/network/admin/tnsnames.ora
ORCL=???????(DESCRIPTION=???????????????(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.146)(PORT=1521))???????????????(CONNECT_DATA=?????????(SERVER=DEDICATED)???????????????????????(SERVICE_NAME=orcl)???????????????)???????)其中ORCL_146要与odbc.ini的ServerName相同,SERVICE_NAME为oracle的服务名HOST为数据库所在主机IP,PORT为数据库所在主机port。6.在/etc/profile中增加:exportTNS_ADMIN=/usr/lib/oracle/11.2/network/admin/然后,为了让TNS_ADMIN环境变化现在就生效,执行./etc/profile7.用isql测试一下isqlORCLE-v出错:[01000][unixODBC][DriverManager]Can''topenlib''/usr/lib/oracle/11.2/client/lib/libsqora.so.11.1'':libclntsh.so.11.1:cannotopensharedobjectfile:Nosuchfileordirectory[ISQL]ERROR:CouldnotSQLConnect发现是没有libclntsh.so.11.1这个库文件,这个库文件在/usr/lib/oracle/11.2/client/lib/下,之所以没有找到是由于在第2步时执行ldconfig的终端不是现在执行isql的终端。重新执行一下ldconfig再执行isqlORCL_146-v出错:isql:symbollookuperror:/usr/lib/oracle/11.2/client/lib/libsqora.so.11.1:undefinedsymbol:SQLGetPrivateProfileStringW
这个问题就是unixODBC的版本问题啦,如果前面安装了unixODBC2.3.0的话不会出现这个错误
如果sqlplus可以连接,但isql不可以,需要确认是否export了TNS_ADMIN这一环境变量
unixODBC2.3.0oracle-instantclient11.2搭配,版本不对应会报上面的错
配置asterisk连接oracle数据库
(1)modules.conf
修改/etc/asterisk/modules.conf
将;AnexampleofloadingODBCsupportwouldbe:下的这两行前的分号去掉:
preload=>res_odbc.so
preload=>res_config_odbc.so
(2)extconfig.conf
修改/etc/asterisk/extconfig.conf,在此处加这两句
sipusers=>odbc,ORACLE,sippeers
sippeers=>odbc,ORACLE,sippeers
odbc对应为/etc/odbc.ini文件
ORACLE对应该文件中的配置
Sippeers和sippeers对应配置的oracle数据库中的表
(3)res_odbc.conf
对应值设为下面的:
[asterisk]
enabled=>yes
dsn=>ORACLE //对应/etc/odbc.ini中的配置
username=>vm_cddx
password=>vm_cddx
pre-connect=>yes
limit=>5
(4)、http.conf
按下面的方式配置
[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk
enablestatic=yes
5、manager.conf
修改
[general]
enabled=yes
webenabled=yes
port=5038
bindaddr=0.0.0.0
在最后添加
[admin]
secret=admin
read=system,call,log,verbose,command,agent,config,read,write,originate
write=system,call,log,verbose,command,agent,config,read,write,originate
[manager]
secret=manager
permit=0.0.0.0/0.0.0.0
read=all
write=all
6、extensions.conf
最后添加这两句,这个测试了半天没管用
[from-sip]
exten=>_XXX,1,Dial(SIP/${EXTEN},60)
还是用这两句起作用
exten=>1001,1,Dial(SIP/1001)
exten=>1002,1,Dial(SIP/1002)
?7.用isql测试一下isqlORCL_146-v出错:[01000][unixODBC][DriverManager]Can''topenlib''/usr/lib/oracle/11.2/client/lib/libsqora.so.11.1'':libclntsh.so.11.1:cannotopensharedobjectfile:Nosuchfileordirectory[ISQL]ERROR:CouldnotSQLConnect发现是没有libclntsh.so.11.1这个库文件,这个库文件在/usr/lib/oracle/11.2/client/lib/下,之所以没有找到是由于在第2步时执行ldconfig的终端不是现在执行isql的终端。重新执行一下ldconfig再执行isqlORCL_146-v出错:isql:symbollookuperror:/usr/lib/oracle/11.2/client/lib/libsqora.so.11.1:undefinedsymbol:SQLGetPrivateProfileStringW
这个问题就是unixODBC的版本问题啦,如果前面安装了unixODBC2.3.0的话不会出现这个错误
如果sqlplus可以连接,但isql不可以,需要确认是否export了TNS_ADMIN这一环境变量
libpjnath-x86_64-unknown-linux-gnu.a:couldnotreadsymbols:Badvalue
./configure--enable-lib64--libdir=/usr/lib64
configure:error:cannotrun/bin/sh./config.sub解决办法
分类:Linux错误汇总2012-02-2522:533471人阅读评论(0)收藏举报
mysql
确定已安装
libtool
libtool-ltdl
libtool-ltdl-devel
如果没安装,使用yum?install?libtool
yum?install?libtool-ltdl
yum?install?libtool-ltdl-devel
?
然后将
/usr/share/libtool/config.sub
/usr/share/libtool/config.gues
复制到你当前要configure目录下
(比如你要装mysql,进入解压后的文件夹进行如下操作:
cp/usr/share/libtool/config.sub.
cp/usr/share/libtool/config.guess.)
然后./configure--enable-shared--enable-static
?
|
|