読者です 読者をやめる 読者になる 読者になる

LAMPエンジニアってこういうもんでしょ

こういうもんでしょって話をつらつらと

nginxとHHVMをインストールしてみた

 

あくなき速さへの追及 - LAMPエンジニアってこういうもんでしょ

 先日のブログでHHVMHackを書くって書いちゃったので

とりあえずサラッとインストールメモだけ貼っておきます。
サーバーはさくらVPSでOSはCentOS6.5です。

【nginxをインストールする】
・参考


CentOS6で最新版のnginxをyumでインストールする - 飲んだり寝たり

 

# nginxのyumリポジトリを登録するrpmパッケージをダウンロード

wget http://nginx.org/en/linux_packages.html

# 取って来たrpmパッケージをインストール
rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm

# yumでインストール
yum -y install nginx

# nginxを起動
service nginx start

# ドキュメントルートは
# /usr/share/nginx/html/

 

nginxのインストールは簡単ですね。
ぺろぺろ~ってコマンド実行していけばもう出来上がりです。

続いてHHVMのインストールと
nginxからのfastCGIの設定です。


【HHVMのインストールからnginxとの同期まで】
参考


HHVM 3.0.1をCentOS 6.5 (64-bit)にインストールする - Qiita

# HHVMのリポジトリを登録する
cd /etc/yum.repos.d
wget http://www.hop5.in/yum/el6/hop5.repo

# hhvmのインストール
yum -y install hhvm

# インストールの確認
hhvm --version

# こんなのが出ればOK↓
HipHop VM 3.1.0 (rel)
Compiler: tags/HHVM-3.1.0-0-g71ecbd8fb5e94b2a008387a2b5e9a8df5c6f5c7b
Repo schema: 88ae0db264d72ec2e2eb22ab25d717214aee568b

 

 

■nginxのconfファイルをいじる
・とりあえずバックアップを取ってみる

cd /etc/nginx/conf.d/
cp -p default.conf default.conf.20140818

 

・confファイルの書き換え

# 以下修正
server_name 192.168.0.1;

location / {
root /var/www/html;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}

 

以下を server ディレクティブ内に追記

この部分はコメントアウトして書いてあったからroot以外はコメントアウトを外しただけ

location ~ \.php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

 

■元のconfファイルを確認

# httpブロックに以下が無ければ追記
include /etc/nginx/conf.d/*.conf;

 

# nginxの再起動
/etc/init.d/nginx restart

# HHVMの起動
hhvm --mode daemon -vServer.Type=fastcgi -vServer.Port=9001

 

/var/www/html
にindex.phpを置いて動けば成功

php.iniの設定
エラーログとか設定してあげる

vim /etc/hhvm/php.ini

[date]
date.timezone = Asia/Tokyo

[php]
error_reporting = E_ALL & ~E_NOTICE

[hhvm]
hhvm.log.level = Warning
hhvm.log.always_log_unhandled_exceptions = true
hhvm.log.runtime_error_reporting_level = 8191
hhvm.log.use_log_file = true
hhvm.log.file = /var/log/hhvm/error.log
hhvm.error_handling.notice_frequency = 1
hhvm.error_handling.warning_frequency = 1
hhvm.http.slow_query_threshold = 0
hhvm.mysql.typed_results = false

 

設定が終わったらhhvmを再起動

# 今度はconfigオプションでphp.iniを明示的に指定してあげる
hhvm --config /etc/hhvm/php.ini --mode daemon -vServer.Type=fastcgi -vServer.Port=9001


色々文献を漁っていたら
「nginxの設定は/etc/nginx/conf.d/default.conf」に書けって書いてあるくせに
起動スクリプトで指定されているconfファイルって「/etc/nginx/nginx.conf」だけで
しかもincludeの設定がされていなかったんです。
設定が読み込まれなくて半日ぐらい悩みました。


hhvmの起動ですがserviceから実行することも出来るのですが
サービスのスクリプトDebian系のために書かれているらしく
RedHat系のCentOSではstopが使えません(!!)
毎回psコマンドでプロセスを調べてkillするしかないのもあれなので
個人的にはservice用のスクリプトを作った方が良いと思います。

書き方は

CentOSでデーモンの起動スクリプトを書く | taichino.com

とか参考に・・・。
調べると結構独自で起動スクリプトを書いてくれている人もいるので
是非ググッてみて下さい。(githubとか)


余談なんですが
先日うちの社長と話している時に
LAMP環境って環境構築がとにかく簡単なのが良いよね」って話になりました。
yumでぼこぼこインストールしたらもう動的スクリプトが動くhttpサーバー環境が出来ちゃうんだよ!」
と興奮気味に話してくれましたが
インストールで悩みに悩んだ経験がなかなか無いので
ちょっと苦笑いになってしまいまいた。


べ、別に愛想笑いなんかじゃないんだからねっ!ただちょっと恥ずかしいだけなんだからっ!ばかっ!