hiphop-php 搭建 (CentOS)

前提:只支持64位系统

升级GCC:

https://github.com/jackywei/HOW-TO-BUILD-HHVM-WiKi/wiki/Build-&-Install-GCC4.6.3-in-CentOS-%285.2-&-6.3%29

安装CMake:

https://github.com/jackywei/HOW-TO-BUILD-HHVM-WiKi/wiki/Build-&-Install-CMake-2.8.10.2-in-CentOS6.3

升级boost:

https://github.com/jackywei/HOW-TO-BUILD-HHVM-WiKi/wiki/Build-&-install-Boost-1.50-in-CentOS-%28CentOS5.2-&-6.3-are-both-verified%29

备注:当boost上面方法不通,请用下面这个

./bootstrap.sh

./b2 install

之后参考:

https://github.com/facebook/hiphop-php/wiki/Building-and-installing-HHVM-on-CentOS-6.3

Building HipHop make 之后还需要

make install

完成之后运行hhvm 为执行单个PHP文件

可以启动WEB服务

配置参考:

    #日志配置
    Log {
        #日志等级
        Level = None (default) | Error | Warning | Info | Verbose 
        # 使用@抑制错误是否后台日志启用错误记录
        NoSilencer = false 
        #容许用户自己处理错误
        AlwaysLogUnhandledExceptions = true 
        #PHP的错误等级
        RuntimeErrorReportingLevel = 8191 
        #下面3个指定错误的格式及消息头(C++错误16进制,是否转换等)
        Header = false 
        InjectedStackTrace = true
        NativeStackTrace = true
        #最大日志数量
        MaxMessagesPerRequest = -1
        
        
        #是否启用日志
        UseLogFile = true
        #日志文件
        File = /usr/local/hiphop/log/server.log
        
        # 访问日志格式
        AccessLogDefaultFormat = %h %l %u %t \"%r\" %>s %b
        #日志格式
        #Access {
        #  * {
        #    File = filename
        #    Format = some Apache access log format string
        #  }
        #}

        # 管理后台日志
        #AdminLog {
        #  File = filename
        #  Format = %h %t %s %U
        #}

        # 是否启用 hphp_log() 来得到PHP代码的信息
        ApplicationLog = true

        # 将错误分组,可以保存至数据库
        # Log aggregator logs one line per several errors, grouped by error's
        # stacktraces. It can also save errors to a specified database.
        #Aggregator = false
        #Aggregator {
        #  File = filename
        #  Database = [username[:password]@]server[:port][/database]
        #  SleepSeconds = 10   # polling cycle for aggregation
        #}
        
    }
    #错误处理
    ErrorHandling {
        CallUserHandlerOnFatals = true
        NoInfiniteLoopDetection = false
        NoInfiniteRecursionDetection = false
        MaxStackDepth = 1000
        ThrowBadTypeExceptions = false
        ThrowNotices = false
        NoticeFrequency = 1    # 1 out of these many notices to log
        WarningFrequency = 1   # 1 out of these many warnings to log
        AssertActive = false
        AssertWarning = false
   }
   #资源限制
    ResourceLimit {
        CoreFileSize = 0          # in bytes
        MaxSocket = 0
        SocketDefaultTimeout = 5  # in seconds
        MaxRSS = 0
        MaxRSSPollingCycle = 0    # in seconds, how often to check max memory
        DropCacheCycle = 0        # in seconds, how often to drop disk cache
    }

  
  PidFile = /usr/local/hiphop/etc/server.pid # 进程PID文件

  # $_SERVER['name'] = value
  # 服务器变量
  ServerVariables {
    name = value
  }
  # 环境变量
  # $_ENV['name'] = value
  EnvVariables {
    name = value
  }
  
  
  # 服务器配置
  Server {
    #域名IP端口
    Host = www.domain.com
    IP = 0.0.0.0
    Port = 80
    #处理的线程数量
    ThreadCount = 50
    #代码根目录
    SourceRoot = /var/www/www.domain.com/public_html
    #共享代码目录,如加zf等框架引入等
    #IncludeSearchPaths {
    #  * = some path
    #  * = another path
    #}
    #请求超时
    RequestTimeoutSeconds = -1
    #请求处理内存限制
    RequestMemoryMaxBytes = -1

    # 代码预加载,关闭 
    # Recommend to turn this on to avoid memory leaks and to enable warmup
    # document features.
    EnableMemoryManager = false

    # 显示内存问题,均在调试时候开启
    # Only for debugging memory problems. When turned on, server will report
    # SmartAllocator's usage for each thread to stdout.
    CheckMemory = false

    # 多子域名
    # If ServerName is not specified for a virtual host, use prefix + this
    # suffix to compose one
    #DefaultServerNameSuffix = default_domain.com
    # Forcing $_SERVER['SERVER_NAME'] to come from request header
    #ForceServerNameToHeader = false

    # 启动选项 
    # startup options
    # TakeoverFilename = filename   # for port takeover between server instances
    # 默认文件
    DefaultDocument = index.php
    # 启动文件
    #StartupDocument = filename
    #WarmupDocument = filename
    # 程序启动调用一个函数
    #RequestInitFunction = function_name
    #ThreadDocuments {
    #  * = somedoc.php
    #  * = another.php
    #}
    # 文件未找到处理文件
    ErrorDocument404 = 404.php
    #致命错误消息
    FatalErrorMessage = some string

    #关闭选项
    # shutdown options
    GracefulShutdownWait = 0   # in seconds
    HarshShutdown = true
    EvilShutdown = true
    DanglingWait = 0
  }
  AdminServer {
    Port = 8088
    ThreadCount = 1
    Password = 123456
  }
  #静态内容
  StaticFile {
    Extensions {
      bmp = image/bmp
    }
    Generators {
      * = static_resource.php
    }
  }
  
View Code

出错:

unable to find/load systemlib.php

rm -rf /usr/local/bin/hhvm
#/usr/local/hiphop 为你的源码编译目录
 ln -s /usr/local/hiphop/hphp/hhvm/hhvm /usr/local/bin/hhvm

如果接着报库文件找不到,请建立链接到/usr/local/lib目录即可

hhvm 中,部分php 函数不可用 ,如eval phpinfo等

 

配合nginx 使用

hiphop 配置

RewriteRules {
       * {
          pattern = ^.*$
          to = index.php
          qsa = yes
        }

}

nginx 配置

root /var/www/;location / {
        autoindex on;
        index  index.html index.htm index.php;
        try_files $uri $uri/ /index.php;
    }
location ~ \.php$ {
        proxy_pass http://127.0.0.1:9000$request_uri;
}

 

posted @ 2013-08-01 10:06  liushan  阅读(474)  评论(0编辑  收藏  举报