LAMP環境是常用的Web開發環境之一,其中LAMP分別代表Linux、Apache、MySQL和PHP。
您可以單擊一鍵運行進入Terraform Explorer查看並執行Terraform代碼,從而實現自動化地在ECS執行個體中部署LAMP環境。
前提條件
部署LAMP環境
Alibaba Cloud Linux 3/CentOS 8
-
安裝Apache伺服器。
#安裝Apache伺服器 sudo dnf install -y httpd #設定開機自啟 sudo systemctl enable httpd #啟動Apache伺服器 sudo systemctl start httpd -
安裝MySQL。
說明在Alibaba Cloud Linux 3中,安裝
compat-openssl10以相容早期版本的OpenSSL庫。sudo yum install -y compat-openssl10#添加MySQL官方倉庫 sudo rpm -Uvh https://repo.mysql.com/mysql84-community-release-el8-1.noarch.rpm #安裝MySQL sudo dnf install -y mysql-server #啟動MySQL並設定開機自啟 sudo systemctl start mysqld sudo systemctl enable mysqld-
查詢root使用者的初始密碼。
-
Alibaba Cloud Linux 3:
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD) -
CentOS 8的root使用者沒有初始密碼。
-
-
設定新的MySQL root密碼。將
<oldpwd>替換為初始密碼,將<newpwd>替換為新密碼。在CentOS 8中,將<oldpwd>留空。重要密碼長度至少為8個字元,並且必須包含大寫字母、小寫字母、數字和特殊字元。
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
-
-
安裝PHP。
說明本文以PHP 8.4為例。如果安裝其他版本,請更改模組名稱。例如,安裝PHP 8.1時,模組名稱為
php:remi-8.1。#指定Remi倉庫並啟用php:remi-8.4模組 sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/remi/enterprise/remi-release-8.rpm --nodeps sudo sed -i "s/\$releasever/8/g" /etc/yum.repos.d/remi-modular.repo /etc/yum.repos.d/remi-safe.repo /etc/yum.repos.d/remi.repo sudo dnf install -y yum-utils && sudo dnf module enable -y php:remi-8.4 #安裝PHP、PHP FastCGI進程管理器(PHP-FPM)和MySQL擴充 sudo dnf install -y php php-fpm php-mysqlnd #啟動PHP-FPM並設定開機自啟 sudo systemctl start php-fpm sudo systemctl enable php-fpm -
驗證LAMP環境。
-
查詢
php-fpm設定檔預設監聽地址。sudo grep 'listen =' /etc/php-fpm.d/www.conf -
執行命令建立
/etc/httpd/conf.d/php-fpm.conf設定檔並添加php-fpm規則。重要如果
php-fpm監聽地址為127.0.0.1:9000需要修改規則為proxy:fcgi://127.0.0.1:9000sudo tee /etc/httpd/conf.d/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:unix:/run/php-fpm/www.sock;" </FilesMatch> EOF -
重啟Apache伺服器使配置生效。
sudo systemctl restart httpd -
執行命令在路徑
/var/www/html/下建立test.php檔案,並添加測試內容(<username>替換為資料庫使用者名稱,<password>替換為資料庫密碼)。sudo tee /var/www/html/test.php <<-'EOF' <?php $servername = "localhost"; $username = "<username>"; $password = "<password>"; $conn = new mysqli($servername, $username, $password); if ($conn->connect_error) { die("fail: " . $conn->connect_error); } echo "success\n"; ?> EOF -
在本地物理機上使用瀏覽器訪問
http://ECS執行個體公網IP/test.php,返回success說明PHP代理設定成功並成功串連MySQL資料庫。
-
Alibaba Cloud Linux 2/CentOS 7
-
安裝Apache伺服器。
#安裝Apache伺服器 sudo yum install -y httpd #設定開機自啟 sudo systemctl enable httpd #啟動Apache伺服器 sudo systemctl start httpd -
安裝MySQL。
#添加MySQL官方倉庫 sudo rpm -Uvh https://repo.mysql.com/mysql84-community-release-el7-1.noarch.rpm #安裝MySQL sudo yum install -y mysql-server #啟動MySQL並設定開機自啟 sudo systemctl start mysqld sudo systemctl enable mysqld-
查詢root使用者的初始密碼。
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD) -
設定新的MySQL root密碼。將
<oldpwd>替換為初始密碼,將<newpwd>替換為新密碼。重要密碼長度至少為8個字元,並且必須包含大寫字母、小寫字母、數字和特殊字元。
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
-
-
安裝PHP。
#指定Remi倉庫並啟用remi-php83模組 sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/remi/enterprise/remi-release-7.rpm --nodeps sudo sed -i "s/\$releasever/7/g" /etc/yum.repos.d/remi-modular.repo /etc/yum.repos.d/remi-safe.repo /etc/yum.repos.d/remi.repo sudo yum install -y yum-utils && sudo yum-config-manager --enable remi-php83 #安裝PHP、PHP-FPM和MySQL擴充 sudo yum install -y php php-fpm php-mysqlnd #啟動PHP-FPM並設定開機自啟 sudo systemctl start php-fpm sudo systemctl enable php-fpm -
驗證LAMP環境。
-
查詢
php-fpm設定檔預設監聽地址。sudo grep 'listen =' /etc/php-fpm.d/www.conf-
如果返回sock檔案地址說明預設監聽sock檔案。
-
如果返回
127.0.0.1:9000說明預設監聽本地9000連接埠。
-
-
執行命令建立
/etc/httpd/conf.d/php-fpm.conf設定檔並添加php-fpm規則。重要如果
php-fpm監聽地址為sock檔案地址,需要修改規則proxy:fcgi://127.0.0.1:9000為proxy:unix:<path>;,<path>需要替換為您的sock檔案地址。sudo tee /etc/httpd/conf.d/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> EOF -
重啟Apache伺服器使配置生效。
sudo systemctl restart httpd -
執行命令在路徑
/var/www/html/下建立test.php檔案,並添加測試內容(<username>替換為資料庫使用者名稱,<password>替換為資料庫密碼)。sudo tee /var/www/html/test.php <<-'EOF' <?php $servername = "localhost"; $username = "<username>"; $password = "<password>"; $conn = new mysqli($servername, $username, $password); if ($conn->connect_error) { die("fail: " . $conn->connect_error); } echo "success\n"; ?> EOF -
在本地物理機上使用瀏覽器訪問
http://ECS執行個體公網IP/test.php,返回success說明PHP代理設定成功並成功串連MySQL資料庫。
-
Ubuntu20.04及以上
-
安裝Apache伺服器。
#安裝Apache伺服器 sudo apt update -y && sudo apt install -y apache2 #設定開機自啟 sudo systemctl enable apache2 #啟動Apache伺服器 sudo systemctl start apache2 -
安裝MySQL伺服器。
sudo apt update -y && sudo apt install -y mysql-server -
設定
root密碼和身分識別驗證外掛程式。將<newpwd>替換為您的密碼。重要預設情況下,root使用者使用
auth_socket外掛程式且沒有密碼。系統提示輸入密碼時,按Enter鍵。sudo mysql -uroot -p -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<newpwd>';" -e "FLUSH PRIVILEGES;" -
安裝PHP。
說明運行
sudo apt search php命令查看可用的PHP版本。例如,安裝PHP 8.1時,運行sudo apt install -y php8.1 php8.1-fpm php8.1-mysql命令。#安裝software-properties-common並添加ppa:ondrej/php個人軟體包存檔(PPA)倉庫 sudo apt update && sudo apt install -y software-properties-common && sudo add-apt-repository -y ppa:ondrej/php #安裝PHP 8.4及相關組件,包括PHP-FPM和MySQL擴充 sudo apt install -y php8.4 php8.4-fpm php8.4-mysql -
驗證LAMP環境。
-
查詢
php-fpm設定檔預設監聽地址,<version>需要替換為您的PHP版本(例:PHP 8.4需要將<version>替換為8.4)。sudo grep '^listen =' /etc/php/<version>/fpm/pool.d/www.conf-
如果返回sock檔案地址說明預設監聽sock檔案。
-
如果返回
127.0.0.1:9000說明預設監聽本地9000連接埠。
-
-
執行命令建立
/etc/apache2/conf-available/php-fpm.conf檔案,在內填寫PHP轉寄規則,<listen>需要替換為您的監聽地址。-
如果是sock檔案地址,需要替換
<listen>為unix:<path>;,<path>需要替換為您的sock檔案地址。重要如果監聽的sock檔案,需要sock檔案的使用權限設定為允許讀寫,您可以使用以下命令來更改許可權
sudo chmod 666 <path>,<path>更改為您的sock檔案地址。 -
如果是
127.0.0.1:9000,需要替換<listen>為fcgi://127.0.0.1:9000。
sudo tee /etc/apache2/conf-available/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:<listen>" </FilesMatch> EOF -
-
設定設定檔軟串連。
sudo ln -s /etc/apache2/conf-available/php-fpm.conf /etc/apache2/conf-enabled/ -
啟用proxy_fcgi和setenvif模組使Apache可以將PHP請求轉寄到PHP進程管理器,並啟用PHP進程管理器的設定檔。
sudo a2enmod proxy_fcgi setenvif sudo a2enconf php8.4-fpm -
重啟Apache伺服器使配置生效。
sudo systemctl restart apache2 -
執行命令在路徑
/var/www/html/下建立test.php檔案,並添加測試內容(<username>替換為資料庫使用者名稱,<password>替換為資料庫密碼)。sudo tee /var/www/html/test.php <<-'EOF' <?php $servername = "localhost"; $username = "<username>"; $password = "<password>"; $conn = new mysqli($servername, $username, $password); if ($conn->connect_error) { die("fail: " . $conn->connect_error); } echo "success\n"; ?> EOF -
在本地物理機上使用瀏覽器訪問
http://ECS執行個體公網IP/test.php,返回success說明PHP代理設定成功並成功串連MySQL資料庫。
-
常見問題
無法通過公網IP訪問test.php頁面
可能原因及其解決方案:
安全性群組未放開80連接埠、系統防火牆開啟、80連接埠被佔用。
具體排查方法,請參見無法訪問ECS執行個體中的服務的排查方法。
如何設定MySQL遠端存取
建立非root使用者遠程登入MySQL的帳號,並允許遠程主機使用該帳號訪問MySQL。具體操作,請參見手動部署MySQL資料庫(Linux)。