1. 程式人生 > >Ubuntu16.04安裝LAMP詳解

Ubuntu16.04安裝LAMP詳解

簡介

“LAMP”堆疊是一組開源軟體,通常安裝在一起以使伺服器能夠託管動態網站和Web應用程式。這個術語實際上是一個縮寫,代表L inux作業系統,帶有A pache Web伺服器。站點資料儲存在M ySQL資料庫中,動態內容由P HP 處理。

在本指南中,我們將在Ubuntu 16.04 Droplet上安裝LAMP堆疊。Ubuntu將滿足我們的第一個要求:Linux作業系統。您可以在此處瞭解如何配置Ubuntu

碼文不易,希望支援,謝謝->支援原創

先決條件

在開始本指南之前,您應該擁有一個單獨的非root使用者帳戶,該帳戶sudo

在您的伺服器上設定了許可權。

  • Ubuntu16.04
  • 公網ip
  • root賬號或者管理員許可權賬號
  • 腦子

第1步:安裝Apache和防火牆配置

Apache Web伺服器是世界上最受歡迎的Web伺服器之一。它已被充分記錄,並且已廣泛用於網路的大部分歷史,這使其成為託管網站的絕佳選擇。

我們可以使用Ubuntu的包管理器輕鬆安裝Apache apt。包管理器允許我們從Ubuntu維護的儲存庫中無痛地安裝大多數軟體。您可以在此處瞭解有關如何使用的apt更多資訊。

我們可以通過鍵入以下命令開始:

$ sudo apt-get update
$ sudo
apt-get install apache2

注意前面的“$”是代表管理員不用複製。在之後的操作中也最好一行一行執行。

由於我們使用的是sudo命令,因此這些操作將以root許可權執行。它將詢問您的常規使用者密碼以驗證您的意圖。

輸入密碼後,apt將告訴您計劃安裝哪些軟體包以及它們將佔用多少額外磁碟空間。按Ÿ,打回車繼續,安裝將繼續進行。

將Global ServerName設定為抑制語法警告

接下來,我們將向檔案新增一行/etc/apache2/apache2.conf以禁止顯示警告訊息。雖然無害,但如果未ServerName全域性設定,則在檢查Apache配置中是否存在語法錯誤時,您將收到以下警告:

$ sudo apache2ctl configtest
Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

使用文字編輯開啟主配置檔案:

$ sudo nano /etc/apache2/apache2.conf

在檔案底部的內部,新增一個ServerName指向主域名的指令。如果您沒有與伺服器關聯的域名,則可以使用伺服器的公共IP地址:

如果您不知道伺服器的IP地址,請跳至有關 如何查詢伺服器的公共IP地址 以查詢它的部分。

在/etc/apache2/apache2.conf最後新增

ServerName server_domain_or_IP

完成後儲存並關閉檔案。

接下來,鍵入以下命令檢查語法錯誤:

$ sudo apache2ctl configtest

由於我們添加了全域性ServerName指令,您應該看到的是:

Output
Syntax OK

重啟Apache以實現更改:

$ sudo systemctl restart apache2

您現在可以開始調整防火牆。

調整防火牆以允許Web流量

接下來,假設您已按照初始伺服器設定說明啟用UFW防火牆,請確保您的防火牆允許HTTP和HTTPS流量。您可以確保UFW具有Apache的應用程式配置檔案,如下所示:

$ sudo ufw app list
Output
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

如果您檢視Apache Full配置檔案,它應該顯示它啟用到埠80和443的流量流量接收:

$ sudo ufw app info "Apache Full"
Output
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
  80,443/tcp

允許此配置檔案的傳入流量:

$ sudo ufw allow in "Apache Full"

您可以立即通過在Web瀏覽器中訪問伺服器的公共IP地址來驗證所有內容是否按計劃進行檢查(如果您沒有此資訊,請參閱下一個標題下的說明以瞭解您的公共IP地址是什麼已經):

http://your_server_IP_address

您將看到預設的Ubuntu 16.04 Apache網頁,該網頁用於提供資訊和測試目的。它應該看起來像這樣:

Ubuntu 16.04 Apache

如果您看到此頁面,那麼您的Web伺服器現在已正確安裝並可通過防火牆訪問。

碼文不易,希望支援,謝謝->支援原創

第2步:安裝MySQL

現在我們已經啟動並運行了Web伺服器,現在是時候安裝MySQL了。MySQL是一個數據庫管理系統。基本上,它將組織並提供對我們的站點可以儲存資訊的資料庫的訪問。

同樣,我們可以apt用來獲取和安裝我們的軟體。這一次,我們還將安裝一些其他“幫助程式”包來幫助我們讓我們的元件相互通訊:

$ sudo apt-get install mysql-server

注意:在這種情況下,您不必sudo apt-get update在命令之前執行。這是因為我們最近在上面的命令中執行它來安裝Apache。我們計算機上的軟體包索引應該已經是最新的。

同樣,您將看到將要安裝的軟體包列表,以及它們將佔用的磁碟空間量。輸入Y繼續。

在安裝過程中,您的伺服器將要求您選擇並確認MySQL“root”使用者的密碼。這是MySQL中的一個管理帳戶,具有更高的許可權。可以認為它類似於伺服器本身的root帳戶(您現在配置的帳戶是特定於MySQL的帳戶)。確保這是一個強大的唯一密碼,不要留空。

安裝完成後,我們希望執行一個簡單的安全指令碼,它將刪除一些危險的預設值並鎖定對我們資料庫系統的訪問。執行以下命令啟動互動式指令碼:

$ mysql_secure_installation

系統將要求您輸入為MySQL root帳戶設定的密碼。接下來,系統將詢問您是否要配置VALIDATE PASSWORD PLUGIN

警告:啟用此功能是一種判斷呼叫。如果啟用,MySQL將拒絕與指定條件不符的密碼並顯示錯誤。如果您將弱密碼與自動配置MySQL使用者憑據的軟體結合使用,例如phpMyAdmin的Ubuntu軟體包,則會導致問題。保持禁用驗證是安全的,但是您應該始終為資料庫憑據使用強大的唯一密碼。

也就是說,如果只是自己玩玩不怕被盜這步可以不做的。

答Ÿ(是),或其他任何繼續不啟用。

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,對於最強級別,在嘗試設定任何不包含數字,大寫和小寫字母以及特殊字元的密碼或基於常用字典單詞的密碼時,您將收到錯誤。

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: 1

如果您啟用了密碼驗證,則會顯示現有root密碼的密碼強度,並詢問您是否要更改該密碼。如果您對當前密碼感到滿意,請在提示符處輸入n代表“no”:

Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

對於其他問題,您應該按Y並在每個提示符處按Enter鍵。這將刪除一些匿名使用者和測試資料庫,禁用遠端root登入,並載入這些新規則,以便MySQL立即尊重我們所做的更改。

此時,您的資料庫系統現已設定完畢,我們可以繼續前進。

第3步:安裝PHP

碼文不易,希望支援,謝謝->支援原創

PHP是我們設定的元件,它將處理程式碼以顯示動態內容。它可以執行指令碼,連線到我們的MySQL資料庫以獲取資訊,並將處理過的內容交給我們的Web伺服器進行顯示。

我們可以再次利用該apt系統來安裝我們的元件。我們還將包含一些幫助程式包,以便PHP程式碼可以在Apache伺服器下執行並與我們的MySQL資料庫通訊:

$ sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

這應該沒有任何問題安裝PHP。我們馬上就會測試一下。

在大多數情況下,我們要修改Apache在請求目錄時提供檔案的方式。目前,如果使用者從伺服器請求目錄,Apache將首先查詢名為的檔案index.html。我們想告訴我們的Web伺服器更喜歡PHP檔案,因此我們首先要讓Apache查詢index.php檔案。

為此,請鍵入以下命令以dir.conf使用root許可權在文字編輯器中開啟檔案:

$ sudo nano /etc/apache2/mods-enabled/dir.conf

它看起來像這樣:

在 /etc/apache2/mods-enabled/dir.conf 檔案中

<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

我們希望將上面突出顯示的PHP索引檔案移動到DirectoryIndex規範之後的第一個位置,如下所示:

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

完成後,按Ctrl-X儲存並關閉檔案。您必須通過鍵入Y確認儲存,然後按Enter確認檔案儲存位置。

在此之後,我們需要重新啟動Apache Web伺服器才能識別我們的更改。你可以這樣輸入:

$ sudo systemctl restart apache2

我們也可以檢查的狀態apache2使用的服務systemctl:

$ sudo systemctl status apache2
Sample Output
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 6 (limit: 512)
   CGroup: /system.slice/apache2.service
           ├─13623 /usr/sbin/apache2 -k start
           ├─13626 /usr/sbin/apache2 -k start
           ├─13627 /usr/sbin/apache2 -k start
           ├─13628 /usr/sbin/apache2 -k start
           ├─13629 /usr/sbin/apache2 -k start
           └─13630 /usr/sbin/apache2 -k start

Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server.
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server...
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]:  * Starting Apache httpd web server apache2
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerNam
Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]:  *
Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.

安裝PHP模組

碼文不易,希望支援,謝謝->支援原創

為了增強PHP的功能,我們可以選擇安裝一些額外的模組。

要檢視PHP模組和庫可用的選項,你可以使用管道apt-cache searchless獲取相關的包:

$ apt-cache search php- | less

使用箭頭鍵向上和向下滾動,然後按q退出。

結果是您可以安裝的所有可選元件。它會給你一個簡短的描述:

libnet-libidn-perl - Perl bindings for GNU Libidn
php-all-dev - package depending on all supported PHP development packages
php-cgi - server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli - command-line interpreter for the PHP scripting language (default)
php-common - Common files for PHP packages
php-curl - CURL module for PHP [default]
php-dev - Files for PHP module development (default)
php-gd - GD module for PHP [default]
php-gmp - GMP module for PHP [default]
…
:

要獲得有關每個模組的功能的更多資訊,您可以搜尋網際網路,也可以鍵入以下內容來檢視包的詳細說明:

$ apt-cache show package_name

將會有很多輸出,其中一個欄位被呼叫Description-en,它將對模組提供的功能有更長的解釋。

例如,要找出php-cli模組的功能,我們可以輸入:

$ apt-cache show php-cli

除了大量其他資訊外,您還可以找到如下所示的內容:

Output
…
Description-en: command-line interpreter for the PHP scripting language (default)
 This package provides the /usr/bin/php command interpreter, useful for
 testing PHP scripts from a shell or performing general shell scripting tasks.
 .
 PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
 open source general-purpose scripting language that is especially suited
 for web development and can be embedded into HTML.
 .
 This package is a dependency package, which depends on Debian's default
 PHP version (currently 7.0).
…

如果在研究之後,您決定要安裝軟體包,則可以使用apt-get install我們為其他軟體執行的命令。

如果我們認為這php-cli是我們需要的東西,我們可以輸入:

$ sudo apt-get install php-cli

如果要安裝多個模組,可以按照apt-get install命令列出每個模組,用空格分隔,如下所示:

$ sudo apt-get install package1 package2 ...

此時,您的LAMP堆疊已安裝並配置完畢。我們仍然應該測試我們的PHP。

第4步:在Web伺服器上測試PHP處理

碼文不易,希望支援,謝謝->支援原創

為了測試我們的系統是否為PHP正確配置,我們可以建立一個非常基本的PHP指令碼。

我們將呼叫此指令碼info.php。為了讓Apache找到並正確提供檔案,必須將其儲存到一個非常特定的目錄,稱為“web root”

在Ubuntu 16.04中,該目錄位於/var/www/html/。我們可以通過鍵入以下內容在該位置建立檔案:

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

這將開啟一個空白檔案。我們想在檔案中放入以下文字,它是有效的PHP程式碼:

info.php

<?php
phpinfo();
?>

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

現在我們可以測試我們的Web伺服器是否可以正確顯示PHP指令碼生成的內容。要試一試,我們只需在我們的網路瀏覽器中訪問此頁面即可。您將再次需要伺服器的公共IP地址。

您要訪問的地址將是:

http://your_server_IP_address/info.php

您訪問的頁面應如下所示:

php_info

這個頁面基本上從PHP的角度為您提供有關您的伺服器的資訊。它對於除錯很有用,並確保正確應用您的設定。

如果這是成功的,那麼您的PHP正在按預期工作。

您可能希望在此測試後刪除此檔案,因為它實際上可以向未經授權的使用者提供有關您的伺服器的資訊。為此,您可以輸入:

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

如果您以後需要再次訪問該資訊,則可以隨時重新建立此頁面。

結論

現在您已經安裝了LAMP,您可以選擇下一步做什麼。基本上,您已經安裝了一個平臺,允許您在伺服器上安裝大多數型別的網站和Web軟體。

作為緊接的下一步,您應確保通過HTTPS提供與Web伺服器的連線。這裡最簡單的選擇是使用Let的加密來保護您的網站免費的TLS / SSL證書。以後有機會再講(我自己都不會呢)。

支援原創

碼文不易,希望支援,謝謝->支援原創

微信支付微信支付

再次感謝,大家對本人的支援。

英文原版教程