爛泥:使用nginx利用虛擬主機搭建WordPress部落格

科技小能手發表於2017-11-28

最近開始打算學習nginx web伺服器,既然是學習還是以實用為目的的。我們在此以搭建WordPress部落格為例。

搭建WordPress部落格,我們需要Mysql資料庫、PHP環境和Nginx Web伺服器。主要分為以下四個步驟:

1、Mysql資料庫安裝及配置

2、PHP、PHP-FPM及與PHP相關元件的安裝及配置

3、Nginx Web伺服器搭建與配置

4、wordpress安裝

注意:本次實驗,除了nginx使用原始碼安裝外,其他的軟體全部使用rpm包yum方式進行安裝。

一、 Mysql資料庫安裝及配置

1.1 mysql資料庫安裝

mysql資料庫,我們使用yum方式進行安裝。如下:

yum -y install mysql mysql-server

clip_image001

clip_image002

1.2 修改mysql資料庫root使用者密碼及配置遠端訪問許可權

mysql資料庫安裝完畢後,我們來啟動mysql資料庫,並修改mysql資料庫的相關設定,同時還要為wordpress建立ailanni資料庫。如下:

/etc/init.d/mysqld start

clip_image003

修改mysql資料庫root使用者的密碼,mysql資料庫安裝後root使用者預設密碼為空。使用如下命令:

mysql -u root –p或者mysql -uroot –p

use mysql;

update user set password=password(`123456`) where user=`root`;

flush privileges;

/etc/init.d/mysqld restart

clip_image004

clip_image005

預設情況下,mysql資料庫只允許本機訪問mysql資料庫。但是為了對mysql資料庫管理的方便,我們需要開啟mysql資料庫遠端訪問的許可權。使用如下命令:

mysql -u root –p或者mysql -uroot –p

use mysql;

update user set host=`%` where user=`root`;

flush privileges;

/etc/init.d/mysqld restart

clip_image006

clip_image007

以上配置完畢後,你會發現mysql連線非常慢。我們只需要修改mysql資料庫的配置檔案即可。

開啟/etc/my.cnf檔案,在mysqld中,加入skip-name-resolve,然後重啟mysql資料庫,即可。如下:

vi /etc/my.cnf

/etc/init.d/mysqld restart

clip_image008

1.3 建立wordpress所需資料庫

以上操作完畢後,我們再連線mysql資料庫,在此我們使用的是Navicat Premium資料庫客戶端。

通過Navicat Premium建立Wordpress部落格所需要的資料庫,有關使用Navicat Premium建立mysql資料庫,可以參考《爛泥:Navicat Premium使用mysql資料庫》,資料庫建立完畢後如下:

clip_image009

當然我們也可以使用,phpmyadmin建立wordpress說需要的資料庫。

有關在nginx上安裝與使用phpmyadmin,我會在下一篇文章中介紹。

二、PHPPHP-FPM及與PHP相關元件的安裝及配置

mysql資料庫安裝完畢後,我們現在來配置php環境。

2.1 安裝PHP及其相關元件

首先安裝php及相關的元件,使用如下命令:

yum -y install php*

clip_image010

clip_image011

在php的相關元件中,我們一定要注意php-mysql與php-fpm這兩個元件。其中php-mysql之php連線mysql使用,否則在安裝WordPress時,會提示:您的PHP似乎沒有安裝執行WordPress所必需的MySQL擴充套件。這個安裝完畢後,要重啟mysql資料庫,否則wordpress無法連線mysql資料庫。

而php-fpm是php配合naginx使用的,nginx本身不支援php,通過php-fpm配合nginx才解析php語言。

這兩個元件其實是可以單獨分開進行安裝的,如下:

yum –y install php-mysql

yum –y install php-fpm

以上安裝完畢後,我們來檢視php的版本。如下:

php -v

clip_image012

2.2 配置php-fpm

php相關元件安裝完畢後,我們就要來配置php-fpm。

檢視php-fpm的相關安裝文件,如下:

rpm -ql php-fpm

clip_image013

通過上圖,我們可以看到php-fpm的相關配置檔案。主要配置檔案為/etc/php-fpm.conf,現在檢視該配置檔案,如下:

more /etc/php-fpm.conf

clip_image014

你會發現該配置檔案根本就沒有定義啊,php-fpm所需要監聽的埠以及監聽的地址。

難道說我們說分析的不對?

呵呵,其實我們分析的一點都沒有錯。注意上圖中,我們標記出來的部分。

include=/etc/php-fpm.d/*.conf

這條語句很重要,它包含了真的php-fpm說配置的關鍵部分。該關鍵配置檔案就是在php-fpm安裝圖中標記出來的www.conf檔案。

/etc/php-fpm.d/www.conf

現在我們來檢視該檔案,如下:

more /etc/php-fpm.d/www.conf

clip_image015

這張圖,標記出來的部分,顯示的是php-fpm要監聽的地址和埠。

clip_image016

這張圖,顯示的是執行php-fpm程式時,所使用的使用者及使用者組。在此,我們使用預設使用者及使用者組apache。

說白了,只要我們安裝好php-fpm不進行任何配置,使用預設的配置即可。

當然如果你想進一步優化php-fpm配置的話,可以通過php-fpm安裝時說給出的配置模版來配置,該配置模版位於:

more /usr/share/doc/php-fpm-5.3.3/php-fpm.conf.default

clip_image017

以上配置完畢後,我們來啟動php-fpm,並檢視是否正常監聽埠以及地址。如下:

/etc/init.d/php-fpm start

chkconfig php-fpm on

netstat -tunlp |grep 9000

ps aux |grep php-fpm

clip_image018

通過上圖,我們可以看到目前php-fpm已經正常執行,監聽的地址及埠為:127.0.0.1:9000,並且php-fpm是以apache使用者執行的。而主程式是以root使用者在執行。

通過php-fpm的啟動方式,我們可以看到php-fpm是以服務的方式在執行。那麼我們也可以通過伺服器的方式,重啟和關閉php-fpm。如下:

/etc/init.d/php-fpm restart

/etc/init.d/php-fpm stop

clip_image019

三、Nginx Web伺服器搭建與配置

3.1 安裝Nginx

把下載好的nginx上傳到伺服器上,使用如下命令:

scp tengine-2.0.3.tar.gz root@192.168.1.102:/tmp

ifconfig eth0|grep “inet addr”|awk `{print $2}`|cut -d: -f2

clip_image020

解壓nginx,並進行編譯、安裝如下:

tar -xf /tmp/tengine-2.0.3.tar.gz -C ./

./configure

clip_image021

make && make install

clip_image022

3.2 啟動nginx

nginx安裝完畢後,我們來開始啟動nginx。nginx可以通過兩種方式進行啟動。

一種是如下:

/usr/local/nginx/sbin/nginx

另外一種如下:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

其實第一種方式,預設情況下是要載入/usr/local/nginx/conf/nginx.conf配置檔案的。

clip_image023

clip_image024

通過上圖,我們可以很明顯的看到。nginx已經正常啟動,並且也可以正常訪問。

現在我們看看nginx執行的使用者,如下:

ps -aux|grep nginx

clip_image025

通過上圖,我們可以看到目前nginx執行在nobody使用者下。

3.3 配置Nginx支援php

nginx安裝完畢後,我們就需要來配置nginx使其支援php,並且我們也要配置nginx,讓wordpress以虛擬主機的形式進行安裝。

我們先來配置有關php的選項。

在nginx的配置檔案把有關fastcgi有關的註釋項,全部去掉。如下:

vi /usr/local/nginx/conf/nginx.conf

location ~ .php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

clip_image026

上述配置完畢後,我們來給nginx配置主頁。就是新增index.php檔案,如下:

location / {

root html;

index index.php index.html index.htm;

}

clip_image027

現在我們來測試下,nginx有關php的配置是否正確。編輯index.php檔案,加入<?php phpinfo();?>,如下:

vi ./html/index.php

clip_image028

現在來測試下nginx配置是否正確,然後優雅的重啟nginx,使用如下命令:

/usr/local/nginx/sbin/nginx –t

/usr/local/nginx/sbin/nginx -s reload

clip_image029

clip_image030

通過上圖,我們可以看到目前nginx已經可以正常的支援php。

3.4 配置Nginx支援虛擬主機

nginx有關php的配置完畢後,我們現在來配置nginx虛擬主機。

其實nginx的配置很簡單,整個配置檔案。只有一個http標籤,而虛擬主機的配置就是一個一個server標籤。

但是server標籤必須在包含在http標籤中,這樣說的目的是server標籤既可以在http所在的配置檔案,也可以以單獨的檔案存在,但是需要在http標籤中使用include進行包含。

下面是我配置的一個虛擬主機a.ilanni.com,如下:

vi /usr/local/nginx/conf/nginx.conf

server {

listen 80;

server_name a.ilanni.com;

root /ilanni/a.ilanni.com/;

index index.php;

location ~ .php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}

clip_image031

注意,我現在是把a.ilanni.com這個虛擬主機的根目錄存放在/ilanni/a.ilanni.com/這個目錄下,並且該目錄的使用者及使用者組為root,如下:

clip_image032

為了和前面nginx的預設主頁進行區別,我現在把虛擬主機a.ilanni.com的主頁,使用的是一個php探針。

clip_image033

以上虛擬主機配置完畢後,我們來重啟下nginx,如下:

/usr/local/nginx/sbin/nginx –t

/usr/local/nginx/sbin/nginx -s reload

clip_image034

通過上圖,我們可以很明顯的看到。目前虛擬主機a.ilanni.com,已經可以正常訪問,可以顯示的確實我提到的php探針。

四、wordpress安裝

以上我們把wordpress安裝是,所需要的mysql資料庫、nginx web伺服器都已經搭建完畢。

現在我們把wordpress安裝包,上傳到伺服器上進行解壓,如下:

scp wordpress-4.0-zh_CN.tar.gz root@192.168.1.213:/ilanni

tar -xf wordpress-4.0-zh_CN.tar.gz

clip_image035

把解壓後的檔案複製到虛擬主機a.ilanni.com根目錄下,如下:

cp -rv ./wordpress a.ilanni.com/

clip_image036

開始安裝wordpress,在瀏覽器中訪問a.ilanni.com,如下:

clip_image037

填寫mysql資料庫的相關資訊。如下:

clip_image038

複製該資訊到檔案wp-config.php中,如果該檔案不存在,則在a.ilanni.com根目錄下,建立wp-config.php檔案,如下:

clip_image039

vi wp-config.php

clip_image040

設定部落格的相關悉尼型,如下:

clip_image041

提示已經安裝成功,如下:

clip_image042

訪問虛擬機器a.ilanni.com主頁,如下:

clip_image043

到此有關在nginx下安裝wordpress部落格,已經完成。

本文轉自 爛泥行天下 51CTO部落格,原文連結:http://blog.51cto.com/ilanni/1558446



相關文章