centos 7 nginx hhvm mysql_CentOS 7 编译安装 HHVM 3.4.1
博客徹底遷移到了DigitalOcean上,無(wú)奈囊中羞澀,只能開個(gè)512MB內(nèi)存的Droplet。。。
只不過(guò),小內(nèi)存也可以玩出花樣。之前就一直想嘗試用一下HHVM,無(wú)奈編譯實(shí)在是太麻煩,一直偷懶沒(méi)使用。這篇文章就用來(lái)記錄期間編譯安裝的過(guò)程,以及一些常見的錯(cuò)誤。以下內(nèi)容部分參考HHVM的github wiki,當(dāng)然也從其他博客收集了點(diǎn)信息,算是拼湊出來(lái)的把,希望對(duì)大家有用。
目前我所使用的系統(tǒng)是 CentOS 7,接下來(lái)編譯安裝的是HHVM-3.4.1。如果你的環(huán)境和我的一致,并且不想自己花時(shí)間編譯,那么也可以下載本人已經(jīng)編譯好的文件HHVM-3.4.1.tar.gz。
廢話不多說(shuō),開始正文。
===Changelog===
感謝zjhzxhz提交的issue,原安裝包存在路徑問(wèn)題,現(xiàn)已更正,同時(shí)采用直接打包二進(jìn)制文件的形式,安裝方式為直接解壓到/。
可能會(huì)提示找不到libonig.so.2,這個(gè)需要各位自己ldd /usr/local/bin/hhvm,看下其他的動(dòng)態(tài)鏈接庫(kù)在哪個(gè)目錄,然后再為onig的動(dòng)態(tài)鏈接庫(kù)建立相應(yīng)的軟鏈接。
添加repoyum install epel-release # add EPEL repository
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm # ImageMagick
安裝依賴# 如下都是必要的依賴,不要懷疑,當(dāng)然你也可以一個(gè)個(gè)排查,如果你有時(shí)間的話
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# 修補(bǔ)bug,在/usr/lib中創(chuàng)建glog的軟連接
ln -s /usr/lib64/libglog.so /usr/lib/libglog.so# 別問(wèn)我為什么,我至今懷疑是否要添加這個(gè)包,但是不添加確實(shí)在鏈接gd_jpeg的時(shí)候出問(wèn)題
yum autoremove ImageMagick # 如果已經(jīng)安裝,請(qǐng)先卸載,放心地使用autoremove
yum install ImageMagick-last* --enablerepo=remi # 從remi中獲取最新的包# 編譯安裝oniguruma,一個(gè)正則表達(dá)式解析庫(kù)
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 # 開兩個(gè)線程編譯,我在2G內(nèi)存的虛擬機(jī)上編譯,開2-3條線程最合適
sudo make install # 默認(rèn)安裝至/usr/local
將HHVM添加為service
創(chuàng)建/usr/lib/systemd/system/hhvm.service,內(nèi)容如下[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
創(chuàng)建必要的配置# 請(qǐng)確定你已經(jīng)有用戶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,內(nèi)容如下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,內(nèi)容如下:; 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,內(nèi)容如下:hhvm.mysql.socket = /tmp/mysql.sock
expose_php = 0 ;關(guān)閉頭信息X-Powered-By (和hhvm.server.expose_hphp = false作用一樣)
memory_limit = 400M
post_max_size = 50M
開啟hhvmsystemctl enable hhvm
systemctl start hhvm
# 查看狀態(tài)
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完整的安裝配置完了,當(dāng)然后續(xù)還有很多調(diào)優(yōu)的可能,可玩性十足,具體請(qǐng)參考github wiki
總結(jié)
以上是生活随笔為你收集整理的centos 7 nginx hhvm mysql_CentOS 7 编译安装 HHVM 3.4.1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 天池竞赛-津南数字制造算法挑战赛【赛场二
- 下一篇: 怎么调节电机启动值_开关式智能充电机-全