会动的耳朵  

读文档不完全容易出事:

 

1. 配置SElinux和ifcfg-eth0 参照:http://www.cnblogs.com/the-moving-ear/p/3591523.html

2. 着手安装HHVM;详细解说参照:http://lustlost.blog.51cto.com/2600869/1285597

 http://hi.baidu.com/bngoogle/item/02b38601c7432dca90571808

 

我选择source编译安装,安装HHVM的github文档指导

链接:https://github.com/facebook/hhvm/wiki/Building-and-installing-HHVM-on-CentOS-6.3

这是完成安装master并测试phpmyadmin后的第4天。现在整理下正确的安装步骤,免得后来者受累(反正我实验了很多次,最后才发现boost版本的问题)

 

第一次,按照github 上hhvm centos6.3的安装文档,编译安装了十多遍,最终都失败了。

  1> 出现的有关magickwand和imagemagick以及imagick之类的错误是因为cmake的时候没有指定ImageMagick,magickwand相关的配置路径,这个是我犯了多次的错误,受文档影响了(没有读完和理解github文档,其实是自己坑自己)。

  2> 在make 进行中多会出现boost的相关方法或者变量找不到导致的error,我想根据我在centos6.3安装的boost,gcc等,可以确认,boost版本应该升级了,(文档推荐的boost是1.50,但是每次到了100%就抛出了boost相关error),使用1.55.0的试试。
    两个同事,使用的同一个版本的hhvm 2.5.0(master),一个是arch ,另一个是ubuntu,完美安装,用他们说的话是没有挑战性。我安装却让hhvm make error百出。他们最后都没有完全跑一边phpmyadmin。
  3> 这个是我在cmake使用的配置,算是经验之谈,请先使用cmake -LA看看包的路径是否正确
cmake -D Boost_FILESYSTEM_LIBRARY_DEBUG="/usr/lib/libboost_filesystem.so" -DBoost_FILESYSTEM_LIBRARY_RELEASE="/usr/lib/libboost_filesystem.so" -DBoost_INCLUDE_DIR="/usr/include" -DBoost_LIBRARY_DIR="/usr/lib" -DBoost_PROGRAM_OPTIONS_LIBRARY_DEBUG="/usr/lib/libboost_program_options.so" -DBoost_PROGRAM_OPTIONS_LIBRARY_RELEASE="/usr/lib/libboost_program_options.so" -DBoost_REGEX_LIBRARY_DEBUG="/usr/lib/libboost_regex.so" -DBoost_REGEX_LIBRARY_RELEASE="/usr/lib/libboost_regex.so" -DBoost_SYSTEM_LIBRARY_DEBUG="/usr/lib/libboost_system.so" -DBoost_SYSTEM_LIBRARY_RELEASE="/usr/lib/libboost_system.so" -DBoost_THREAD_LIBRARY_DEBUG="/usr/lib/libboost_thread.so" -DBoost_THREAD_LIBRARY_RELEASE="/usr/lib/libboost_thread.so" -D LIBMAGICKWAND_INCLUDE_DIRS="/usr/local/include/ImageMagick-6" -D LIBMAGICKWAND_LIBRARIES="/usr/local/lib/libMagickWand-6.Q16.so" -D LIBMAGICKCORE_LIBRARIES="/usr/local/lib/libMagickCore-6.Q16.so" -D LIBVPX_INCLUDE_DIRS="/usr/lib64" -D LIBXSLT_INCLUDE_DIR="/usr/lib64" -D LIBXSLT_LIBRARIES="/usr/lib64/libxslt.so" -DCMAKE_VERBOSE_MAKEFILE=on -DCMAKE_C_COMPILER="/usr/bin/gcc" -DCMAKE_CXX_COMPILER="/usr/bin/g++" .

   [注]因为之前使用distcc所以配置了下划线部分,这个不是必需的

  最后,在这里,我觉得没有必要把github上的依赖软件的安装过程搬到这里了,大家还是以参考为主。因为各个系统里面包的版本不尽相同,最后导致的结果也不同。

  

3. 测试对比用例 90000W次+=,golang的协程goroutine执行的是2.9'',非goroutine执行16.3'',count = count + 1执行5.5''

http://www.oschina.net/question/55981_134857

 稍后看看hhVM下的php

  hhvm命令行

  .1.  900000 for += costs time:0.12407088279724<br> The sum is:404999550000 

  .2.      9000000 for += costs time:1.3035469055176<br> The sum is:40499995500000

  .3.      90000000 for += costs time:12.312831878662<br> The sum is:4049999955000000

    .4.     900000000 for += costs time:128.34153389931<br> The sum is:404999999550000000

  这么推算下去是90亿耗时1200''+

  试试count = count + i这种是否会快些:

             900000000 for count = count + i   costs time:138.50588703156<br> The sum is:404999999550000000

  结果分析和goroutine完全不同理。再来一次

        900000000 for count = count + i   costs time:139.21196985245<br> The sum is:404999999550000000

                                                

  试试小数量的:

     900000 for count = count + i  costs time:0.13920712471008<br> The sum is:404999550000 

  非命令行(http请求)

    .1.   900000 for += costs time:0.073056936264038
        The sum is:404999550000

    .2.  9000000 for += costs time:0.61787700653076
        The sum is:40499995500000

    .3.      90000000 for += costs time:6.0881640911102
        The sum is:4049999955000000

    .4.      900000000 推算下去会超时,这个无所谓,关键是数据有意思,数据能说明一切。快了一倍多点的时间。

BTW: count = count + i这种就不测了,明显跟编译语言不同。

 

原生php的结果:

    .1. 900000 for += costs time:0.18309187889099<br> The sum is:404999550000

 

我只测了这一个原生的,效率比对已经显而易见。

 

 


 

--我是分隔线--


 

下面的别看了,以前的安装记录。

 

【1】失败多次,问题多多,好多坑啊。

这里是安装4天后整理的:

  因环境而异:先把boost remove掉 yum erase boost

  •  能装的还是都装了先,免得像我编译了99%,又回来继续:

sudo yum install git svn cpp make autoconf automake libtool patch memcached gcc-c++ cmake wget boost-devel mysql-devel pcre-devel gd-devel libxml2-devel expat-devel libicu-devel bzip2-devel oniguruma-devel openldap-devel readline-devel libc-client-devel libcap-devel binutils-devel pam-devel elfutils-libelf-devel ImageMagick* MagickWand* libunwind libunwind-devel inotify-tools freetype-devel libjpeg-devel libpng-devel libtiff-devel giflib-devel zlib-devel ghostscript-devel djvulibre-devel libwmf-devel jasper-devel libtool-ltdl-devel libX11-devel libXext-devel libXt-devel lcms-devel   librsvg2-devel OpenEXR-devel graphviz fftw3 jasper jasper-libs jasper-devel kdelibs-devel  libxslt-devel python* 

 

  [2014-03-15 20:01] 今天git pull了一次hhvm,make到100%还是因为imageMagick的问题报了error

 

    最好先这个检测,依赖的库及其路径: cmake -LA|grep -i magick

    发现imagemagick,magickwand的路径配置有问题,最后得rm -f CMakeCache.txt,然后执行上面的camke 路径配置

 

  再次make -j4看看结果吧【分布式编译比较快】

   如果库安装了,但是cmake仍旧报错或者make的时候报错,就加上依赖库的安装路径【自己编译安装的路径】

yum install perl-devel

yum install *base_devel*

  • 6.3的需要升级boost ,下载:http://jaist.dl.sourceforge.net/project/boost/boost/1.50.0/boost_1_50_0.tar.bz2  。boost一定的安装好

    安装boost时候一定记得这个:export CMAKE_PREFIX_PATH=/usr 

     ./bjam --layout=system install     这一步,看看具体是否需要加上--without-python

  

  • 在最后cmake 时候会报错,类似:
Could NOT find LibXslt(missing:  LIBXSLT_LIBRARIES     LIBXSLT_INCLUDE_DIR)

-- Could NOT find LibUODBC (missing:  LIBODBC_LIBRARIES LIBODBC_INCLUDE_DIRS)

-- Could NOT find LibVpx (missing: LIBVPX_INCLUDE_DIRS)

-- Could NOT find Editline (missing:  EDITLINE_LIBRARIES EDITLINE_INCLUDE_DIRS)

-- Could NOT find LIBINOTIFY (missing: LIBINOTIFY_LIBRARY)
-- Could NOT find LIBICONV (missing: LIBICONV_LIBRARY)

-- Looking for curl_multi_select - not found

-- Looking for event_get_version_number - not found

针对这几个missing,有人采取ignore[https://github.com/facebook/hhvm/issues/1208]

[2014-03-12 09:03] 但是我在最后make的时候,竟然报代码语法错误,跟别人的问题完全是两回事......安装调试中,shit

 

[ 37%] Building CXX object hphp/runtime/CMakeFiles/hphp_runtime_static.dir/ext/imagick/ext_imagick.cpp.o
In file included from /data1/tools/hhvm/hphp/runtime/ext/imagick/ext_imagick.cpp:18:0:
/data1/tools/hhvm/hphp/runtime/ext/imagick/ext_imagick.h:24:29: fatal error: wand/MagickWand.h: No such file or directory
compilation terminated.

[58%]/data1/tools/hhvm/hphp/runtime/ext/imagick/constants.cpp:20:29: fatal error: wand/MagickWand.h: No such file or directory

各种问题啊,都安装了,路径却错误?

 

再编译安装ImageMagick

参考这个:http://www.cnblogs.com/zhangwenzhao/p/3235765.html

http://www.imagemagick.org/script/download.php

http://www.imagemagick.org/download/linux/

[安装完记得配置PATH] 

 http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

 

 

  解决方法:vim CMakeCache.txt

  找到: LIBMAGICKWAND_INCLUDE_DIRS:PATH=/usr/local/include/ImageMagick-6 【这里是你的wand/MagickWand.h路径】

 

Fantastic 

 

   [99%] 都到这个时候了,boost方法和变量找不到.... wonderful world

  vim ./CMake/HPHPCompiler.cmake

  47和51行 在-std=gnu++11 后面加上 -lboost_system 

     [100%] 还是报错,我的泪....

  https://github.com/facebook/hhvm/issues/2072

 

 

 

  cmake这一步,得看具体情况了,我采用了:

cmake -D CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH -D LIBMAGICKWAND_INCLUDE_DIRS="/usr/lib64" -D LIBODBC_INCLUDE_DIRS="/usr/lib64" -D LIBODBC_LIBRARIES="/usr/lib64" -D LIBVPX_INCLUDE_DIRS="/usr/lib64" -D LIBXSLT_INCLUDE_DIR="/usr/lib64" -D LIBXSLT_LIBRARIES="/usr/lib64/libxslt.so" -D READLINE_INCLUDE_DIR="/usr/lib64" -D READLINE_LIBRARY="/usr/lib64/readline.so" -D EDITLINE_INCLUDE_DIRS="/usr/lib64" -D EDITLINE_LIBRARIES="/usr/lib64/libedit.so" -D LIBINOTIFY_LIBRARY=/usr/lib64/libinotifytools.so.0 -D LIBEVENT_LIB=/usr/lib/libevent.so -D LIBEVENT_INCLUDE_DIR=/usr/include -D LIBICONV_LIBRARY=/usr/local/lib/libiconv.so -D CMAKE_EXE_LINKER_FLAGS="-lboost_thread -lboost_system" -DImageMagick_MagickCore_INCLUDE_DIR=/usr/local/include/ImageMagick-6 -DImageMagick_MagickWand_INCLUDE_DIR=/usr/local/include/ImageMagick-6 -DLIBMAGICKCORE_INCLUDE_DIRS=/usr/ -DLIBMAGICKWAND_INCLUDE_DIRS=/usr/local/include/ImageMagick-6 .

 

【目前遗留问题】

CMake Warning at CMake/HPHPSetup.cmake:54 (message):
chrpath not found, rpath will not be stripped from installed binaries
Call Stack (most recent call first):
hphp/CMakeLists.txt:18 (include)

  我试着解决,升级jemalloc

  http://www.canonware.com/download/jemalloc/jemalloc-3.5.1.tar.bz2 [升级完了,问题没有解决]

   直接忽略这个.....

 

  【记得rm -f CMakeCache.txt && cmake [.....] && make即可】

 

 

 

  以上是安装过程的问题记录,整体来说累死我了,但很有意义。

 【2】 该整合php项目了:

  • helloworld先

 

我搭建了两台虚拟机

说明:第一台是工作的开发环境,怕受影响,再者是为了以后的测试对比。第二台干净的basic server

 

 

 

 

posted on 2014-03-11 09:42  会动的耳朵  阅读(1609)  评论(7编辑  收藏  举报