centos 7 nginx hhvm mysql_CentOS 7 编译安装 HHVM 3.4.1
博客徹底遷移到了DigitalOcean上,無奈囊中羞澀,只能開個512MB內存的Droplet。。。
只不過,小內存也可以玩出花樣。之前就一直想嘗試用一下HHVM,無奈編譯實在是太麻煩,一直偷懶沒使用。這篇文章就用來記錄期間編譯安裝的過程,以及一些常見的錯誤。以下內容部分參考HHVM的github wiki,當然也從其他博客收集了點信息,算是拼湊出來的把,希望對大家有用。
目前我所使用的系統是 CentOS 7,接下來編譯安裝的是HHVM-3.4.1。如果你的環境和我的一致,并且不想自己花時間編譯,那么也可以下載本人已經編譯好的文件HHVM-3.4.1.tar.gz。
廢話不多說,開始正文。
===Changelog===
感謝zjhzxhz提交的issue,原安裝包存在路徑問題,現已更正,同時采用直接打包二進制文件的形式,安裝方式為直接解壓到/。
可能會提示找不到libonig.so.2,這個需要各位自己ldd /usr/local/bin/hhvm,看下其他的動態鏈接庫在哪個目錄,然后再為onig的動態鏈接庫建立相應的軟鏈接。
添加repoyum install epel-release # add EPEL repository
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm # ImageMagick
安裝依賴# 如下都是必要的依賴,不要懷疑,當然你也可以一個個排查,如果你有時間的話
yum install cpp gcc-c++ cmake git psmisc {binutils,boost,jemalloc}-devel \
{sqlite,tbb,bzip2,openldap,readline,elfutils-libelf,gmp,lz4,pcre,glog}-devel \
lib{xslt,event,yaml,vpx,png,zip,icu,mcrypt,memcached,cap,dwarf}-devel \
{unixODBC,expat,mariadb}-devel lib{edit,curl,xml2,xslt}-devel# 修補bug,在/usr/lib中創建glog的軟連接
ln -s /usr/lib64/libglog.so /usr/lib/libglog.so# 別問我為什么,我至今懷疑是否要添加這個包,但是不添加確實在鏈接gd_jpeg的時候出問題
yum autoremove ImageMagick # 如果已經安裝,請先卸載,放心地使用autoremove
yum install ImageMagick-last* --enablerepo=remi # 從remi中獲取最新的包# 編譯安裝oniguruma,一個正則表達式解析庫
cd /tmp
wget http://www.geocities.jp/kosako3/oniguruma/archive/onig-5.9.5.tar.gz &&
tar xvzf onig-5.9.5.tar.gz && cd onig-5.9.5
./configure --prefix=/usr
make && sudo make install
編譯安裝hhvm# 獲取hhvm代碼
cd /tmp
git clone https://github.com/facebook/hhvm -b hhvm-3.4.1 hhvm --recursive
cd hhvm# 編譯
./configure
make -j2 # 開兩個線程編譯,我在2G內存的虛擬機上編譯,開2-3條線程最合適
sudo make install # 默認安裝至/usr/local
將HHVM添加為service
創建/usr/lib/systemd/system/hhvm.service,內容如下[Unit]
Description=HHVM HipHop Virtual Machine (FCGI)
[Service]
ExecStart=/usr/local/bin/hhvm --user www --mode daemon \
--config /etc/hhvm/server.ini \
--config /etc/hhvm/php.ini \
--config /etc/hhvm/config.hdf
[Install]
WantedBy=multi-user.target
創建必要的配置# 請確定你已經有用戶www,以及用戶組www
mkdir /etc/hhvm
mkdir /var/run/hhvm
sudo chown www.www /var/run/hhvm
mkdir /var/log/hhvm
sudo chown www.www /var/log/hhvm
在/etc/hhvm中添加如下文件
config.hdf,內容如下ResourceLimit {
CoreFileSize = 0 # in bytes
MaxSocket = 10000 # must be not 0, otherwise HHVM will not start
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
}
Log {
Level = Info
AlwaysLogUnhandledExceptions = true
RuntimeErrorReportingLevel = 8191
UseLogFile = true
UseSyslog = false
File = /var/log/hhvm/error.log
Access {
* {
File = /var/log/hhvm/access.log
Format = %h %l %u % t \"%r\" %>s %b
}
}
}
MySQL {
ReadOnly = false
ConnectTimeout = 1000 # in ms
ReadTimeout = 1000 # in ms
SlowQueryThreshold = 1000 # in ms, log slow queries as errors
KillOnTimeout = false
}
Mail {
SendmailPath = /usr/sbin/sendmail -t -i
ForceExtraParameters =
}
server.ini,內容如下:; php options
pid = /var/run/hhvm/pid
; hhvm specific
hhvm.server.port = 9001
;hhvm.server.file_socket = /var/run/hhvm/sock
hhvm.server.type = fastcgi
hhvm.server.default_document = index.php
hhvm.log.use_log_file = true
hhvm.log.file = /var/log/hhvm/error.log
hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc
php.ini,內容如下:hhvm.mysql.socket = /tmp/mysql.sock
expose_php = 0 ;關閉頭信息X-Powered-By (和hhvm.server.expose_hphp = false作用一樣)
memory_limit = 400M
post_max_size = 50M
開啟hhvmsystemctl enable hhvm
systemctl start hhvm
# 查看狀態
systemctl status hhvm
在nginx中添加fastcgi配置# 在nginx.conf中添加如下location塊
location ~ .*\.php(\/.*)*$ {
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
include fastcgi_params;
}
reload Nginx配置nginx -s reload
至此,hhvm完整的安裝配置完了,當然后續還有很多調優的可能,可玩性十足,具體請參考github wiki
總結
以上是生活随笔為你收集整理的centos 7 nginx hhvm mysql_CentOS 7 编译安装 HHVM 3.4.1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天池竞赛-津南数字制造算法挑战赛【赛场二
- 下一篇: linux cmake编译源码,linu