我试图启动sqlbox,但是它慌了,我跑了:
sqlbox -v 0 /etc/kannel/sqlbox.conf
下面是日志:
2017-08-31 13:27:56 [18635] [0] INFO: Debug_lvl = 0, log_file = <none>, log_lvl = 0
2017-08-31 13:27:56 [18635] [0] DEBUG: Kannel sqlbox version `1.4.4'.
Build `Apr 5 2016 13:32:05', compiler `5.3.1 20160330'.
System Linux, release 4.4.0-93-generic, version #116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017, machine x86_64.
Hostname smpp.bothsmsw.com, IP 127.0.0.1.
Libxml version 2.9.3.
Using OpenSSL 1.0.2g 1 Mar 2016.
Compiled with MySQL 5.7.11, using MySQL 5.7.19.
Compiled with PostgreSQL 9.5.2.
Using SQLite 3.11.0.
Using hiredis API 0.13.3
Using native malloc.
2017-08-31 13:27:56 [18635] [0] INFO: Starting to log to file /var/log/kannel/sqlbox.log level 0
2017-08-31 13:27:56 [18635] [0] INFO: Added logfile `/var/log/kannel/sqlbox.log' with level `0'.
2017-08-31 13:27:56 [18635] [0] PANIC: SQLBOX: MSSql: connection settings for id 'sqlbox-db' are not specified!
2017-08-31 13:27:56 [18635] [0] PANIC: sqlbox(gw_backtrace+0xce) [0x42d07e]
2017-08-31 13:27:56 [18635] [0] PANIC: sqlbox(gw_panic+0x16f) [0x42d1ff]
2017-08-31 13:27:56 [18635] [0] PANIC: sqlbox(sqlbox_init_mssql+0x11e) [0x40dffe]
2017-08-31 13:27:56 [18635] [0] PANIC: sqlbox(sqlbox_init_sql+0x9) [0x413239]
2017-08-31 13:27:56 [18635] [0] PANIC: sqlbox(main+0x31d) [0x40c24d]
2017-08-31 13:27:56 [18635] [0] PANIC: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) [0x7f3146101830]
2017-08-31 13:27:56 [18635] [0] PANIC: sqlbox(_start+0x29) [0x40c4d9]
我不为什么会以PostgreSQL 9.5.2。的形式出现,我以前没有使用过,所以我只能用mysql重新编译,这是sqlbox的配置:
#SQLBOX
group = sqlbox
id = sqlbox-db
smsbox-id = sqlbox
bearerbox-host = localhost
bearerbox-port = 18001
smsbox-port = 18005
smsbox-port-ssl = false
sql-log-table = sent_sms
sql-insert-table = send_sms
log-level = 0
log-file = /var/log/kannel/sqlbox.log
# SQLBOX SETUP
group = mysql-connection
id = sqlbox-db
host = localhost
port = 3306
username = root
password = pass
database = kannel_db
max-connections = 25
有什么想法吗?
最佳答案
正如本主题Kannel Sqlbox not working (trying to connect to SQL Server instead of MySQL)?中的回答,您不能使用apt-get软件包,因为它们没有使用正确的参数构建。
问题
日志中描述的主要问题在那里:2017-08-31 13:27:56 [18635] [0] PANIC: SQLBOX: MSSql: connection settings for id 'sqlbox-db' are not specified!
实际上,您使用的版本存在问题(apt-get软件包是您无法在其中使用的旧版本),今年年初我遇到了同样的问题。
这就是我的工作方式。
解
步骤1-卸载所有以前的Kannel软件包,清理所有内容
如果您已经使用apt-get软件包安装了Kannel,则必须先清洁计算机。
以下是找到您必须删除的项目的一些线索。
我首先检查了发现“ kannel”的每个地方:
sudo find / -name "*kannel*"
sudo find / -name "*Kannel*"
然后,我运行了以下命令(根据您的设置等,其中一些命令可能对您没有用):
sudo apt-get autoremove --purge kannel
sudo rm -rf /etc/kannel/
sudo apt-get autoremove --purge kannel-sqlbox
sudo rm /var/cache/apt/archives/kannel-sqlbox_0.7.2-4build1_amd64.deb
sudo rm /var/cache/apt/archives/kannel-extras_1.4.4-2build1_amd64.deb
rm /home/nico/www-dev/kannelStore/kannel.store*
sudo rm -rf /usr/local/include/kannel
sudo rm -rf /usr/local/kannel
sudo rm -rf /usr/local/lib/kannel
rm /var/tmp/kannel.swp
sudo rm /usr/local/share/man/man8/kannel.8
sudo rm /usr/local/share/man/man8/run_kannel_box.8
还有
sudo rm -rf /usr/local/sbin/
(但要小心,具体取决于文件夹中已有的内容!)第2步-从源代码安装最新的Kannel版本
注意:您将必须使用1.5.0版
获取依赖
首先添加将来的命令所需的所有软件包:
sudo apt-get install libxml2-dev
(步骤./configure
所需,否则您将得到“配置:错误:必须安装libxml2(aka gnome-xml)库”)sudo apt-get install libmysqlclient-dev
(./configure --with-mysql
所需)sudo apt-get install bison
(make
所需)sudo apt-get install libssh-dev libssl-dev
(避免出现此错误需要make
:“ collect2:错误:ld返回1退出状态,make:*** [test / test_http]错误1”)获取Kannel来源
您将必须从svn存储库获取源。所以:
sudo apt install subversion
如果还没有Subversion(可以通过运行svn --version
进行检查:如果没有答复,请使用命令)然后:
转到将在本地托管源的文件夹。例如在m侧:
cd ~/www-dev/nicopushkannel/Kannel/Kannel-Source
从存储库中获取Kannel源:
svn co https://svn.kannel.org/gateway/trunk
编译并安装Kannel
从上一步开始,您应该进入Kannel源root foolder。
如Kannel文档中所述,运行:
cd trunk
./bootstrap
./configure --with-mysql --with-mysql-dir=/var/lib/mysql
make
这里重要的是添加到./configure的参数:
--with-mysql --with-mysql-dir=/var/lib/mysql
然后安装:
sudo make bindir=/usr/local/kannel install
运行Kannel
完成此操作后,您可以尝试从命令行运行Kannel:
cd /usr/local/sbin
./bearerbox -v 0 /etc/kannel/kannel.conf
步骤3-从源代码安装最新的Kannel-sqlbox版本
注意:您需要安装Kannel(第2步)才能编译sqlbox。
sqlbox包含在Kannel中继中:导航到以下文件夹:
cd addons/sqlbox
修补程序引导文件
您可能需要修补引导文件以匹配您的autoconf版本(对我来说是1.15),因为代码不知道1.15大于1.11 ...
更改以下值以匹配您的计算机版本的autoconf:
如果automake-1.11 --version> / dev / null 2>&1;然后
amvers =“-1.11”
对我来说,它变成了:
如果automake-1.15 --version> / dev / null 2>&1;然后
amvers =“-1.15”
生成并安装sqlbox
./bootstrap
./configure
make
sudo make install
我们完了!
还有一件事:如果要在Kannel启动时添加Sqlbox启动,请执行以下操作:
sudo gedit /etc/default/kannel
Add "START_SQLBOX=1" line at the end
关于ubuntu-16.04 - sqlbox寻找mysql而不是mssql,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45980691/