1. 程式人生 > >Linux/Ubuntu16.04+Nginx+Mysql+PHP 搭建wordpress

Linux/Ubuntu16.04+Nginx+Mysql+PHP 搭建wordpress

首先安裝Linux,Nginx,MySQL,PHP(LEMP堆疊)

第一步:安裝Nginx

sudo apt-get update
sudo apt-get install nginx

此時訪問你的伺服器地址應該會出現這個畫面

clipboard.png

第二步:安裝MySQL以管理站點資料

安裝

sudo apt-get install mysql-server

系統將要求您提供root(管理)密碼,以便在MySQL系統中使用。

第3步:安裝PHP進行處理

因為ubuntu16.04只支援php7,所以安裝php7

sudo apt-get install php-fpm
php-mysql

配置PHP處理器

我們現在已經安裝了PHP元件,但是我們需要進行輕微的配置更改以使我們的設定更安全。

php-fpm使用root許可權開啟主配置檔案:

sudo vim /etc/php/7.0/fpm/php.ini

在檔案中尋找的是設定的引數cgi.fix_pathinfo。這將用分號(;)註釋掉,預設設定為“1”。

這是一個非常不安全的設定,因為它告訴PHP嘗試執行它找不到所請求的PHP檔案時可以找到的最接近的檔案。這基本上允許使用者以允許他們執行不應該被允許執行的指令碼的方式來建立PHP請求。

我們將通過取消註釋該行並將其設定為“0”來更改這兩個條件,如下所示:

在vim中可以使用/後面接內容進行查詢

cgi.fix_pathinfo=0

重啟PHP處理

sudo systemctl restart php7.0-fpm

第4步:配置Nginx以使用PHP處理器

執行以下命令

sudo vim /etc/nginx/sites-available/default

Nginx預設伺服器塊檔案如下所示:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index
.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } }

對當前檔案進行幾點更改:

  • 首先,我們需要新增index.php作為index指令的第一個值,以便index.php在請求目錄時提供命名的檔案(如果可用)。

  • 我們可以修改server_name指令以指向我們伺服器的域名或公共IP地址。

  • 對於實際的PHP處理,我們只需要通過從每行前面刪除井號(#)來取消註釋處理PHP請求的檔案段。這將是location
    ~.php$位置塊,包含的fastcgi-php.conf程式碼段和與之關聯的套接字php-fpm。
  • 我們還將.htaccess使用相同的方法取消註釋處理檔案的位置塊。Nginx不處理這些檔案。如果這些檔案中的任何一個恰好進入文件根目錄,則不應向訪問者提供這些檔案。

更改在中標記的文字:

server {
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html;

#這一行中添加了index.php
index index.php index.html index.htm index.nginx-debian.html;

#此處修改你的域名,如果沒有則不需要修改原始檔
server_name server_domain_or_IP;

location / {
    try_files $uri $uri/ =404;
}

#以下所有內容需要新增
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

location ~ /\.ht {
    deny all;
}
#以上所有內容需要新增 

}

完成上述更改後,您可以儲存並關閉該檔案。

檢查ng的語法錯誤

sudo nginx -t

如果沒有問題重啟Nginx

sudo systemctl reload nginx

第5步:建立PHP檔案以測試配置

測試Nginx是否可以正確地將.php檔案傳遞給我們的PHP處理器。

我們可以通過在文件根目錄中建立測試PHP檔案來完成此操作。info.php在文字編輯器中開啟文件根目錄中呼叫的新檔案:

sudo vim /var/www/html/info.php

以下為內容

sudo rm /var/www/html/info.php

現在配置WordPress相關

第1步:為WordPress建立MySQL資料庫和使用者

WordPress使用MySQL來管理和儲存站點和使用者資訊。我們已經安裝了MySQL,但是我們需要為WordPress建立一個數據庫和使用者。

MySQL登入:

mysql -u root -p

輸入安裝mysql時候的密碼

首先,我們可以建立一個WordPress可以控制的獨立資料庫。你可以隨意呼叫它,但我們將wordpress在本指南中使用它來保持簡單。您可以通過鍵入以下命令為WordPress建立資料庫:

#其中wordpress只是為資料庫名稱,可以隨意修改
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

我們將建立此帳戶,設定密碼並授予對我們建立的資料庫的訪問許可權。我們可以通過輸入以下命令來完成此操作。

#其中wordpress為資料庫名稱,wordpressuser為建立的使用者的名稱,password為建立的使用者的密碼
GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';

重新整理許可權,以便MySQL的當前例項知道我們最近做出的更改:

FLUSH PRIVILEGES;

退出

EXIT;

第2步:調整Nginx的配置以正確處理WordPress

使用以下sudo許可權開啟預設伺服器塊檔案:

sudo vim /etc/nginx/sites-available/default

在主server塊中,我們需要新增幾個location塊。

通過建立要求精確匹配的位置開始塊/favicon.ico和/robots.txt,這兩個我們不希望記錄的請求。

我們將使用正則表示式位置來匹配任何靜態檔案請求。我們將再次關閉這些請求的日誌記錄,並將它們標記為高度可快取,因為這些通常是昂貴的服務資源。您可以調整此靜態檔案列表以包含您的站點可能使用的任何其他副檔名:

server {
    . . .
    #以下為需要新增的location
    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt { log_not_found off; access_log off; allow all; }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }
    . . .
}

調整try_files列表,以便不是將404錯誤作為預設選項返回,而是index.php使用請求引數將控制傳遞給 檔案。

server {
    . . .
    location / {
        #try_files $uri $uri/ =404;
        try_files $uri $uri/ /index.php$is_args$args;
    }
    . . .
}

完成後,儲存並關閉檔案。

檢查Nginx語法

sudo nginx -t

重啟

sudo systemctl reload nginx

第3步:安裝其他PHP擴充套件

在設定LEMP堆疊時,我們只需要一組非常小的擴充套件,以便讓PHP與MySQL通訊。WordPress及其許多外掛利用了額外的PHP擴充套件。

我們可以通過輸入以下命令下載並安裝一些最流行的PHP擴充套件以與WordPress一起使用:

sudo apt-get update
sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc

重啟PHP

sudo systemctl restart php7.0-fpm

第4步:下載WordPress

ps:以下步驟用於配置許可權問題,也可以直接將wordpress放到/var/www/html目錄下賦予許可權即可

現在我們的伺服器軟體已經配置好了,我們可以下載並設定WordPress。出於安全原因,我們始終建議從其站點獲取最新版本的WordPress。

轉換為可寫目錄,然後鍵入以下命令下載壓縮版本:

cd /tmp
curl -O https://wordpress.org/latest.tar.gz

解壓

tar xzvf latest.tar.gz

我們將暫時將這些檔案移動到我們的文件根目錄中。在我們這樣做之前,我們可以將示例配置檔案複製到WordPress實際讀取的檔名:

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

我們還可以建立upgrade目錄,以便WordPress在更新其軟體後嘗試自行執行此操作時不會遇到許可權問題:

mkdir /tmp/wordpress/wp-content/upgrade

現在,我們可以將目錄的全部內容複製到我們的文件根目錄中。我們使用該-a標誌來確保維護我們的許可權。我們在源目錄的末尾使用一個點來表示應該複製目錄中的所有內容,包括任何隱藏檔案:

sudo cp -a /tmp/wordpress/. /var/www/html

第5步:配置WordPress目錄

我們需要完成的一件大事是建立合理的檔案許可權和所有權。我們需要能夠以普通使用者的身份寫入這些檔案,並且我們需要Web伺服器也能夠訪問和調整某些檔案和目錄才能正常執行。

我們首先將文件根目錄中的所有檔案的所有權分配給使用者名稱。我們將root在本指南中使用我們的使用者名稱,但您應該更改此選項以匹配您的sudo使用者呼叫。我們會將群組所有權分配給www-data群組:

sudo chown -R root:www-data /var/www/html

配置setgit位

sudo find /var/www/html -type d -exec chmod g+s {} \;

為wp-content目錄提供組寫訪問許可權,以便Web介面可以進行主題和外掛更改:

sudo chmod g+w /var/www/html/wp-content

為Web伺服器提供對這兩個目錄中所有內容的寫訪問許可權:

sudo chmod -R g+w /var/www/html/wp-content/themes
sudo chmod -R g+w /var/www/html/wp-content/plugins

這只是一個合理的許可權設定開始,一些外掛可能需要單獨配置。

第六步:設定WordPress配置檔案

現在,我們需要對主WordPress配置檔案進行一些更改。

vim /var/www/html/wp-config.php

資料庫連線設定下方或檔案中的任何其他位置新增此設定:

. . .
/** MySQL database name */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

. . .

define('FS_METHOD', 'direct');

完成後儲存並關閉檔案。

第6步:通過Web介面完成安裝

進入你的伺服器地址進行配置。

注意事項:升級wordpress

更新的時候由於許可權問題可能無法更新。
此時需要重新賦權:

sudo chown -R www-data /var/www/html

完成後,再次鎖定許可權以確保安全性:

sudo chown -R root /var/www/html

建議僅在升級時才設定此許可權。

到此處wordpress部署成功。