在Fedora 17上为cassandra安装thrift和pdo模块

时间:2013-01-15 12:26:36

标签: pdo install cassandra fedora thrift

我有下一个问题。我作为主机运行Fedora 17,作为客户运行CentOS 6.3。我在CentOS机器上成功安装了Cassandra apache-cassandra11-1.1.7-1.noarch。现在我需要在Fedora 17上安装带有Thrift的PDO模块,这样我就可以通过我的PHP应用程序访问CentOS机器上的Cassandra了。

这是我第一次使用Cassandra“试验”,我在Google Code here上找到了PDO文档。我已经安装了所有的存储库,如boost-devel,php-devel,pcre-devel。问题是当我去DataStax here时,只有Python 2.6版本的thrift,我安装了Python 2.7。我甚至放入了yum --skip-broken,这是成功的,我可以在这里看到节俭:

  • /usr/src/debug/thrift-0.7.0
  • /usr/lib/debug/usr/lib64/python2.6/site-packages/thrift

这与PDO文档站点(/usr/bin/*

上写的不完全相同

现在的问题是:是否需要安装python-2.6,如果这意味着我必须自己重建thrift,然后使用PDO,我是否还需要重建它?

如果有人已经这样做了,请提供一些步骤来解决这个问题。

提前谢谢。

编辑1:

为了安装节俭,我使用了这个:

tar -xzvf thrift-0.7.0.tar.gz
sudo mv thrift-0.7.0 /opt/thrift-0.7.0
chown brian /opt/thrift-0.7.0
cd /opt/thrift-0.7.0/
./configure
make
sudo make install

运行thrift命令输出选项列表,这意味着它已成功安装。

为了安装pdo-cassandra,我使用了这个

cd /opt
sudo git clone https://code.google.com/a/apache-extras.org/p/cassandra-pdo/
sudo chown -R brian cassandra-pdo
cd cassandra-pdo/
phpize
./configure
make
make test

运行make test后我得到下一个错误:

PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cassandra-pdo/modules/pdo_cassandra.so' - /opt/cassandra-pdo/modules/pdo_cassandra.so: undefined symbol: php_pdo_unregister_driver in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/cassandra-pdo/modules/pdo_cassandra.so' - /opt/cassandra-pdo/modules/pdo_cassandra.so: undefined symbol: php_pdo_unregister_driver in Unknown on line 0

=====================================================================
PHP         : /usr/bin/php 
Warning: PHP Startup: Unable to load dynamic library '/opt/cassandra-pdo/modules/pdo_cassandra.so' - /opt/cassandra-pdo/modules/pdo_cassandra.so: undefined symbol: php_pdo_unregister_driver in Unknown on line 0

PHP_SAPI    : cli
PHP_VERSION : 5.4.10
ZEND_VERSION: 2.4.0
PHP_OS      : Linux - Linux <user_name> 3.6.11-1.fc17.x86_64 #1 SMP Mon Dec 17 22:16:35 UTC 2012 x86_64
INI actual  : /opt/cassandra-pdo/tmp-php.ini
More .INIs  :  
CWD         : /opt/cassandra-pdo
Extra dirs  : 
VALGRIND    : Not used
....

加载模块和yes模块可能出错的任何想法都存在于该文件夹中(/opt/cassandra-pdo/modules/pdo_cassandra.so)。

1 个答案:

答案 0 :(得分:0)

(在问题编辑中由OP回答。转换为社区维基答案。请参阅Question with no answers, but issue solved in the comments (or extended in chat)

OP写道:

  

确定。我已经在我的Fedora 17主机上运行了。你需要做下一件事。您必须将pdo_cassandra.so模块复制到该目录。您可以通过phpinfo()检查该目录的位置。您还需要在pdo_cassandra.ini文件所在的目录中创建pdo.ini文件。问题是必须在pdo.so之前加载pdo_cassandra.so扩展名。创建ini文件并将我的扩展名复制到右侧文件夹后,我就可以使用它了。

     

此外,如果您在CentOS上运行cassandra时出现问题(在我的情况下,它是VMWare中的CentOS 6.3),您将收到下一个错误:

Error opening zip file or JAR manifest missing : /lib/jamm-0.2.5.jar
  

您需要在此位置编辑文件/etc/cassandra/default.conf/cassandra-env.sh

...
# enable assertions.  disabling this in production will give a modest
# performance benefit (around 5%).
JVM_OPTS="$JVM_OPTS -ea"

# add the jamm javaagent
if [ "$JVM_VENDOR" != "OpenJDK" -o "$JVM_VERSION" \> "1.6.0" ] \
      || [ "$JVM_VERSION" = "1.6.0" -a "$JVM_PATCH_VERSION" -ge 23 ]
then
    CASSANDRA_HOME="/usr/share/cassandra"
    JVM_OPTS="$JVM_OPTS -javaagent:$CASSANDRA_HOME/lib/jamm-0.2.5.jar"
fi

# enable thread priorities, primarily so we can give periodic tasks
# a lower priority to avoid interfering with client workload
JVM_OPTS="$JVM_OPTS -XX:+UseThreadPriorities"
...
  

您需要添加cassandra实例CASSANDRA_HOME="/usr/share/cassandra"的路径,或者您可以将其添加为导出CASSANDRA_HOME=/usr/share/cassandra

     

希望这可以帮助某些人,同样的问题。

相关问题