HHVM(HipHop Virtual Machine)是用于执行用PHP和Hack语言编写的程序的开源虚拟机。 HHVM是由Facebook开发的,它提供了目前PHP 7版本的大部分功能。 要在服务器上运行HHVM,可以使用FastCGI将HHVM与Nginx或Apache Web服务器连接,也可以使用名为“Proxygen”的HHVM内置的Web服务器。
在本教程中,我将向您展示如何使用HHVM和Nginx安装WordPress作为Web服务器。 我将使用CentOS 7作为操作系统,因此需要CentOS的基础知识。
前提条件
- CentOS 7 - 64bit
- 根权限
第1步 - 配置SELinux并添加Epel Repository
在本教程中,我们将在执行模式下使用SELinux,因此我们需要系统上安装的SELinux管理工具。 我们将使用setools和setrobleshoot来管理SELinux策略。
默认情况下,在CentOS 7上启用SELinux,我们可以使用以下命令检查:
sestatus
getenforce
您可以看到SELinux启用了强制模式。
接下来,使用yum命令安装setools并进行故障排除。
yum -y install setroubleshoot setools net-tools
安装完成后,可以安装EPEL存储库。
yum -y install epel-release
第2步 - 安装Nginx
Nginx或engine-x是具有高性能和低内存消耗的轻量级Web服务器。 在CentOS上,我们可以使用yum来安装Nginx软件包。 确保您以root用户身份登录!
从CentOS存储库中使用此yum命令安装nginx:
yum -y install nginx
现在启动Nginx,并使用systemctl命令启动它在引导时启动:
systemctl start nginx
systemctl enable nginx
要确保Nginx在我们的服务器上运行,请使用浏览器访问服务器IP地址,或使用如下所示的curl命令获取结果:
curl 192.168.1.110
我会用我的网络浏览器在这里:
第3步 - 安装和配置MariaDB
MariaDB是由原始MySQL开发人员Monty Widenius开发的开源数据库,它已经从MySQL数据库中分派,但与其主要功能保持兼容。 在此步骤中,我们将安装MariaDB并配置MariaDB数据库的根密码。 然后,我们将创建一个新的数据库和新用户,这是我们的WordPress安装所必需的。
安装mariadb和mariadb-server:
yum -y install mariadb mariadb-server
启动MariaDB并添加服务以在启动时自动启动:
systemctl start mariadb
systemctl enable mariadb
MariaDB已经启动,现在我们必须配置mariadb / mysql数据库的根密码。 键入以下命令以设置MariaDB root密码。
mysql_secure_installation
在请求时输入您的MariaDB root用户的新密码。
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
... Success!
Disallow root login remotely? [Y/n] Y
... Success!
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
... Success!
已配置MariaDB根密码。 现在登录到MariaDB / MySQL shell并为我们的WordPress安装创建一个新的数据库“wordpressdb”和一个新用户“wpuser” ,密码为“wpuser @” 。 为安装选择安全密码!
登录到MariaDB / MySQL shell:
mysql -u root -p
TYPE YOUR PASSWORD
创建一个新的数据库和新用户:
create database wordpressdb;
create user wpuser@localhost identified by 'wpuser@';
grant all privileges on wordpressdb.* to wpuser@localhost identified by 'wpuser@';
flush privileges;
\q
已经安装了MariaDB,并且已经创建了我们的WordPress安装的新数据库。
第4步 - 安装HHVM
对于HHVM安装,我们需要安装许多依赖项。 我们可以通过从github下载源代码或安装互联网上可用的预构建软件包来从源安装HHVM。 在本教程中,我将从预构建的软件包中安装HHVM。
安装HHVM安装的依赖项
yum -y install cpp gcc-c++ cmake git psmisc {binutils,boost,jemalloc,numactl}-devel \
{ImageMagick,sqlite,tbb,bzip2,openldap,readline,elfutils-libelf,gmp,lz4,pcre}-devel \
lib{xslt,event,yaml,vpx,png,zip,icu,mcrypt,memcached,cap,dwarf}-devel \
{unixODBC,expat,mariadb}-devel lib{edit,curl,xml2,xslt}-devel \
glog-devel oniguruma-devel ocaml gperf enca libjpeg-turbo-devel openssl-devel \
mariadb mariadb-server libc-client make
然后使用rpm命令从此站点安装HHVM预建的软件包。
rpm -Uvh http://mirrors.linuxeye.com/hhvm-repo/7/x86_64/hhvm-3.15.2-1.el7.centos.x86_64.rpm
ln -s /usr/local/bin/hhvm /bin/hhvm
HHVM已安装,请使用以下命令检查:
hhvm --version
为了使用php命令,我们可以将hhvm命令设置为php。 所以当你在shell上输入'php'时,你会看到与hhvm命令相同的结果。
sudo update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60
php --version
第5步 - 配置HHVM
在此步骤中,我们将配置HHVM。 我们将运行hhvm作为系统服务。 而不是在系统端口上运行它,我们将在更快的unix套接字文件上运行hhvm。
转到systemd目录并创建hhvm.service文件。
cd /etc/systemd/system/
vim hhvm.service
将服务配置粘贴到该文件。
[Unit]
Description=HHVM HipHop Virtual Machine (FCGI)
After=network.target nginx.service mariadb.service
[Service]
ExecStart=/usr/local/bin/hhvm --config /etc/hhvm/server.ini --user nginx --mode daemon -vServer.Type=fastcgi -vServer.FileSocket=/var/run/hhvm/hhvm.sock
[Install]
WantedBy=multi-user.target
保存文件并退出vim。
接下来,转到hhvm目录并编辑server.ini文件。
cd /etc/hhvm/
vim server.ini
将第7行的hhvm.server.port替换为下面的unix套接字配置:
hhvm.server.file_socket = /var/run/hhvm/hhvm.sock
保存文件并退出编辑器。
在hhvm服务文件中,我们定义了hhvm在'nginx'用户下运行,所以我们必须将套接字文件目录的所有者更改为'nginx'用户。 那么我们必须改变hhvm目录的SELinux上下文以允许访问套接字文件。
chown -R nginx:nginx /var/run/hhvm/
semanage fcontext -a -t httpd_var_run_t "/var/run/hhvm(/.*)?"
restorecon -Rv /var/run/hhvm
重新启动服务器后,hhvm将不会运行,因为没有套接字文件的目录,所以我们必须在启动时自动创建。
使用vim编辑rc.local文件。
vim /etc/rc.local
将下面的配置粘贴到行尾。
mkdir -p /var/run/hhvm/
chown -R nginx:nginx /var/run/hhvm/
semanage fcontext -a -t httpd_var_run_t "/var/run/hhvm(/.*)?"
restorecon -Rv /var/run/hhvm
保存文件并退出vim。 使文件可执行。
chmod +x /etc/rc.local
重新加载systemd服务,启动hhvm并将其添加到启动时启动。
systemctl daemon-reload
systemctl start hhvm
systemctl enable hhvm
确保没有错误。 使用netstat命令检查hhvm是否在套接字文件下运行。
netstat -pl | grep hhvm
第6步 - 配置HHVM和Nginx
在此步骤中,我们将使用Nginx Web服务器配置HHVM。 我们需要在Nginx目录中创建一个新的hhvm配置文件。
转到/ etc / nginx目录并创建一个hhvm.conf文件。
cd /etc/nginx/
vim hhvm.conf
粘贴以下配置:
location ~ \.(hh|php)$ {
root /usr/share/nginx/html;
fastcgi_keep_conn on;
fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
保存并退出。
接下来,编辑nginx.conf文件并添加hhvm配置包含行。
vim nginx.conf
将配置添加到服务器指令行57。
include /etc/nginx/hhvm.conf;
保存并退出。
然后更改hhvm配置文件的SELinux上下文。
semanage fcontext -a -t httpd_config_t /etc/nginx/hhvm.conf
restorecon -v /etc/nginx/hhvm.conf
测试Nginx配置并重新启动服务。
nginx -t
systemctl restart nginx
确保没有错误。
第7步 - 使用HHVM和Nginx创建虚拟主机
在此步骤中,我们将使用Nginx和hhvm创建一个新的虚拟主机配置。 我将使用域名“natsume.co”为这个例子。 请使用您自己的域名,并将其在配置文件和WordPress安装中进行替换。
转到我们将存储虚拟主机文件的nginx conf.d目录:
cd /etc/nginx/conf.d/
用vim创建新配置“natsume.conf”
vim natsume.conf
将虚拟主机配置粘贴到下面:
server { listen 80; server_name natsume.co; # note that these lines are originally from the "location /" block root /var/www/hakase; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; location = /50x.html { root /var/www/hakase; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/hhvm/hhvm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
保存并退出。
在我们的虚拟主机配置中,我们将域名的Web根目录定义为“/ var / www / hakase”
目录。 该目录不存在,因此我们必须创建它,并将所有权更改为nginx用户和组。
mkdir -p /var/www/hakase
chown -R nginx:nginx /var/www/hakase
接下来,配置文件和目录的SELinux上下文。
semanage fcontext -a -t httpd_config_t "/etc/nginx/conf.d(/.*)?"
restorecon -Rv /etc/nginx/conf.d
最后,测试nginx配置以确保没有错误,然后重新启动nginx:
nginx -t
systemctl restart nginx
第8步 - 安装WordPress
在第5步中,我们为WordPress安装创建了虚拟主机配置。 现在我们只需要下载WordPress并使用我们在第3步中创建的数据库和用户来编辑数据库配置。
转到Web根目录“/ var / www / hakase”
,并使用wget命令下载WordPress:
cd/var/www/hakase
wget wordpress.org/latest.tar.gz
提取“latest.tar.gz”
并将所有WordPress文件和目录移动到当前目录:
tar -xzvf latest.tar.gz
mv wordpress/* .
接下来,将“wp-config-sample.php”
文件复制到“wp-config.php”
并使用vim进行编辑:
cp wp-config-sample.php wp-config.php
vim wp-config.php
将DB_NAME设置为“wordpressdb” ,将DB_USER设置为“wpuser” ,将DB_PASSWORD设置为“wpuser @” 。
define('DB_NAME', 'wordpressdb'); define('DB_USER', 'wpuser'); define('DB_PASSWORD', 'wpuser@'); define('DB_HOST', 'localhost');
保存并退出。
更改WordPress目录的SELinux上下文。
semanage fcontext -a -t httpd_sys_content_t "/var/www/hakase(/.*)?"
restorecon -Rv /var/www/hakase
现在打开一个网页浏览器,并输入您的wordpress域的域名到地址栏,我的是“natsume.co”。
选择英文,然后点击“ 继续 ”。
使用您的信息填写网站标题和说明,然后单击“安装Wordpress”
。
等到安装完成。 您将看到下面的页面,点击“登录”
登录到WordPress管理信息中心:
键入您的管理员用户和密码,然后再次单击“登录”
。
现在您正在使用WordPress管理信息中心。
Wordpress主页。
CentOS 7上的Nginx和HHVM的Wordpress已经成功安装。