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 堆棧)。
內容
在 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 服務器正在運行。
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_password
還 mysql_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)
如您所見,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 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> 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 插件的詳細信息。

通常,當用戶從 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
示例輸出:

使用箭頭鍵瀏覽結果。要退出,請鍵入 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