閱讀466 返回首頁    go 阿裏雲 go 技術社區[雲棲]


如何在 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 權限

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

在本教程中,我們將使用 SELinux 的強製模式,所以我們需要在係統上安裝一個 SELinux 管理工具。這裏我們使用 setools 和 setrobleshoot 來管理 SELinux 的各項配置。

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


  1. # sestatus
  2. # getenforce

驗證 SELinux 運行狀態

驗證 SELinux 運行狀態

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

接下來就是使用 yum 來安裝 setools 和 setroubleshoot 了。


  1. # yum -y install setroubleshoot setools net-tools

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


  1. # yum -y install epel-release

步驟 2 - 安裝 Nginx

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

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


  1. # yum -y install nginx

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


  1. # systemctl start nginx
  2. # systemctl enable nginx

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


  1. # curl 192.168.1.110

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

Nginx 正確運行

Nginx 正確運行

步驟 3 - 安裝並配置 MariaDB

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

安裝 mariadb 和 mariadb-server:


  1. # yum -y install mariadb mariadb-server

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


  1. # systemctl start mariadb
  2. # systemctl enable mariadb

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


  1. # mysql_secure_installation

提示設置 root 用戶密碼時,輸入新密碼進行設置:


  1. Set root password? [Y/n] Y
  2. New password:
  3. Re-enter new password:
  4. Remove anonymous users? [Y/n] Y
  5. ... Success!
  6. Disallow root login remotely? [Y/n] Y
  7. ... Success!
  8. Remove test database and access to it? [Y/n] Y
  9. Reload privilege tables now? [Y/n] Y
  10. ... Success!

這樣就設置好了 MariaDB 的 root 密碼。現在登錄到 MariaDB/MySQL shell 並為 WordPress 的安裝創建一個新數據庫 wordpressdb 和新用戶 wpuser,密碼設置為 wpuser@。為你的設置選用一個安全的密碼。

登錄到 MariaDB/MySQL shell:


  1. # mysql -u root -p

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

創建數據庫和用戶:


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

為 WordPress 的安裝創建數據庫和用戶

為 WordPress 的安裝創建數據庫和用戶

現在安裝好了 MariaDB,並為 WordPress 創建好了數據庫。

步驟 4 - 安裝 HHVM

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

為 HHVM 安裝依賴項:


  1. # yum -y install cpp gcc-c++ cmake git psmisc {binutils,boost,jemalloc,numactl}-devel \
  2. > {ImageMagick,sqlite,tbb,bzip2,openldap,readline,elfutils-libelf,gmp,lz4,pcre}-devel \
  3. > lib{xslt,event,yaml,vpx,png,zip,icu,mcrypt,memcached,cap,dwarf}-devel \
  4. > {unixODBC,expat,mariadb}-devel lib{edit,curl,xml2,xslt}-devel \
  5. > glog-devel oniguruma-devel ocaml gperf enca libjpeg-turbo-devel openssl-devel \
  6. > mariadb mariadb-server libc-client make

然後是使用 rpm 安裝從 HHVM 預編譯包鏡像站點 下載的 HHVM 預編譯包。


  1. # rpm -Uvh http://mirrors.linuxeye.com/hhvm-repo/7/x86_64/hhvm-3.15.2-1.el7.centos.x86_64.rpm
  2. # ln -s /usr/local/bin/hhvm /bin/hhvm

安裝好 HHVM 之後使用如下命令按了驗證:


  1. # hhvm --version

為了能使用 PHP 命令,可以把 hhvm 命令設置為 php。這樣在 shell 中輸入 php 命令的時候,你會看到和輸入 hhvm 命令一樣的結果。


  1. # sudo update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60
  2. # php --version

安裝 HHVM

安裝 HHVM

步驟 5 - 配置 HHVM

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

進入 systemd 配置目錄,並創建一個 hhvm.service 文件。


  1. # cd /etc/systemd/system/
  2. # vim hhvm.service

複製粘貼如下配置到文件中去。


  1. [Unit]
  2. Description=HHVM HipHop Virtual Machine (FCGI)
  3. After=network.target nginx.service mariadb.service
  4. [Service]
  5. ExecStart=/usr/local/bin/hhvm --config /etc/hhvm/server.ini --user nginx --mode daemon -vServer.Type=fastcgi -vServer.FileSocket=/var/run/hhvm/hhvm.sock
  6. [Install]
  7. WantedBy=multi-user.target

保存文件退出 vim。

接下來,進入 hhvm 目錄並編輯 server.ini 文件。


  1. # cd /etc/hhvm/
  2. # vim server.ini

將第 7 行 hhvm.server.port 替換為 unix socket,如下:


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

保存文件並退出編輯器。

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


  1. # chown -R nginx:nginx /var/run/hhvm/
  2. # semanage fcontext -a -t httpd_var_run_t "/var/run/hhvm(/.*)?"
  3. # restorecon -Rv /var/run/hhvm

服務器重啟之後,hhvm 將不能運行,因為沒有存儲 socket 文件的目錄,所有還必須在啟動的時候自動創建一個。

使用 vim 編輯 rc.local 文件。


  1. # vim /etc/rc.local

將以下配置粘貼到文件末行。


  1. # mkdir -p /var/run/hhvm/
  2. # chown -R nginx:nginx /var/run/hhvm/
  3. # semanage fcontext -a -t httpd_var_run_t "/var/run/hhvm(/.*)?"
  4. # restorecon -Rv /var/run/hhvm

保存文件並退出 vim。然後給文件賦予執行權限。


  1. # chmod +x /etc/rc.local

重新加載 systemd 服務,啟動 hhvm 並設置為隨係統啟動。


  1. # systemctl daemon-reload
  2. # systemctl start hhvm
  3. # systemctl enable hhvm

要確保無誤,使用 netstat 命令驗證 hhvm 運行於 socket 文件。


  1. # netstat -pl | grep hhvm

Check the HHVM socket file

Check the HHVM socket file

步驟 6 - 配置 HHVM 和 Nginx

在這個步驟中,我們將配置 HHVM 已讓它運行在 Nginx Web 服務中,這需要在 Nginx 目錄創建一個 hhvm 的配置文件。

進入 /etc/nginx 目錄,創建 hhvm.conf 文件。


  1. # cd /etc/nginx/
  2. # vim hhvm.conf

粘貼以下內容到文件中。


  1. location ~ \.(hh|php)$ {
  2. root /usr/share/nginx/html;
  3. fastcgi_keep_conn on;
  4. fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
  5. fastcgi_index index.php;
  6. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  7. include fastcgi_params;
  8. }

然後,保存並退出。

接下來,編輯 nginx.conf 文件,添加 hhvm 配置文件到 include 行。


  1. # vim nginx.conf

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


  1. include /etc/nginx/hhvm.conf;

保存並退出。

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


  1. # semanage fcontext -a -t httpd_config_t /etc/nginx/hhvm.conf
  2. # restorecon -v /etc/nginx/hhvm.conf

測試 Nginx 配置並重啟服務。


  1. # nginx -t
  2. # systemctl restart nginx

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

步驟 7 - 通過 HHVM 和 Nginx 創建虛擬主機

在這一步中,我們要為 Nginx 和 hhvm 創建一個新的虛擬主機配置文件。這裏我使用域名 natsume.co 來作為例子,你可以使用你主機喜歡的域名,並在配置文件中相應位置以及 WordPress 安裝過程中進行替換。

進入 nginx 的 conf.d 目錄,我們將在該目錄存儲虛擬主機文件。


  1. # cd /etc/nginx/conf.d/

使用 vim 創建一個名為 natsume.conf 的配置文件。


  1. # vim natsume.conf

粘貼以下內容到虛擬主機配置文件中。


  1. server {
  2. listen 80;
  3. server_name natsume.co;
  4. # note that these lines are originally from the "location /" block
  5. root /var/www/hakase;
  6. index index.php index.html index.htm;
  7. location / {
  8. try_files $uri $uri/ =404;
  9. }
  10. error_page 404 /404.html;
  11. location = /50x.html {
  12. root /var/www/hakase;
  13. }
  14. location ~ \.php$ {
  15. try_files $uri =404;
  16. fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
  17. fastcgi_index index.php;
  18. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  19. include fastcgi_params;
  20. }
  21. }

保存並退出。

在這個虛擬主機配置文件中,我們定義該域名的 Web 根目錄為 /var/www/hakase。目前該目錄還不存在,所有我們要創建它,並變更屬主為 nginx 用戶和組。


  1. # mkdir -p /var/www/hakase
  2. # chown -R nginx:nginx /var/www/hakase

接下來,為該文件和目錄配置 SELinux 上下文。


  1. # semanage fcontext -a -t httpd_config_t "/etc/nginx/conf.d(/.*)?"
  2. # restorecon -Rv /etc/nginx/conf.d

最後,測試 nginx 配置文件以確保沒有錯誤後,重啟 nginx:


  1. # nginx -t
  2. # systemctl restart nginx

步驟 8 - 安裝 WordPress

在步驟 5 的時候,我們已經為 WordPress 配置好了虛擬主機,現在隻需要下載 WordPress 和使用我們在步驟 3 的時候創建的數據庫和用戶來編輯數據庫配置就好了。

進入 Web 根目錄 /var/www/hakase 並使用 Wget 命令下載 WordPress:


  1. # cd /var/www/hakase
  2. # wget wordpress.org/latest.tar.gz

解壓 latest.tar.gz 並將 wordpress 文件夾中所有的文件和目錄移動到當前目錄:


  1. # tar -xzvf latest.tar.gz
  2. # mv wordpress/* .

下一步,複製一份 wp-config-sample.php 並更名為 wp-config.php,然後使用 vim 進行編輯:


  1. # cp wp-config-sample.php wp-config.php
  2. # vim wp-config.php

將 DB_NAME 設置為 wordpressdbDB_USER 設置為 wpuser 以及 DB_PASSWORD 設置為 wpuser@


  1. define('DB_NAME', 'wordpressdb');
  2. define('DB_USER', 'wpuser');
  3. define('DB_PASSWORD', 'wpuser@');
  4. define('DB_HOST', 'localhost');

保存並退出。

WordPress 配置

WordPress 配置

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


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

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

選擇語言並點擊繼續Continue。

安裝 Wordpress - 語言選擇

安裝 Wordpress - 語言選擇

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

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

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

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

安裝 Wordpress - 成功安裝

安裝 Wordpress - 成功安裝

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

登錄到 wordpress 管理麵板

登錄到 wordpress 管理麵板

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

Wordpress 管理麵

Wordpress 管理麵

Wordpress 的主頁:

Wordpress 默認主頁

Wordpress 默認主頁

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

原文發布時間為:2017-03-30

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-23 15:35:35

  上一篇:go  SSH 安全加固篇:通過“運維密碼”小程序實現 SSH 雙因子認證
  下一篇:go  阿裏健康整合額外醫療服務資源 “醫療信息化”圖景顯現