LAMP環境是常用的Web開發環境之一,其中LAMP分別代表Linux、Apache、MySQL和PHP。LAMP擁有龐大的社區支援和豐富的資源,適合開發、部署和維護各種規模的Web應用,由於其高度靈活性和可定製性,您可以根據專案需求調整每個組件的配置,以達到最佳效能和安全性。本文介紹如何在Ubuntu作業系統的ECS執行個體內部署LAMP環境。
準備工作
建立用於部署LAMP環境的ECS執行個體,具體操作,請參見自訂購買執行個體。
該執行個體必須滿足以下條件:
執行個體已指派公網IP地址或綁定Elastic IP Address(EIP)。具體操作,請參見綁定和解除綁定Elastic IP Address。
作業系統:Ubuntu 22.04、Ubuntu 20.04。
執行個體安全性群組的入方向規則已允許存取22、80、443連接埠。具體操作,請參見添加安全性群組規則。
步驟一:安裝Apache
運行以下命令,更新Ubuntu系統內的軟體包。
sudo apt update
運行以下命令,安裝Apache。
sudo apt-get -y install apache2
運行以下命令,查看Apache版本。
apache2 -v
返回結果類似如下所示,表示Apache已成功安裝。
運行以下命令,啟動Apache服務並設定服務開機自啟動。
sudo systemctl start apache2 sudo systemctl enable apache2
運行以下命令,查看Apache服務狀態。
sudo systemctl status apache2
返回結果類似如下所示,表示Apache已啟動。
步驟二:安裝並配置MySQL
安裝MySQL。
運行以下命令,安裝MySQL。
sudo apt -y install mysql-server
運行以下命令,查看MySQL版本。
mysql -V
返回結果類似如下所示,表示MySQL已成功安裝。
運行以下命令,啟動MySQL服務。
sudo systemctl start mysql
依次運行以下命令,設定開機啟動MySQL。
sudo systemctl enable mysql sudo systemctl daemon-reload
配置MySQL。
運行以下命令,進入MySQL。
sudo mysql
運行以下命令,設定root使用者密碼。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';
本樣本中密碼以
Mysql@1234
為例,樣本命令:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'Mysql@1234';
運行以下命令,退出MySQL資料庫。
exit;
運行以下命令,對MySQL進行安全性配置。
sudo mysql_secure_installation
根據命令列提示,依次完成以下配置項。
輸入root使用者的密碼。本樣本中輸入
Mysql@1234
。ecs-user@iZbp19jsi7s0g7m4zgc****:~# sudo mysql_secure_installation Securing the MySQL server deployment. Enter password for user root:
說明在輸入密碼時,系統為了最大限度地保證資料安全,命令列將不做任何回顯。您只需要輸入正確的密碼資訊,然後按Enter鍵即可。
輸入
Y
,設定密碼驗證策略。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
選擇密碼驗證策略。
本樣本輸入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: 0
輸入
Y
,更改root使用者密碼。Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y
輸入root使用者密碼。
New password: Re-enter new password: Estimated strength of the password: 100
輸入
Y
,確認使用已設定的密碼。Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
輸入
Y
,刪除MySQL內建的匿名使用者。By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
輸入
Y
,禁止MySQL的root使用者的遠程登入許可權。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
輸入
Y
,移除test資料庫。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
,重新載入授權表。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
當命令列回顯All done!時,表示配置完成。
測試登入MySQL資料庫。
運行以下命令,登入MySQL資料庫。
sudo mysql -uroot -p
在命令列回顯的
Enter password:
後輸入已設定的資料庫密碼。說明在輸入密碼時,系統為了最大限度地保證資料安全,命令列將不做任何回顯。您只需要輸入正確的密碼資訊,然後按Enter鍵即可。
成功登入MySQL資料庫後,命令列資訊如下所示。
ecs-user@iZbp19jsi7s0g7m4zgc****:~# sudo mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 8.0.29-0ubuntu0.20.04.3 (Ubuntu) Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
運行以下命令,退出MySQL資料庫。
exit;
(可選)修改監聽配置。
預設情況下,MySQL資料庫使用連接埠號碼
3306
監聽並只接受來自本地IP地址127.0.0.1
的串連請求。如需允許MySQL接受來自任何IP地址的串連,您需要將監聽IP地址更改為0.0.0.0
。具體操作如下所示:重要將MySQL配置為監聽
0.0.0.0
會使資料庫更容易受到未經授權訪問的風險。因此,在允許來自任何IP的串連之前,請您務必認識到相關的安全威脅,並採取必要的保護措施,比如應用VPN、實施防火牆限制和加強賬戶許可權管理。執行以下命令,開啟
my.cnf
設定檔。sudo vim /etc/mysql/my.cnf
按
i
鍵進入編輯模式,然後添加如下內容。[mysqld] bind-address = 0.0.0.0
修改完成後,按
Esc
鍵退出編輯模式,然後輸入:wq
儲存並退出。執行以下命令,重啟MySQL服務。
sudo systemctl restart mysql
步驟三:安裝PHP
安裝PHP。
運行以下命令,安裝
software-properties-common
軟體包。sudo apt-get install -y software-properties-common
運行以下命令,添加第三方軟體包Ondrej PPA。
第三方軟體包Ondrej PPA中提供了最新版本的PHP。
sudo add-apt-repository ppa:ondrej/php
出現如下圖所示的回顯資訊時,請按Enter鍵。
運行以下命令,安裝PHP。
說明本操作以安裝PHP 8.3為例,如果您想安裝其他版本,請修改命令中的
php8.3
為具體版本。sudo apt-get install -y php8.3 php8.3-fpm libapache2-mod-php8.3
運行以下命令,查看PHP版本。
php -v
返回結果類似如下所示,表示PHP已成功安裝。
運行以下命令,備份Apache設定檔。
sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
修改Apache設定檔,添加Apache對PHP的支援。
重要若不添加此配置資訊,後續您使用瀏覽器訪問PHP頁面時,頁面將無法顯示。
運行以下命令,開啟Apache設定檔。
sudo vim /etc/apache2/apache2.conf
按
i
進入編輯模式。添加下列配置資訊。
DirectoryIndex index.html index.php <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
按
Esc
鍵,輸入:wq
,按Enter
鍵關閉並儲存設定檔。
在Apache網站根目錄中,建立測試網頁。
運行以下命令,查看Apache網站根目錄的路徑資訊。
sudo cat /etc/apache2/sites-available/000-default.conf
命令列返回結果中的
DocumentRoot /var/www/html
一行,即表示網站根目錄為/var/www/html
。運行以下命令,在網站根目錄建立測試網頁,並把
phpinfo()
函數添加至網頁內容中。phpinfo()
函數會展示PHP的所有配置資訊。sudo sh -c 'echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php'
運行以下命令,重啟Apache服務。
sudo systemctl restart apache2
在本地機器瀏覽器地址欄,輸入
http://<ECS執行個體公網IP地址>/phpinfo.php
並按Enter鍵。顯示如下頁面表示安裝成功。
成功搭建LAMP環境後,建議您刪除phpinfo.php測試檔案,以消除資料泄露風險。
sudo rm -rf <網站根目錄>/phpinfo.php
本教程中網站根目錄為
/var/www/html
,則需要運行以下命令刪除測試檔案。sudo rm -rf /var/www/html/phpinfo.php