天天看點

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

hhvm (hiphop virtual machine) 是一個用于執行以 php 和 hack 語言編寫的代碼的虛拟環境。它是由 facebook 開發的,提供了目前 php 7 的大多數功能。要在你的伺服器上運作 hhvm,你需要使用 fastcgi 來将 hhvm 和 nginx 或 apache 銜接起來,或者你也可以使用 hhvm 中的内置 web 伺服器 proxygen。

在這篇教程中,我将展示給你如何在 nginx web 伺服器的 hhvm 上安裝 wordpress。這裡我使用 centos 7 作為作業系統,是以你需要懂一點 centos 操作的基礎。

先決條件

centos 7 - 64位

root 權限

<a target="_blank"></a>

在本教程中,我們将使用 selinux 的強制模式,是以我們需要在系統上安裝一個 selinux 管理工具。這裡我們使用 <code>setools</code> 和 <code>setrobleshoot</code> 來管理 selinux 的各項配置。

centos 7 已經預設啟用 selinux,我們可以通過以下指令來确認:

<code># sestatus</code>

<code># getenforce</code>

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

驗證 selinux 運作狀态

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

接下來就是使用 <code>yum</code> 來安裝 <code>setools</code> 和 <code>setroubleshoot</code> 了。

<code># yum -y install setroubleshoot setools net-tools</code>

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

<code># yum -y install epel-release</code>

nginx (發音:engine-x) 是一個高性能、低記憶體消耗的輕量級 web 伺服器軟體。在 centos 中可以使用 <code>yum</code>指令來安裝 nginx 包。確定你以 root 使用者登入系統。

使用 <code>yum</code> 指令從 centos 倉庫中安裝 nginx。

<code># yum -y install nginx</code>

現在可以使用 <code>systemctl</code> 指令來啟動 nginx,同時将其設定為跟随系統啟動。

<code># systemctl start nginx</code>

<code># systemctl enable nginx</code>

為確定 nginx 已經正确運作于伺服器中,在浏覽器上輸入伺服器的 ip,或者如下使用 <code>curl</code> 指令檢查顯示結果。

<code># curl 192.168.1.110</code>

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

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

nginx 正确運作

mariadb 是由原 mysql 開發者 monty widenius 開發的一款開源資料庫軟體,它由 mysql 分支而來,與 mysql 的主要功能保持一緻。在這一步中,我們要安裝 mariadb 資料庫并為之配置好 root 密碼,然後再為所要安裝的 wordpress 建立一個新的資料庫和使用者。

安裝 mariadb 和 mariadb-server:

<code># yum -y install mariadb mariadb-server</code>

啟動 mariadb 并添加為服務,以便随系統啟動。

<code># systemctl start mariadb</code>

<code># systemctl enable mariadb</code>

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

<code># mysql_secure_installation</code>

提示設定 root 使用者密碼時,輸入新密碼進行設定:

<code>set root password? [y/n] y</code>

<code>new password:</code>

<code>re-enter new password:</code>

<code></code>

<code>remove anonymous users? [y/n] y</code>

<code>... success!</code>

<code>disallow root login remotely? [y/n] y</code>

<code>remove test database and access to it? [y/n] y</code>

<code>reload privilege tables now? [y/n] y</code>

這樣就設定好了 mariadb 的 root 密碼。現在登入到 mariadb/mysql shell 并為 wordpress 的安裝建立一個新資料庫 <code>wordpressdb</code> 和新使用者 <code>wpuser</code>,密碼設定為 <code>wpuser@</code>。為你的設定選用一個安全的密碼。

登入到 mariadb/mysql shell:

<code># mysql -u root -p</code>

接着輸入你剛剛設定的 root 使用者密碼。

建立資料庫和使用者:

<code>mariadb [(none)]&gt; create database wordpressdb;</code>

<code>mariadb [(none)]&gt; create user wpuser@localhost identified by 'wpuser@';</code>

<code>mariadb [(none)]&gt; grant all privileges on wordpressdb.* to wpuser@localhost identified by 'wpuser@';</code>

<code>mariadb [(none)]&gt; flush privileges;</code>

<code>mariadb [(none)]&gt; \q</code>

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

為 wordpress 的安裝建立資料庫和使用者

現在安裝好了 mariadb,并為 wordpress 建立好了資料庫。

對于 hhvm,我們需要安裝大量的依賴項。作為選擇,你可以從 github 下載下傳 hhvm 的源碼來編譯安裝,也可以從網絡上擷取預編譯的包進行安裝。在本教程中,我使用的是預編譯的安裝包。

為 hhvm 安裝依賴項:

<code># yum -y install cpp gcc-c++ cmake git psmisc {binutils,boost,jemalloc,numactl}-devel \</code>

<code>&gt; {imagemagick,sqlite,tbb,bzip2,openldap,readline,elfutils-libelf,gmp,lz4,pcre}-devel \</code>

<code>&gt; lib{xslt,event,yaml,vpx,png,zip,icu,mcrypt,memcached,cap,dwarf}-devel \</code>

<code>&gt; {unixodbc,expat,mariadb}-devel lib{edit,curl,xml2,xslt}-devel \</code>

<code>&gt; glog-devel oniguruma-devel ocaml gperf enca libjpeg-turbo-devel openssl-devel \</code>

<code>&gt; mariadb mariadb-server libc-client make</code>

<code># rpm -uvh http://mirrors.linuxeye.com/hhvm-repo/7/x86_64/hhvm-3.15.2-1.el7.centos.x86_64.rpm</code>

<code># ln -s /usr/local/bin/hhvm /bin/hhvm</code>

安裝好 hhvm 之後使用如下指令按了驗證:

<code># hhvm --version</code>

為了能使用 php 指令,可以把 <code>hhvm</code> 指令設定為 <code>php</code>。這樣在 shell 中輸入 <code>php</code> 指令的時候,你會看到和輸入 <code>hhvm</code> 指令一樣的結果。

<code># sudo update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60</code>

<code># php --version</code>

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

安裝 hhvm

這一步中,我們來配置 hhvm 以系統服務來運作。我們不通過端口這種正常的方式來運作它,而是選擇使用 unix socket 檔案的方式,這樣運作的更快速一點。

進入 systemd 配置目錄,并建立一個 <code>hhvm.service</code> 檔案。

<code># cd /etc/systemd/system/</code>

<code># vim hhvm.service</code>

複制粘貼如下配置到檔案中去。

<code>[unit]</code>

<code>description=hhvm hiphop virtual machine (fcgi)</code>

<code>after=network.target nginx.service mariadb.service</code>

<code>[service]</code>

<code>execstart=/usr/local/bin/hhvm --config /etc/hhvm/server.ini --user nginx --mode daemon -vserver.type=fastcgi -vserver.filesocket=/var/run/hhvm/hhvm.sock</code>

<code>[install]</code>

<code>wantedby=multi-user.target</code>

儲存檔案退出 vim。

接下來,進入 <code>hhvm</code> 目錄并編輯 <code>server.ini</code> 檔案。

<code># cd /etc/hhvm/</code>

<code># vim server.ini</code>

将第 7 行 <code>hhvm.server.port</code> 替換為 unix socket,如下:

<code>hhvm.server.file_socket = /var/run/hhvm/hhvm.sock</code>

儲存檔案并退出編輯器。

我們已在 hhvm 服務檔案中定義了 hhvm 以 <code>nginx</code> 使用者身份運作,是以還需要把 socket 檔案目錄的屬主變更為 <code>nginx</code>。然後我們還必須在 selinux 中修改 hhvm 目錄的權限上下文以便讓它可以通路這個 socket 檔案。

<code># chown -r nginx:nginx /var/run/hhvm/</code>

<code># semanage fcontext -a -t httpd_var_run_t "/var/run/hhvm(/.*)?"</code>

<code># restorecon -rv /var/run/hhvm</code>

伺服器重新開機之後,hhvm 将不能運作,因為沒有存儲 socket 檔案的目錄,所有還必須在啟動的時候自動建立一個。

使用 vim 編輯 <code>rc.local</code> 檔案。

<code># vim /etc/rc.local</code>

将以下配置粘貼到檔案末行。

<code># mkdir -p /var/run/hhvm/</code>

儲存檔案并退出 vim。然後給檔案賦予執行權限。

<code># chmod +x /etc/rc.local</code>

重新加載 systemd 服務,啟動 hhvm 并設定為随系統啟動。

<code># systemctl daemon-reload</code>

<code># systemctl start hhvm</code>

<code># systemctl enable hhvm</code>

要確定無誤,使用 <code>netstat</code> 指令驗證 hhvm 運作于 socket 檔案。

<code># netstat -pl | grep hhvm</code>

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

check the hhvm socket file

在這個步驟中,我們将配置 hhvm 已讓它運作在 nginx web 服務中,這需要在 nginx 目錄建立一個 hhvm 的配置檔案。

進入 <code>/etc/nginx</code> 目錄,建立 <code>hhvm.conf</code> 檔案。

<code># cd /etc/nginx/</code>

<code># vim hhvm.conf</code>

粘貼以下内容到檔案中。

<code>location ~ \.(hh|php)$ {</code>

<code>root /usr/share/nginx/html;</code>

<code>fastcgi_keep_conn on;</code>

<code>fastcgi_pass unix:/var/run/hhvm/hhvm.sock;</code>

<code>fastcgi_index index.php;</code>

<code>fastcgi_param script_filename $document_root$fastcgi_script_name;</code>

<code>include fastcgi_params;</code>

<code>}</code>

然後,儲存并退出。

接下來,編輯 <code>nginx.conf</code> 檔案,添加 hhvm 配置檔案到 <code>include</code> 行。

<code># vim nginx.conf</code>

添加配置到第 57 行的 <code>server</code> 指令中。

<code>include /etc/nginx/hhvm.conf;</code>

儲存并退出。

然後修改 selinux 中關于 hhvm 配置檔案的權限上下文。

<code># semanage fcontext -a -t httpd_config_t /etc/nginx/hhvm.conf</code>

<code># restorecon -v /etc/nginx/hhvm.conf</code>

測試 nginx 配置并重新開機服務。

<code># nginx -t</code>

<code># systemctl restart nginx</code>

記住確定測試配置沒有錯誤。

在這一步中,我們要為 nginx 和 hhvm 建立一個新的虛拟主機配置檔案。這裡我使用域名 <code>natsume.co</code> 來作為例子,你可以使用你主機喜歡的域名,并在配置檔案中相應位置以及 wordpress 安裝過程中進行替換。

進入 nginx 的 <code>conf.d</code> 目錄,我們将在該目錄存儲虛拟主機檔案。

<code># cd /etc/nginx/conf.d/</code>

使用 vim 建立一個名為 <code>natsume.conf</code> 的配置檔案。

<code># vim natsume.conf</code>

粘貼以下内容到虛拟主機配置檔案中。

<code>server {</code>

<code>listen 80;</code>

<code>server_name natsume.co;</code>

<code># note that these lines are originally from the "location /" block</code>

<code>root /var/www/hakase;</code>

<code>index index.php index.html index.htm;</code>

<code>location / {</code>

<code>try_files $uri $uri/ =404;</code>

<code>error_page 404 /404.html;</code>

<code>location = /50x.html {</code>

<code>root /var/www/hakase;</code>

<code>location ~ \.php$ {</code>

<code>try_files $uri =404;</code>

<code>fastcgi_index index.php;</code>

<code>fastcgi_param script_filename $document_root$fastcgi_script_name;</code>

<code>include fastcgi_params;</code>

在這個虛拟主機配置檔案中,我們定義該域名的 web 根目錄為 <code>/var/www/hakase</code>。目前該目錄還不存在,所有我們要建立它,并變更屬主為 nginx 使用者群組。

<code># mkdir -p /var/www/hakase</code>

<code># chown -r nginx:nginx /var/www/hakase</code>

接下來,為該檔案和目錄配置 selinux 上下文。

<code># semanage fcontext -a -t httpd_config_t "/etc/nginx/conf.d(/.*)?"</code>

<code># restorecon -rv /etc/nginx/conf.d</code>

最後,測試 nginx 配置檔案以確定沒有錯誤後,重新開機 nginx:

在步驟 5 的時候,我們已經為 wordpress 配置好了虛拟主機,現在隻需要下載下傳 wordpress 和使用我們在步驟 3 的時候建立的資料庫和使用者來編輯資料庫配置就好了。

進入 web 根目錄 <code>/var/www/hakase</code> 并使用 wget 指令下載下傳 wordpress:

<code># cd&amp;nbsp;/var/www/hakase</code>

<code># wget wordpress.org/latest.tar.gz</code>

解壓 <code>latest.tar.gz</code> 并将 <code>wordpress</code> 檔案夾中所有的檔案和目錄移動到目前目錄:

<code># tar -xzvf latest.tar.gz</code>

<code># mv wordpress/* .</code>

下一步,複制一份 <code>wp-config-sample.php</code> 并更名為 <code>wp-config.php</code>,然後使用 vim 進行編輯:

<code># cp wp-config-sample.php wp-config.php</code>

<code># vim wp-config.php</code>

将 <code>db_name</code> 設定為 <code>wordpressdb</code>、<code>db_user</code> 設定為 <code>wpuser</code> 以及 <code>db_password</code> 設定為 <code>wpuser@</code>。

<code>define('db_name', 'wordpressdb');</code>

<code>define('db_user', 'wpuser');</code>

<code>define('db_password', 'wpuser@');</code>

<code>define('db_host', 'localhost');</code>

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

wordpress 配置

修改關于 wordpress 目錄的 selinux 上下文。

<code># semanage fcontext -a -t httpd_sys_content_t "/var/www/hakase(/.*)?"</code>

<code># restorecon -rv /var/www/hakase</code>

現在打開 web 浏覽器,在位址欄輸入你之前為 wordpress 設定的域名,我這裡是 <code>natsume.co</code>。

選擇語言并點選繼續continue。

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

安裝 wordpress - 語言選擇

根據自身要求填寫站點标題和描述并點選安裝 wordpressinstall wordpress"。

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

安裝 wordpress - 配置管理者賬号和站點标題

耐心等待安裝完成。你會見到如下頁面,點選登入log in來登入到管理面闆。

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

安裝 wordpress - 成功安裝

輸入你設定的管理者使用者賬号和密碼,在此點選登入log in。

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

登入到 wordpress 管理面闆

現在你已經登入到 wordpress 的管理面闆了。

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

wordpress 管理面

wordpress 的首頁:

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

wordpress 預設首頁

至此,我們已經在 centos 7 上通過 nginx 和 hhvm 成功安裝 wordpress。

原文釋出時間為:2017-03-30

本文來自雲栖社群合作夥伴“linux中國”