zoukankan      html  css  js  c++  java
  • Linux Centos 6.3 x86_64bit HHVM安装 学习记录

    读文档不完全容易出事:

    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

  • 相关阅读:
    IE内核浏览器下中文双引号自动显示成英文引号的说明
    【转】Linq初体验——Order By 通过属性名动态排序
    【转】Windows8不联网直接安装.Net 3.5 Framework的方法
    DrawImage在绘制图片的时候,为什么会擅自改变图片的大小?
    用js判断.net版本
    【转】html 页面打印并 分页
    利用IE9下载网络歌曲新法
    LINQ访问DataTable
    20165205与20165233结对感想以及创意照
    20165233 Java第一章学习总结
  • 原文地址:https://www.cnblogs.com/the-moving-ear/p/3591525.html
Copyright © 2011-2022 走看看