LAMP 堆棧是一個流行的開源 Web 開發平台,用於運行和部署動態網站和基於 Web 的應用程序。 LAMP 堆棧通常包括 Apache Web 服務器、MariaDB/MySQL 數據庫和 PHP/Python/Perl 編程語言。 LAMP 是 Linux、Apache、MariaDB/MYSQL、PHP/Python/Perl 的首字母縮寫。本分步教程將向您展示如何在 Ubuntu 20.04 LTS 服務器版本上安裝 Apache、MySQL 和 PHP(LAMP 堆棧)。

內容

  1. 在 Ubuntu 20.04 LTS 上安裝 Apache、MySQL 和 PHP(LAMP 堆棧)
    1. 1. 在 Apache Ubuntu 上安裝 Web 服務器。
      1. 1.1. 允許 Apache 通過 UFW 防火牆的 Web 服務器
      2. 1.2. 測試 Apache Web 服務器
    2. 2. 在 Ubuntu 上安裝 MySQL
      1. 2.1. 設置Mysql的數據庫管理用戶(root)密碼
      2. 2.2. 更改 MySQL root 用戶的認證方法
    3. 3. 在 Ubuntu 上安裝 PHP
      1. 3.1. 測試 PHP
      2. 3.2. 安裝 PHP 模塊

在 Ubuntu 20.04 LTS 上安裝 Apache、MySQL 和 PHP(LAMP 堆棧)

本教程使用以下 Ubuntu 系統:

  • 操作系統 : Ubuntu 20.04 LTS 服務器版
  • IP地址 : 192.168.225.52/24

首先,讓我們安裝 Apache 服務器。

1. 在 Apache Ubuntu 上安裝 Web 服務器。

首先,使用以下命令更新您的 Ubuntu 服務器:

$ sudo apt update
$ sudo apt upgrade

接下來,安裝 Apache Web 服務器。

$ sudo apt install apache2

使用以下命令檢查 Apache Web 服務器是否正在運行:

$ sudo systemctl status apache2

這是一個示例輸出:

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabl>
     Active: active (running) since Fri 2020-05-29 07:02:26 UTC; 25s ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 23996 (apache2)
      Tasks: 55 (limit: 2283)
     Memory: 5.1M
     CGroup: /system.slice/apache2.service
             ├─23996 /usr/sbin/apache2 -k start
             ├─23998 /usr/sbin/apache2 -k start
             └─23999 /usr/sbin/apache2 -k start

May 29 07:02:26 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
May 29 07:02:26 ubuntuserver apachectl[23981]: AH00558: apache2: Could not reliably det>
May 29 07:02:26 ubuntuserver systemd[1]: Started The Apache HTTP Server.

恭喜! Apache 服務已啟動並正在運行。

1.1. 允許 Apache 通過 UFW 防火牆的 Web 服務器

UFW更多, 代表 複雜 債務憤怒all 是一個用於管理 netfilter 防火牆的程序,旨在易於使用。默認情況下,UFW 在所有 Ubuntu 版本上都可用。

默認情況下,啟用 UFW 防火牆時,Ubuntu 20.04 LTS 無法從遠程系統訪問 Apache Web 瀏覽器。應該允許 http 什麼時候 https 請按照以下步驟操作。

首先,使用以下命令列出 Ubuntu 系統上可用的應用程序配置文件:

$ sudo ufw app list

示例輸出:

Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

如您所見,Apache 和 OpenSSH 應用程序安裝了 UFW 配置文件。您可以使用以下命令列出有關每個配置文件及其包含的規則的信息: ufw app info "Profile Name" 命令。

讓我們來看看 “Apache Full” 配置文件使用以下命令:

$ sudo ufw app info "Apache Full"

示例輸出:

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

如你看到的, "Apache Full" 配置文件包含啟用端口流量的規則 80 什麼時候 443.

然後運行以下命令以允許來電 HTTP 什麼時候 HTTPS 此配置文件的流量:

$ sudo ufw allow in "Apache Full"

您應該會看到類似於以下內容的輸出:

Rules updated
Rules updated (v6)

如果你不想讓 https 流量,但只有 http (80) 交通,運行:

$ sudo ufw app info "Apache"

1.2. 測試 Apache Web 服務器

現在打開 Web 瀏覽器並導航到測試頁面以訪問 Apache。 https://localhost/https://IP-Address/.

如果“Apache 2 Ubuntu Default Page”如下圖所示,則沒有問題。 Apache 服務器正在運行。

測試 Apache Web 服務器

2. 在 Ubuntu 上安裝 MySQL

要在 Ubuntu 上安裝 MySQL,請運行:

$ sudo apt install mysql-server

使用以下命令確保 MySQL 服務正在運行:

$ sudo systemctl status mysql

示例輸出:

● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-05-29 07:15:22 UTC; 2min 8s ago
   Main PID: 25242 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 2283)
     Memory: 323.7M
     CGroup: /system.slice/mysql.service
             └─25242 /usr/sbin/mysqld

May 29 07:15:16 ubuntuserver systemd[1]: Starting MySQL Community Server...
May 29 07:15:22 ubuntuserver systemd[1]: Started MySQL Community Server.

從上面的輸出可以看出,MySQL 正在運行。

2.1. 設置Mysql的數據庫管理用戶(root)密碼

默認情況下,MySQL root 用戶密碼為空。我們不建議對數據庫管理帳戶使用空白密碼。您需要通過運行以下腳本來保護您的 MySQL 服務器。

$ sudo mysql_secure_installation

您將被要求設置 "VALIDATE PASSWORD" 它是一個組件嗎?該組件允許用戶為其數據庫憑據設置強密碼。啟用後,會自動檢查密碼強度,並強制用戶僅設置足夠安全的密碼。 安全禁用但是,您應該為您的數據庫憑據使用強且唯一的密碼。如果您不想啟用此組件,請按任意鍵跳過密碼確認部分並繼續執行其餘步驟。

進來 y 如果你想設置 VALIDATE PASSWORD 零件:

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT 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 component?

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

你的答案是 是的,系統會提示您選擇密碼驗證級別。可用的密碼驗證是 低的, 緩和 什麼時候 強的輸入適當的數字(0 表示低,1 表示中,2 表示強密碼)並按 ENTER。

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

現在輸入你的 MySQL 密碼 root 用戶。 注意 MySQL 需要使用密碼 root 用戶取決於您在上一步中選擇的密碼策略。如果您尚未啟用該插件,請使用您選擇的強大且唯一的密碼。

Please set the password for root here.

New password:

Re-enter new password:

Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

輸入兩次密碼後,顯示密碼強度(本例中為 100)。 如果確定,請按 Y 繼續使用提供的密碼。如果您對密碼長度不滿意,請按其他鍵設置強密碼。我對我當前的密碼感到滿意。 y.

對於其餘的問題,只需鍵入 y 並擊中 ENTER這將刪除匿名用戶,禁止 root telnet,並刪除測試數據庫。

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.

- Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

完成! 我已經設置了 MySQL root 用戶的密碼。

2.2. 更改 MySQL root 用戶的認證方法

默認情況下,MySQL root 用戶設置為使用 auth_socket Ubuntu 上 MySQL 5.7+ 的插件。雖然這增加了安全性,但它也使使用外部程序(例如 phpMyAdmin)訪問數據庫服務器變得複雜。要解決此問題,您需要將身份驗證方法從 auth_socket 更改為 caching_sha2_passwordmysql_native_password.

從 MySQL 8.0 版開始,推薦的默認身份驗證插件是 caching_sha2_password.這個 caching_sha2_password 身份驗證插件提供更多 mysql_native_password 投放。

要更改身份驗證插件,請使用以下命令登錄到 MySQL 提示符。

$ sudo mysql

再次,

$ mysql -u root -p

進入 MySQL root 您在上一步中設置的密碼。

通過在 mysql 提示符下運行以下命令來查找所有 MySQL 用戶帳戶的當前身份驗證方法:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

示例輸出:

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$=s%UO"�[email protected]>[email protected] | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root             |                                                                        | auth_socket           | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
在 Ubuntu 中查找所有 mysql 用戶帳戶的當前身份驗證方法

如您所見,mysql root 用戶使用: auth_socket 身份驗證插件。

改變 auth_socket 投放 caching_sha2_password,在 MySQL 提示符下運行以下命令:如果啟用 VALIDATE PASSWORD 對於插件,請確保您根據當前政策要求使用強密碼。 強必須至少包含 8 個字符,包括大寫字母、小寫字母、數字和特殊字符。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';

交換 Password123#@! 在上述命令中使用您選擇的強且唯一的密碼。

使用以下命令更新您的更改:

mysql> FLUSH PRIVILEGES;

使用以下命令檢查當前身份驗證插件是否已被修改:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

示例輸出:

檢查mysql中當前的身份驗證插件檢查mysql中當前的身份驗證插件

好的! 今天的 MySQL root 用戶可以使用密碼進行身份驗證以訪問 MySQL shell。

退出 MySQL 提示符。

mysql> exit

筆記:

儘管如此 caching_sha2_password 此插件提供增強的安全加密,但與現有 MySQL 安裝存在一些兼容性問題。有關更多信息,請參閱: 這個鏈接如果遇到兼容性問題,應該設置 mysql_native_password 將插件設置為默認身份驗證插件。

改成 mysql_native_password 要創建插件,請在 MySQL 提示符下運行以下命令:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

使用以下命令更新您的更改:

mysql> FLUSH PRIVILEGES;

再次檢查驗證方法是否已更改或未使用該命令。

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

示例輸出:

查找所有 mysql 用戶帳戶的當前身份驗證方法查找所有 MySQL 用戶帳戶的當前身份驗證方法

退出 mysql 提示符。

mysql> exit

3. 在 Ubuntu 上安裝 PHP

要安裝 PHP,請運行:

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

安裝PHP後,創建 info.php Apache 根文檔文件夾中的文件。 Apache 根文檔文件夾通常如下所示: /var/www/html//var/www/ 在大多數基於 Debian 的 Linux 發行版上。 在 Ubuntu 20.04 LTS 上 /var/www/html/.

讓我們創造 info.php Apache根文件夾中的文件:

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

添加以下行:

<?php
phpinfo();
?>

根據 ESC 鍵和類型 :wq 保存文件並退出。重新啟動 Apache 服務以使更改生效。

$ sudo systemctl restart apache2

3.1. 測試 PHP

打開網絡瀏覽器並轉到: https://IP-address/info.php 網址。

它顯示 php 信息,如版本、服務器 API 和所有啟用的 php 插件的詳細信息。

Ubuntu 20.04 php 信息頁面PHP測試頁面

通常,當用戶從 Web 服務器請求目錄時,Apache 首先查找名為: index.html如果您想更改 Apache 以提供 php 文件而不是其他文件, index.php 首先 dir.conf 文件如下圖

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

這是上面文件的內容。

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

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

移動 index.php 歸檔到 第一次. 做出改變後, dir.conf 該文件如下所示:

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

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

根據 ESC 鍵和類型 :wq 保存並關閉文件。重新啟動 Apache 服務以使更改生效。

$ sudo systemctl restart apache2

3.2. 安裝 PHP 模塊

為了增強 PHP 的功能,您可以安裝一些額外的 PHP 模塊。

要列出可用的 PHP 模塊,請運行:

$ sudo apt-cache search php- | less

示例輸出:

列出 Ubuntu 上可用的 PHP 模塊列出 Ubuntu 上可用的 PHP 模塊

使用箭頭鍵瀏覽結果。要退出,請鍵入 q.

查找特定 php 模塊的詳細信息,例如 php-gd, 跑:

$ sudo apt-cache show php-gd

要安裝 php 模塊,請運行:

$ sudo apt install php-gd

安裝 php 模塊後不要忘記重啟 apache 服務。要檢查模塊是否已加載,請在瀏覽器中打開 info.php 文件並檢查它是否存在。

恭喜!如您所見,在 Ubuntu 20.04 LTS 上安裝 Apache、mysql 和 php(LAMP 堆棧)非常容易。現在您可以開始使用 LAMP 堆棧託管您的網站。

閱讀以下:

  • 在 Ubuntu 20.04 LTS 上使用 LAMP 堆棧安裝 phpMyAdmin

相關文件:

  • 在 Ubuntu 20.04 LTS 上安裝 Nginx、MySQL 和 PHP(LEMP 堆棧)
  • 在 CentOS 8 上安裝 Apache、MariaDB 和 PHP(LAMP 堆棧)

ApacheDatabaseFocal FossaInstall Lamp stack in UbuntuLAMP StackLinuxMySQLPHPUbuntuUbuntuUbuntuUbuntu 20.04Webserver