Linux中國

如何在 CentOS 7 中在 HHVM 和 Nginx 之上安裝 WordPress

在這篇教程中,我將展示給你如何在 Nginx Web 伺服器的 HHVM 上安裝 WordPress。這裡我使用 CentOS 7 作為操作系統,所以你需要懂一點 CentOS 操作的基礎。

先決條件

  • CentOS 7 - 64位
  • Root 許可權

步驟 1 - 配置 SELinux 並添加 EPEL 倉庫

在本教程中,我們將使用 SELinux 的強制模式,所以我們需要在系統上安裝一個 SELinux 管理工具。這裡我們使用 setoolssetrobleshoot 來管理 SELinux 的各項配置。

CentOS 7 已經默認啟用 SELinux,我們可以通過以下命令來確認:

# sestatus
# getenforce

驗證 SELinux 運行狀態

如圖,你能夠看到,SELinux 已經開啟了強制模式。

接下來就是使用 yum 來安裝 setoolssetroubleshoot 了。

# yum -y install setroubleshoot setools net-tools

安裝好這兩個後,再安裝 EPEL 倉庫。

# yum -y install epel-release

步驟 2 - 安裝 Nginx

Nginx (發音:engine-x) 是一個高性能、低內存消耗的輕量級 Web 伺服器軟體。在 CentOS 中可以使用 yum 命令來安裝 Nginx 包。確保你以 root 用戶登錄系統。

使用 yum 命令從 CentOS 倉庫中安裝 nginx。

# yum -y install nginx

現在可以使用 systemctl 命令來啟動 Nginx,同時將其設置為跟隨系統啟動。

# systemctl start nginx
# systemctl enable nginx

為確保 Nginx 已經正確運行於伺服器中,在瀏覽器上輸入伺服器的 IP,或者如下使用 curl 命令檢查顯示結果。

# curl 192.168.1.110

我這裡使用瀏覽器來驗證。

Nginx 正確運行

步驟 3 - 安裝並配置 MariaDB

MariaDB 是由原 MySQL 開發者 Monty Widenius 開發的一款開源資料庫軟體,它由 MySQL 分支而來,與 MySQL 的主要功能保持一致。在這一步中,我們要安裝 MariaDB 資料庫並為之配置好 root 密碼,然後再為所要安裝的 WordPress 創建一個新的資料庫和用戶。

安裝 mariadb 和 mariadb-server:

# yum -y install mariadb mariadb-server

啟動 MariaDB 並添加為服務,以便隨系統啟動。

# systemctl start mariadb
# systemctl enable mariadb

現在 MariaDB 已經啟動了,還需要為 mariadb/mysql 資料庫配置 root 用戶密碼。輸入以下命令來設置 MariaDB root 密碼。

# mysql_secure_installation

提示設置 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 和新用戶 wpuser,密碼設置為 wpuser@。為你的設置選用一個安全的密碼。

登錄到 MariaDB/MySQL shell:

# mysql -u root -p

接著輸入你剛剛設置的 root 用戶密碼。

創建資料庫和用戶:

MariaDB [(none)]> create database wordpressdb;
MariaDB [(none)]> create user wpuser@localhost identified by 'wpuser@';
MariaDB [(none)]> grant all privileges on wordpressdb.* to wpuser@localhost identified by 'wpuser@';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> q

為 WordPress 的安裝創建資料庫和用戶

現在安裝好了 MariaDB,並為 WordPress 創建好了資料庫。

步驟 4 - 安裝 HHVM

對於 HHVM,我們需要安裝大量的依賴項。作為選擇,你可以從 GitHub 下載 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 預編譯包鏡像站點 下載的 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

安裝 HHVM

步驟 5 - 配置 HHVM

這一步中,我們來配置 HHVM 以系統服務來運行。我們不通過埠這種常規的方式來運行它,而是選擇使用 unix socket 文件的方式,這樣運行的更快速一點。

進入 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 socket,如下:

hhvm.server.file_socket = /var/run/hhvm/hhvm.sock

保存文件並退出編輯器。

我們已在 hhvm 服務文件中定義了 hhvm 以 nginx 用戶身份運行,所以還需要把 socket 文件目錄的屬主變更為 nginx。然後我們還必須在 SELinux 中修改 hhvm 目錄的許可權上下文以便讓它可以訪問這個 socket 文件。

# 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 運行於 socket 文件。

# netstat -pl | grep hhvm

Check the HHVM socket file

步驟 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 配置文件到 include 行。

# vim nginx.conf

添加配置到第 57 行的 server 指令中。

include /etc/nginx/hhvm.conf;

保存並退出。

然後修改 SELinux 中關於 hhvm 配置文件的許可權上下文。

# 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 設置為 wordpressdbDB_USER 設置為 wpuser 以及 DB_PASSWORD 設置為 wpuser@

define('DB_NAME', 'wordpressdb');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'wpuser@');
define('DB_HOST', 'localhost');

保存並退出。

WordPress 配置

修改關於 WordPress 目錄的 SELinux 上下文。

# semanage fcontext -a -t httpd_sys_content_t "/var/www/hakase(/.*)?"
# restorecon -Rv /var/www/hakase

現在打開 Web 瀏覽器,在地址欄輸入你之前為 WordPress 設置的域名,我這裡是 natsume.co

選擇語言並點擊 繼續 Continue

安裝 WordPress - 語言選擇

根據自身要求填寫站點標題和描述並點擊 安裝 WordPress Install WordPress "。

安裝 WordPress - 配置管理員賬號和站點標題

耐心等待安裝完成。你會見到如下頁面,點擊 登錄 Log In 來登錄到管理面板。

安裝 WordPress - 成功安裝

輸入你設置的管理員用戶賬號和密碼,在此點擊 登錄 Log In

登錄到 wordpress 管理面板

現在你已經登錄到 WordPress 的管理面板了。

Wordpress 管理面

WordPress 的主頁:

Wordpress 默認主頁

至此,我們已經在 CentOS 7 上通過 Nginx 和 HHVM 成功安裝 WordPress。

參考鏈接

譯者簡介:

GHLandy —— 劃不完粉腮柳眉泣別離。

via: https://www.howtoforge.com/tutorial/how-to-install-wordpress-with-hhvm-and-nginx-on-centos-7/

作者:Muhammad Arul 譯者:GHLandy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國