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

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM