文章

linux-ubuntu安装HHVM和配置LNMH环境

文章目录

处于好奇和爱折腾打算不再用面板,也不用其他一件安装包什么的。

于是照猫画虎在自己vps上配置了LNMH环境来跑这网站。也就是Linux+Nginx+Mariadb+HHVM用Mariadb代替Mysql用HHVM代替PHP这样一个环境。

HHVM介绍

HHVM全称为HipHop Virtual Machine,它是一个开源虚拟机,用来运行由 Hack(一种编程语言)和 PHP 开发应用。HHVM 在保证了 PHP 程序员最关注的高灵活性的要求下,通过使用最新的编译方式来取得了非凡的性能。

hhvm

到目前为止,相对于 PHP + APC (Alternative PHP Cache) ,HHVM 为 FaceBook 在 HTTP 请求的吞吐量上提高了9倍的性能,在内存的占用上,减少了5倍左右的内存占用。同时,HHVM 也可以与基于 FastCGI 的 Web 服务器(如 Nginx 或者 Apache )协同工作。

项目地址:https://github.com/facebook/hhvm  网站:http://hhvm.com (不fan不能访问)

Mariadb介绍

MariaDB 是一个采用 Aria 存储引擎的 MySQL 分支版本,是由原来 MySQL 的作者 Michael Widenius 创办的公司所开发的免费开源的数据库服务器。

与 MySQL 相比较,MariaDB 更强的地方在于:

Maria 存储引擎
PBXT 存储引擎
XtraDB 存储引擎
FederatedX 存储引擎
更快的复制查询处理
线程池
更少的警告和bug
运行速度更快
更多的 Extensions (More index parts, new startup options etc)
更好的功能测试
数据表消除
慢查询日志的扩展统计
支持对 Unicode 的排序

安装Nginx

HHVM和Nginx以及Apache都能协同工作,选哪一个是你自由这里推荐Nginx,Nginx是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器,Nginx专为性能优化而开发,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。Nginx具有很高的稳定性。

现在我们开始在自己的vps上安装Nginx,一般Linux系统都会有默认的Nginx安装包,在ubuntu上我们直接用apt-get安装。

如果你想安装最新版的nginx请看这篇文章Linux安装最新版nginx 

apt-get update && apt-get upgrade
apt-get install nginx

如果没有特殊情况,安装完成后Nginx会自动启动,这时你访问你vps的IP地址会有Nginx的默认欢迎页面,通过命令nginx -v 可查看当前nginx的版本和已经安装的模块。

nginx

 

这样安装安装后,nginx的配置文件nginx.conf在/etc/nginx/目录下,网站默认配置文件default.conf在/etc/nginx/conf.d/目录下。也有的在 /etc/nginx/sites-available/default

default.conf默认会在 /usr/share/nginx/html中寻找文件执行,一般也就是我们网站默认目录,我们可以通过修改root 地址来指定我们的网站目录。

安装Mariadb

通过如下命令安装 MariaDB,根据上面的介绍我们知道它是一个比 MySQL 性能更好的数据库。

apt-get install mariadb-client mariadb-server

安装过程中会让我们设置root密码,设置一个相对复杂而且自己比较容易记的就好。然后用命令service mysql start 来启动我们的数据库,为了安全起见我们用命令mysql_secure_installation 来经行一些设定。

mariadb

因为我之前运行过这个命令所以在执行会有些不同

安装HHVM

因为一般的vps都不会有HHVM安装包的,也没有源我们需要手动添加。

wget http://dl.hiphop-php.com/conf/hhvm.gpg.key
sudo apt-key add hhvm.gpg.key
sudo echo "deb http://dl.hiphop-php.com/ubuntu trusty main">> /etc/apt/sources.list

接着更新和安装

sudo apt-get update
sudo apt-get install -y hhvm

hhvm

安装好后会给出一系列的提示,我们看到可以用update-rc.d hhvm defaults让HHVM开机启动。可以通过/etc/init.d/hhvm restart 来重启HHVM。

Nginx连接HHVM

前面我们安装了Nginx和HHVM并且都运行了,不过他们现在是相互独立的。我现在要做的就是让Nginx把PHP文件交给HHVM来处理。我们运行下面这个脚本,这个脚本可以确保 Nginx 可以对 .hh 和 .php 的做正确的处理,并且将它们通过 fastcgi 发送给 HHVM。

/usr/share/hhvm/install_fastcgi.sh

使用 hhvm 来提供 php 的运行环境,当然这个执行完不会有任何提示。

/usr/bin/update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60

当然这些做完后,我们可以看到/etc/nginx/目录下有个hhvm.conf的文件,这是Nginx连接HHVM的关键,我们需要把它加入我们网站的配置文件default.conf中去。可以在配置文件中加入

include /etc/nginx/hhvm.conf;

因为要执行php文件我们需要在index index.html index.htm;后面加上index.php 。

index index.html index.htm index.php;

nginx-hhvm

编辑完成保存后,我们需要重新加载下nginx -s reload

测试Nginx和HHVM

现在我们cd /usr/share/nginx/html ,删除index.html这是Nginx安装成功后的欢迎页面可以不要,我们vi index.php新建个php文件,可以输入以下内容来看php是否能成功运行。

<?php
phpinfo();
?>

保存,然后去打开我们的vps的IP地址,如果有HHVM相关信息输出,证明我们是成功的。

hhvm-info

如果提示file not found ,大多数是因为我们的default配置文件,我们加入include /etc/nginx/hhvm.conf;的时候将它放在了location外面,我们指定的root 目录只在location里面生效。

所以我们要么去掉location ,要么把include /etc/nginx/hhvm.conf;放在location里面和root指定目录在一起。

附加说明

因为我也是个xin手,对Linux、Mariadb、Nginx、HHVM这些都是知之甚少,以前都是用别人现成的,安装使用就是基本没什么大问题。但是如果自己一步一步在命令行里折腾,会遇到很多很多问题。有些童鞋也可能和我一样:) 所以再BB一些.....

网站目录

其实一般我们要真的靠lnmh环境来跑我们的网站,为了方便我们不要Nginx默认的配置文件目录。比如我们一般会把配置文件和网站文件放在/home的一个用户下面。一是这个用户可以直接管理这些文件而不用root用户,二也是为了安全。

比如我们新建一个叫做zhangsan的用户adduser  zhangsan设置密码和一些信息后会在、home下面有个zhangsan的目录。我们在zhangsan目录下面新建个www来放我们的网站文件,新建个vhost目录来放我们Nginx网站配置文件,这样管理起来就比较方便。

光建立好还不能生效,我们修改vi /etc/nginx/nginx.conf文件,修改include 后面的目录地址为我们上面新建的指定目录include /home/zhangsan/vhost/*;

然后可以把/etc/nginx/conf.d/default.conf文件cp拷贝一份到vhost目录下。另外我们的网站文件要放在www下面,我们可以重命名default.conf比如为aitanlu.conf然后修改root后面的目录地址为/home/zhangsan/www/

修改完之后通过命令nginx -s reload重新加载配置文件。

其他配置

任何时候出现了我们不知道错误,也不知道什么原因,我们可以通过查看Nginx和HHVM的错误文件来看原因。然后再去搜索相关答案,默认都在/var/log/nginx和/var/log/nginx下面。

关于HHVM的一些设置在/etc/hhvm下面有php.ini文件和server.ini 。除非一些特殊情况一般我们不会去修改这两个文件。Mariadb(mysql)的配置文件my.cnf文件在/etc/mysql/下面。

估计还有好多都没写出来,希望以上这些可以帮助到需要的童鞋...:)

发表评论