配色: 字号:
asterisk在redhat5.9下的针对mysql的安装配置
2013-12-27 | 阅:  转:  |  分享 
  
一、安装前需安装:

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

?

献花(0)
+1
(本文系韩诗虎首藏)