如何在Ubuntu 16.04中安裝Linux, Nginx, MySQL, PHP (LEMP stack)

https://www.sky8g.com/technology/3216/

我們都知道如果想運行一個網站或者手機app的話,必須需要後端服務,也就是服務器的支持。這樣你在訪問網頁的時候服務器才能給你想要的東西,今天我將給大家講述下如何在Ubuntu 16.x中安裝Linux,Nginx,Mysql,PHP等這四個合併起來被稱爲LEMP 有的教程稱 LNMP ,使其Nginx的發音是 nginx [engine x] 他是一個HTTP和反向代理服務器。

  1. 介紹
  2. LEMP安裝
  3. 總結

介紹

 

如果瀏覽不順暢請到原文章出處:https://www.sky8g.com/technology/3216/

請注意可能會提示風險,這是CSDN網站設置的問題,如果文章內的鏈接不是他們的網址,都會對用戶提示有風險,請點擊繼續訪問,本網站全部文章爲免費技術分享,請放心訪問,無需擔心。

請點擊此處查看完整文章:https://www.sky8g.com/technology/3216/
此篇文章是由SKY8G網作者原創,禁止抄襲。
 

LEMP集成軟件是一組可用於服務於動態web頁面和web應用程序的軟件。這是一個描述Linux操作系統和Nginx web服務器的縮寫詞。後端數據存儲在MySQL數據庫中和動態處理由PHP處理。

在這篇文章中,我將給大家講解如何在Ubuntu 16.04服務器上安裝LEMP軟件集。在安裝之前,你必須擁有服務器上sudo特權即使root帳戶。這樣你才能按照下面的教程進行學習。如果你是root用戶,請使用該用戶名登錄到您的服務器。現在,您已經準備好開始安裝的步驟。

LEMP安裝

步驟1:安裝Nginx Web服務器

我將使用Nginx,一種現代、高效的web服務器。我在這個過程中使用的所有軟件都將直接來自Ubuntu的默認包存儲庫。這意味着我可以使用apt包管理套件來完成安裝。由於這是我第一次爲這個會話使用apt,所以我應該首先更新本地包索引,然後安裝服務器:

1

2

$ sudo apt-get update

$ sudo apt-get install nginx

在Ubuntu 16.04中,Nginx被配置爲在安裝後就開始運行。如果您有運行的ufw防火牆,如我們的初始設置指南所述,您將需要允許連接到Nginx。Nginx在安裝時向ufw註冊,因此過程非常簡單。建議您啓用最嚴格的配置文件,該配置文件仍然允許您想要的流量。由於我們還沒有爲我們的服務器配置SSL,我們只需要允許端口80上的通信。你可以通過輸入:

1

$ sudo ufw allow 'Nginx HTTP'

您可以通過輸入以下命令來驗證:

 

1

$ sudo ufw status

你應該看到HTTP流量允許在顯示的輸出:

1

2

3

4

5

6

7

8

9

Output

Status: active

 

To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere                  

Nginx HTTP                 ALLOW       Anywhere                  

OpenSSH (v6)               ALLOW       Anywhere (v6)            

Nginx HTTP (v6)            ALLOW       Anywhere (v6)

添加防火牆規則後,您可以通過訪問web瀏覽器中服務器的域名或公共IP地址來測試服務器是否已經啓動並運行。

如果你沒有一個域名指向你的服務器,你不知道你的服務器的公共IP地址,你可以通過在你的終端輸入以下其中一個來找到它:

1

$ ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

接下來將會輸出幾個IP地址。您可以在web瀏覽器中依次嘗試它們。

另一種選擇是,你可以從互聯網上的其他地方查看哪些IP地址是可訪問的:

1

$ curl -4 icanhazip.com

在web瀏覽器地址欄中輸出下面的URL,它應該會帶你到Nginx的默認登錄頁面:

1

http://server_domain_or_IP

如果您看到上面的頁面,您已經成功安裝了Nginx。

步驟2:安裝MySQL來管理網站數據

現在我們有了一個web服務器,我們需要安裝MySQL,一個數據庫管理系統,來存儲和管理我們站點的數據。你可以很容易地這個輸入安裝:

1

$ sudo apt-get install mysql-server

當你第一次安裝完成後您將被要求提供一個在MySQL系統中使用的根(管理)密碼。現在已經安裝了MySQL數據庫軟件,但是它的配置還沒有完全完成。爲了確保安裝的安全,我們可以運行一個簡單的安全腳本,它將詢問我們是否要修改一些不安全的默認設置。輸入以下命令開始腳本:

1

$ mysql_secure_installation

這時要求您輸入爲MySQL根帳戶設置的密碼。接下來將詢問您是否要配置驗證密碼插件VALIDATE PASSWORD PLUGIN.。

 Warning: Enabling this feature is something of a judgment call. If enabled, passwords which don’t match the specified criteria will be rejected by MySQL with an error. This will cause issues if you use a weak password in conjunction with software which automatically configures MySQL user credentials, such as the Ubuntu packages for phpMyAdmin. It is safe to leave validation disabled, but you should always use strong, unique passwords for database credentials.

回答y表示“是”,或者其他任何不啓用的情況下繼續。

1

2

3

4

5

6

VALIDATE PASSWORD PLUGIN can be used to test passwords

and improve security. It checks the strength of password

and allows the users to set only those passwords which are

secure enough. Would you like to setup VALIDATE PASSWORD plugin?

 

Press y|Y for Yes, any other key for No:

如果您啓用了驗證,您將被要求選擇一個級別的密碼驗證。請記住,如果您輸入2最強級別,當您試圖設置任何不包含數字、大小寫字母和特殊字符的密碼,或基於普通字典單詞的密碼時,您將收到錯誤。

1

2

3

4

5

6

7

There are three levels of password validation policy:

 

LOW    Length >= 8

MEDIUM Length >= 8, numeric, mixed case, and special characters

STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

 

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: <span class="highlight">1</span>

如果您啓用了密碼驗證,將顯示現有根密碼的密碼強度,並詢問您是否要更改該密碼。如果您對當前的密碼滿意,在提示處輸入n表示“no”:

1

2

3

4

Using existing password for root.

 

Estimated strength of the password: <span class="highlight">100</span>

Change the password for root ? ((Press y|Y for Yes, any other key for No) : <span class="highlight">n</span>

對於其他的問題,您應該在每個提示符處按Y並按回車鍵。這將刪除一些匿名用戶和測試數據庫,禁用遠程根登錄,並加載這些新規則,以便MySQL立即尊重我們所做的更改。現在,您的數據庫系統已經設置好了,我們可以繼續安裝下一步。

步驟3:安裝PHP進行處理

現在我們已經安裝了Nginx來服務我們的頁面,安裝了MySQL來存儲和管理我們的數據。然而,我們仍然沒有任何東西可以生成動態內容。我們可以使用PHP。由於Nginx不像其他web服務器那樣包含本地PHP處理,我們需要安裝PHP -fpm,它代表“fastCGI進程管理器”。我們將告訴Nginx將PHP請求傳遞給該軟件進行處理。我們可以安裝這個模塊,並獲取一個額外的幫助包,它將允許PHP與我們的數據庫後端進行通信。

1

$ sudo apt-get install php-fpm php-mysql

配置PHP處理器,現在我們已經安裝了PHP組件,但是我們需要做一些配置更改,以使我們的設置更加安全。以root權限打開php-fpm主配置文件:

1

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

我們在這個文件中尋找的是設置cgi.fix_pathinfo的參數。這將用分號(;)註釋掉,並默認設置爲“1”。這是一個非常不安全的設置,因爲它告訴PHP嘗試執行它能找到的最近的文件,如果請求的PHP文件找不到。這基本上允許用戶以一種允許他們執行不允許執行的腳本的方式來編寫PHP請求。我們將通過取消註釋行並將其設置爲“0”來更改這兩個條件,如下文件/etc/php/7.0/fpm/php.ini所示:

1

cgi.fix_pathinfo=0

完成後保存並關閉文件。現在,我們只需要重新啓動我們的PHP處理器輸入:

1

$ sudo systemctl restart php7.0-fpm

以上完成了php-fpm配製,接下來我們在配製網站服務。 

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

現在,我們已經安裝了所有必需的組件。我們還需要做的唯一配置更改是告訴Nginx使用我們的PHP處理器來處理動態內容。我們在服務器塊級別上執行此操作(服務器塊類似於Apache的虛擬主機)。打開默認的Nginx服務器塊配置文件,輸入:

1

$ sudo nano /etc/nginx/sites-available/default

目前,隨着註釋刪除,Nginx默認服務器塊文件/etc/nginx/sites-available/default看起來像這樣:

1

2

3

4

5

6

7

8

9

10

11

12

13

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文件的location塊的註釋。Nginx不處理這些文件。如果這些文件碰巧進入了文檔根目錄,就不應該向訪問者提供這些文件。

你需要做的修改配製文件/etc/nginx/sites-available/default是加粗的文字如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

server {

    listen 80 default_server;

    listen [::]:80 default_server;

 

    root /var/www/html;

    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;

    }

}

完成上述更改後,可以保存並關閉文件。測試你的配置文件語法錯誤鍵入:

1

$ sudo nginx -t

如果報告任何錯誤,請在繼續之前返回並重新檢查您的文件。當你準備好了重新加載Nginx配置。

1

$ sudo systemctl reload nginx

步驟5:創建一個PHP文件來測試配置

您的LEMP堆棧現在應該完全設置好了。我們可以測試它來驗證Nginx是否能夠正確地將. PHP文件傳遞給我們的PHP處理器。我們可以通過在文檔根目錄中創建一個測試PHP文件來實現這一點。在文本編輯器中,在文檔根目錄中打開一個名爲info.php的新文件:

1

$ sudo nano /var/www/html/info.php

 

在新文件/var/www/html/info.php中鍵入或粘貼以下行。這是有效的PHP代碼,將返回有關我們的服務器:

 

1

2

<?php

phpinfo();

完成後,保存並關閉文件。現在,您可以在web瀏覽器中訪問這個頁面,方法是訪問服務器的域名或公共IP地址,後面跟着/info.php:

1

http://server_domain_or_IP/info.php

在你的瀏覽器你應該看到一個由PHP生成的網頁,上面有關於你的服務器的信息:

如果您看到這樣的頁面,那麼您已經成功地使用Nginx設置了PHP處理。在驗證Nginx正確地呈現頁面之後,最好刪除您創建的文件,因爲它實際上會給未授權用戶一些關於您的配置的提示,可能會幫助他們試圖進入。如果以後需要,總是可以重新生成這個文件。現在,刪除文件輸入:

1

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

 

總結

您現在應該在Ubuntu 16.04服務器上配置了一個LEMP堆棧,這爲你向訪問者提供web內容提供了一個非常靈活的基礎。

如果有不懂的地方請留言,SKY8G網站編輯者專注於研究IT源代碼研究與開發。希望你下次光臨,你的認可和留言是對我們最大的支持,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章