为了配合亿枝客服务器系统转到Linux上,将sphinxSE编译到xampp的MYSQL里的测试工作,以下是测试成功全过程记录。
软件准备
xampp1.7.1 (mysql-5.1.33)
Development package xampp1.7.1
mysql-5.1.33源码
sphinx-0.9.9-rc1
yum install openssl
xampp及开发套件安装,并取出mysql编译/构建脚本
mkdir /opt/software
cd /opt/software
$ wget 'http://www.apachefriends.org/download.php?xampp-linux-1.7.1.tar.gz' $ wget 'http://www.apachefriends.org/download.php?xampp-linux-devel-1.7.1.tar.gz'
$ tar xzf xampp-linux-1.7.1.tar.gz -C /opt $ tar xzf xampp-linux-devel-1.7.1.tar.gz -C /opt
这步完成后,我们就会在/opt/lampp/share/lampp/configures.tar.gz
找到xampp的重新编译/构建的全部脚本。
cd /opt/lampp/share/lampp/
mkdir configrures
tar xzfv /opt/lampp/share/lampp/configures.tar.gz –C /configures
这步完成后,我们就会发现/opt/lampp/share/lampp/configures/mysql目录下,
有一个configure-oswald文件,
这就是重新编译与构建mysql的脚本.
下载并解压mysql5.1.33源码
cd /opt/software
tar -zxvf mysql-5.1.33.tar.gz -C /opt
cd /opt/mysql-5.1.33
sphinx下载安装
cd /opt/software
wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9-rc1.tar.gz
tar zxvf sphinx-0.9.9-rc1.tar.gz -C /opt
cd /opt/sphinx-0.9.9-rc1
cp -R /opt/sphinx-0.9.9-rc1/mysqlse /opt/mysql-5.1.33/storage/sphinxcd /opt/mysql-5.1.33
sh BUILD/autorun.sh
开始编译与构建XAMPP中的MYSQL
重新开一个窗口
vi /opt/lampp/share/lampp/configures/mysql/configure-oswald
就会看到以下脚本
手动一条一条执行以下命令,注意执行之前关闭lampp。
perl -pi -e 's/"\/etc\/"/"\/opt\/lampp\/etc\/"/g' mysys/default.c
perl -pi -e 's/"\/etc\/mysql\/"/"\/etc\/xampp\/"/g' mysys/default.cperl -pi -e "s/DBUG_PRINT/\/\/DBUG_PRINT/g" mysys/my_sync.c
perl -pi -e "s/DBUG_ENTER/\/\/DBUG_ENTER/g" mysys/my_sync.cenv LD_RUN_PATH=/opt/lampp/lib LD_LIBRARY_PATH="/opt/lampp/lib" CFLAGS="-O3 -mpentiumpro -I/opt/lampp/include -L/opt/lampp/lib -Wl,--rpath -Wl,/opt/lampp/lib -felide-constructors -fno-exceptions -fno-rtti" CXX="gcc" CXXFLAGS="-O3 -mpentiumpro -I/opt/lampp/include -L/opt/lampp/lib -Wl,--rpath -Wl,/opt/lampp/lib -felide-constructors -fno-exceptions -fno-rtti"
./configure --prefix=/opt/lampp --enable-assembler --enable-local-infile --with-mysqld-user=nobody --with-unix-socket-path=/opt/lampp/var/mysql/mysql.sock --with-extra-charsets=complex --libexecdir=/opt/lampp/sbin --sysconfdir=/opt/lampp/etc --datadir=/opt/lampp/share --localstatedir=/opt/lampp/var/mysql --infodir=/opt/lampp/info --includedir=/opt/lampp/include --mandir=/opt/lampp/man --with-ssl=/opt/lampp --enable-thread-safe-client --with-plugins=max-no-ndb --with-plugins=sphinx
make
执行到这里可能有错,然后执行make clean,去了--with-ssl=/opt/lampp ,重新执行一篇。
make install
mv /opt/lampp/sql-bench /opt/lampp/share/mysql/sql-bench
rm -rf /opt/lampp/share/mysql/sql-bench
检查是否安装好
/opt/lampp/lampp start
这里如果出现XAMPP: Couldn't start MySQL! 那么就去查看一下mysql错误日志,
错误日志位置在my.cnf里配置为log-error=/opt/lampp/logs/mysql_log
根据日志提示的问题,再去google上寻找解决答案,基本上都能解决。
/opt/lampp/lampp/bin/mysql –uroot
show engines;
我遇到的几个启动不成功的原因
1、/opt/lampp/sbin/mysqld: unknown variable 'innodb_data_home_dir=/opt/lampp/var/mysql/'
解决办法:
vi /opt/lampp/etc/my.cnf
注释以下所有
#skip-innodb
innodb_data_home_dir = /opt/lampp/var/mysql/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /opt/lampp/var/mysql/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50然后启动MYSQL
/opt/lampp/lampp startmysql
/opt/lampp/bin/mysql –uroot
mysql>INSTALL PLUGIN innodb SONAME 'ha_innodb.so'
mysql> show plugin;+------------+--------+----------------+--------------+---------+
| Name | Status | Type | Library | License |
+------------+--------+----------------+--------------+---------+
| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |
| CSV | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| SPHINX | ACTIVE | STORAGE ENGINE | NULL | GPL |
| PBXT | ACTIVE | STORAGE ENGINE | libpbxt.so | GPL |
| InnoDB | ACTIVE | STORAGE ENGINE | ha_innodb.so | GPL |
+------------+--------+----------------+--------------+---------+这时再把my.cnf里注释取了,再重新启动。
参考资料
http://www.ibm.com/developerworks/cn/opensource/os-php-fastapps3/
http://www.apachefriends.org/zh_cn/xampp-linux.html
原创文章,转载请注明: 转载自读思客
本文链接地址: 重新编译/构建Xampp中的MYSQL并支持SPHINXSE




如果你碰到其他类似提示:
cannot restore segment prot after reloc: Permission denied
哪应该是SELinux的问题,可以考虑把它关闭。
————————————————————————————-
郁闷的是.我把SELinux关闭后还是不行.于是到google上search.发现这个很有用.
在你保证SElinux 被disable后.还执行下
chcon -t texrel_shlib_t
如: chcon -t texrel_shlib_t /路径/路径/名字.so (这个文件视具体执行文件.)
以上两步.已经解决了很多server的问题了.