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

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

第一步:安裝Nginx

sudo apt-get update
sudo apt-get install nginx

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

clipboard.png

第二步:安裝MySQL以管理站點數據

安裝css

sudo apt-get install mysql-server

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

第3步:安裝PHP進行處理

由於ubuntu16.04只支持php7,因此安裝php7mysql

sudo apt-get install php-fpm php-mysql

配置PHP處理器

咱們如今已經安裝了PHP組件,可是咱們須要進行輕微的配置更改以使咱們的設置更安全。nginx

php-fpm使用root權限打開主配置文件:git

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

在文件中尋找的是設置的參數cgi.fix_pathinfo。這將用分號(;)註釋掉,默認設置爲「1」。正則表達式

這是一個很是不安全的設置,由於它告訴PHP嘗試執行它找不到所請求的PHP文件時能夠找到的最接近的文件。這基本上容許用戶以容許他們執行不該該被容許執行的腳本的方式來建立PHP請求。sql

咱們將經過取消註釋該行並將其設置爲「0」來更改這兩個條件,以下所示:數據庫

在vim中可使用/後面接內容進行查找ubuntu

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

如下爲內容

<?php
phpinfo();

完成後,保存並關閉文件。

如今,您能夠經過訪問

服務器ip/info.php:
能夠看到該網頁

clipboard.png

若是您看到一個看起來像這樣的頁面,那麼您已成功使用Nginx設置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部署成功。

相關文章
相關標籤/搜索