如何在 CentOS 7 上使用 HHVM 和 Nginx 安装 WordPress
在此页
- 第 1 步 - 配置 SELinux 并添加 Epel 存储库
- 第 2 步 - 安装 Nginx
- 第 3 步 - 安装和配置 MariaDB
- 第 4 步 - 安装 HHVM
- 第 5 步 - 配置 HHVM
- 第 6 步 - 配置 HHVM 和 Nginx
- 第 7 步 - 使用 HHVM 和 Nginx 创建虚拟主机
- 第 8 步 - 安装 WordPress
- 参考资料
HHVM(HipHop Virtual Machine)是一个开源虚拟机,用于执行用 PHP 和 Hack 语言编写的程序。 HHVM 由 Facebook 开发,它提供了当前 PHP 7 版本的大部分功能。要在您的服务器上运行 HHVM,您可以使用 FastCGI 将 HHVM 与 Nginx 或 Apache 网络服务器连接起来,或者您可以使用 HHVM 中内置的名为“Proxygen”的网络服务器。
在本教程中,我将向您展示如何使用 HHVM 和 Nginx 作为 Web 服务器安装 WordPress。我将使用 CentOS 7 作为操作系统,因此需要 CentOS 的基本知识。
先决条件
- CentOS 7 - 64 位
- 根权限
第 1 步 - 配置 SELinux 并添加 Epel 存储库
在本教程中,我们将在强制模式下使用 SELinux,因此我们需要在系统上安装 SELinux 管理工具。我们将使用 setools 和 setrobleshoot 来管理 SELinux 策略。
默认情况下,SELinux 在 CentOS 7 上启用,我们可以使用以下命令检查:
sestatus
getenforce

您可以看到 SELinux 已启用强制模式。
接下来,使用 yum 命令安装 setools 和 setroubleshoot。
yum -y install setroubleshoot setools net-tools
安装完成后,您可以安装 EPEL 存储库。
yum -y install epel-release
第 2 步 - 安装 Nginx
Nginx 或 engine-x 是一种轻量级的 Web 服务器,具有高性能和低内存消耗。在 CentOS 上,我们可以使用 yum 安装 Nginx 包。确保您以根用户身份登录!
从 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 数据库中分叉出来,但在主要功能上与 MySQL 保持兼容。在此步骤中,我们将安装 MariaDB 并为 MariaDB 数据库配置 root 密码。然后我们将创建 WordPress 安装所需的新数据库和新用户。
安装 mariadb 和 mariadb 服务器:
yum -y install mariadb mariadb-server
启动 MariaDB 并添加要在启动时自动启动的服务:
systemctl start mariadb
systemctl enable mariadb
MariaDB已经启动,现在我们要为mariadb/mysql数据库配置root密码。输入以下命令以设置 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 root 密码已配置。现在登录到 MariaDB/MySQL shell 并为我们的 WordPress 安装创建一个新数据库“wordpressdb”和一个密码为“[email ”的新用户“wpuser”。为您的安装选择一个安全的密码!
登录到 MariaDB/MySQL shell:
mysql -u root -p
TYPE YOUR PASSWORD
创建新数据库和新用户:
create database wordpressdb;
create user ';
flush privileges;
\q

MariaDB 已安装,并为我们的 WordPress 安装创建了新数据库。
第 4 步 - 安装 HHVM
对于 HHVM 安装,我们需要安装许多依赖项。我们可以通过从 github 下载源代码或安装 Internet 上可用的预构建包来从源代码安装 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 作为 systemd 服务运行。我们将在更快的 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用户下,所以我们必须将socket文件目录的属主更改为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 将不会运行,因为没有 socket 文件的目录,所以我们必须在启动时自动创建它。
使用 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
在此步骤中,我们将配置 HHVM 以与 Nginx Web 服务器一起运行。我们需要在 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;
}
}
保存并退出。
在我们的虚拟主机配置中,我们将域名的网站根目录定义为\/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 步中创建的数据库和用户来编辑数据库配置。
进入网站根目录“/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 设置为“[email ”。
define('DB_NAME', 'wordpressdb');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', '');
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 已成功安装。
参考
- <李>
- https://www.nginx.com/blog/nginx-se-linux-changes-upgrading-rhel-6-6/