如何在 CentOS 8/RHEL 8 上安裝 LAMP 堆棧


本教程展示瞭如何在 CentOS 8 和 RHEL 8 上安裝 LAMP 堆棧。

什麼是 LAMP 堆棧?

軟件堆棧是一組捆綁的軟件工具。 LAMP代表 電梯輸入, 一種修補, 詠嘆調數據庫 /ySQL 和 惠普,它們都是開源的。這是支持動態網站和 Web 應用程序的最流行的軟件堆棧。 Linux 是操作系統,Apache 是 Web 服務器,MariaDB/MySQL 是數據庫服務器,PHP 是生成動態網頁的服務器端腳本語言。

先決條件

您可以按照以下教程下載並安裝 RHEL 8。

  • 如何免費下載和安裝 RHEL 8

如果您正在尋找 VPS(虛擬專用服務器),您可以通過我的推薦鏈接在 Vultr 註冊一個帳戶,並在 30 天以上免費獲得 50 美元的信用額度。

本教程使用 root 帳戶來管理管理任務。 要切換到 root,請運行以下命令並輸入 root 密碼。

su -

第 1 步:更新您的軟件包

在安裝 LAMP 堆棧之前,我們建議運行以下命令來更新您的存儲庫和軟件包:

dnf update

第 2 步:在 Apache CentOS 8/RHEL 8 上安裝 Web 服務器

以下命令安裝 Apache Web 服務器。這個 httpd-tools 該軟件包安裝有用的實用程序,例如 Apache HTTP Server Benchmarking Tool (ab)。

dnf install httpd httpd-tools

安裝後,您可以使用以下命令啟動 Apache:

systemctl start httpd

運行以下命令以在系統啟動時自動啟動 Apache。

systemctl enable httpd

現在檢查您的狀態。

systemctl status httpd

輸出:

 httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-10-12 06:43:15 UTC; 14s ago
     Docs: man:httpd.service(8)
 Main PID: 14515 (httpd)
   Status: "Running, listening on: port 80"
    Tasks: 213 (limit: 5092)
   Memory: 24.8M
   CGroup: /system.slice/httpd.service
           ├─14515 /usr/sbin/httpd -DFOREGROUND
           ├─14516 /usr/sbin/httpd -DFOREGROUND
           ├─14517 /usr/sbin/httpd -DFOREGROUND
           ├─14518 /usr/sbin/httpd -DFOREGROUND
           └─14519 /usr/sbin/httpd -DFOREGROUND

效力‘ 表示啟動時自動啟動已啟用,您可以看到 Apache 正在運行。

提示:如果上述命令沒有立即退出。 ” 必須按下q“讓我停下來。

檢查您的 Apache 版本。

httpd -v

輸出:

Server version: Apache/2.4.37 (centos)
Server built: Oct 7 2019 21:42:02

要測試 Apache Web 服務器是否正常工作, index.html 默認文檔根目錄中的文件 (/var/www/html/) 使用以下命令:

echo "Welcome to this site!" > /var/www/html/index.html

要在本地 CentOS 8/RHEL 8 機器上安裝 LAMP,請輸入: 127.0.0.1localhost 在瀏覽器的地址欄中。將顯示歡迎消息。這意味著 Apache Web 服務器工作正常。

CentOS 8/RHEL 8 默認禁用對端口 80 的公共訪問。要允許其他計算機訪問該網頁,您需要在 RHEL/CentOS 的動態防火牆管理器 firewalld 中打開 80 端口。通過運行以下命令打開端口 80:

firewall-cmd --permanent --zone=public --add-service=http

如果以後啟用 HTTPS Apache,還需要打開 443 端口。

firewall-cmd --permanent --zone=public --add-service=https

這個 --permanent 該選項使此防火牆規則在系統重新啟動後持續存在。然後重新加載防火牆守護程序以使更改生效。

systemctl reload firewalld

Apache 網頁已發布。

用戶必須允許 apache 作為網絡目錄的所有者。默認情況下,它歸 root 用戶所有。

chown apache:apache /var/www/html -R

默認情況下,Apache 使用系統主機名作為全局。 ServerName如果您的系統的主機名不是 DNS 可解析的,您可能會在運行後看到類似於以下內容的錯誤: sudo apachectl configtest 命令。

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

要解決此問題,您可以設置一個全局 ServerName 安裝 Apache.Nano 命令行文本編輯器並使用它來創建新的配置文件。

sudo dnf install nano

sudo nano /etc/httpd/conf.d/servername.conf

將以下行添加到此文件中:

ServerName localhost

保存並關閉文件。 按 將文件保存在 Nano 文本編輯器中。 Ctrl+O單擊並按 Enter 確認。按退出 Ctrl+X重新加載 Apache 以使更改生效。

sudo systemctl reload httpd

現在如果你跑 sudo apachectl configtest 再次運行該命令,上述錯誤消息應該會消失。

第 3 步:在 CentOS 8/RHEL 8 上安裝 MariaDB 數據庫服務器

MariaDB 是 MySQL 的替代品。它是由 MySQL 團隊的一位前成員開發的,他擔心 Oracle 會將 MySQL 變成一個封閉源代碼的產品。使用以下命令輸入在 CentOS 8/RHEL 8 上安裝 MariaDB:

dnf install mariadb-server mariadb -y

安裝完成後,我們需要啟動它。

systemctl start mariadb

系統啟動時啟用自動啟動。

systemctl enable mariadb

檢查狀態:

systemctl status mariadb

輸出:

 mariadb.service - MariaDB 10.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-10-12 09:02:53 UTC; 33s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 18608 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 30 (limit: 5092)
   Memory: 77.0M
   CGroup: /system.slice/mariadb.service
           └─18608 /usr/libexec/mysqld --basedir=/usr

效力” 表示啟動時自動啟動已啟用,您可以看到 MariaDB 服務器正在運行。現在我們需要運行安全腳本。

mysql_secure_installation

系統將提示您輸入 MariaDB 根密碼,按 Enter 鍵,因為沒有設置根密碼。然後輸入 y 設置 MariaDB 服務器的 root 密碼。

然後按 Enter 並回答所有剩餘的問題。這將刪除匿名用戶,禁用遠程 root 登錄,並刪除測試數據庫。這一步是 MariaDB 數據庫安全的基本要求。 (注意字母 Y 大寫字母。這是默認答案。 )

mysql_secure_installation rhel8 centos8

現在您可以通過運行以下命令並輸入 MariaDB 根密碼來登錄 MariaDB shell:

mysql -u root -p

mariadb shell登錄

要退出,運行

exit;

第 4 步:在 CentOS 8/RHEL 8 上安裝 PHP

使用以下命令安裝 PHP 和一些常用模塊:

dnf install php php-fpm php-mysqlnd php-opcache php-gd php-xml php-mbstring -y

Apache CentOS 8/RHEL 8 上的 Web 服務器默認使用 PHP-FPM 而不是 mod_php 來運行 PHP 代碼,所以我也使用上面的命令安裝了它。 php-fpm安裝完成後,您應該開始。

systemctl start php-fpm

系統啟動時啟用自動啟動。

systemctl enable php-fpm

檢查狀態:

systemctl status php-fpm

輸出:

 php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-10-12 09:54:37 UTC; 3s ago
 Main PID: 19755 (php-fpm)
   Status: "Ready to handle connections"
    Tasks: 6 (limit: 5092)
   Memory: 24.5M
   CGroup: /system.slice/php-fpm.service
           ├─19755 php-fpm: master process (/etc/php-fpm.conf)
           ├─19757 php-fpm: pool www
           ├─19758 php-fpm: pool www
           ├─19759 php-fpm: pool www
           ├─19760 php-fpm: pool www
           └─19761 php-fpm: pool www

效力‘ 表示啟動時自動啟動已啟用,您可以看到 PHP-FPM 正在運行。 php-fpm 包安裝1 php.conf 記錄 /etc/httpd/conf.d/ 因此,必須重新啟動 Apache Web 服務器才能運行 PHP 代碼。

systemctl restart httpd

您還需要通過運行以下命令告訴 SELinux 允許 Apache 通過 PHP-FPM 執行 PHP 代碼:

setsebool -P httpd_execmem 1

第 5 步:測試 PHP

要測試 PHP-FPM Apache Web 服務器, info.php 文件根目錄中的一個文件。

nano /var/www/html/info.php

將以下 PHP 代碼粘貼到文件中。

<?php phpinfo(); ?>

保存並關閉文件。如果您在本地 CentOS 8/RHEL 8 服務器上安裝了 LAMP 堆棧,請鍵入: 127.0.0.1/info.phplocalhost/info.php 在瀏覽器的地址欄中。顯示服務器的 PHP 信息。這意味著 PHP 腳本可以成功運行 Apache Web 服務器。

如果 RHEL 8/CentOS 正在遠程服務器上運行,請鍵入: server-ip-address/info.php 在瀏覽器的地址欄中。交換 sever-ip-address 請使用實際的 IP 地址。

PHP-FPM-RHEL-8-CentOS-8

如果您的瀏覽器不顯示 PHP 信息並提示您下載 信息.php 刪除文件後,只需重新啟動 Apache 和 PHP-FPM。

sudo systemctl restart httpd php-fpm

然後您應該能夠在您的網絡瀏覽器中查看 PHP 信息。

Apache 會自動重啟

如果由於某種原因 Apache 進程被殺死,您應該通過運行以下命令重新啟動它:

sudo systemctl restart httpd

您可以編輯它以自動重新啟動 Apache,而不是手動鍵入此命令。 httpd.service systemd 服務單元。我創建了另一個目錄來覆蓋默認的 systemd 服務配置。

sudo mkdir -p /etc/systemd/system/httpd.service.d/

然後在這個目錄下創建一個文件。

sudo nano /etc/systemd/system/httpd.service.d/restart.conf

將以下行添加到文件中。這將導致 Apache 在檢測到故障 5 秒後自動重啟。

[Service]
Restart=always
RestartSec=5s

保存並關閉文件。然後重新加載systemd。

sudo systemctl daemon-reload

要查看這是否有效,請殺死 apache 並執行以下操作:

sudo pkill httpd

接下來,檢查 Apache 狀態。 Apache 會自動重啟。

systemctl status httpd

允許 Apache 進行傳出網絡連接

默認情況下,SELinux 阻止 Apache 建立傳出網絡連接。 如果 Apache 需要向外部網絡服務發出請求,請通過運行以下命令來允許它:

setsebool -P httpd_can_network_connect on

包起來

恭喜! 您已成功安裝 Apache、Red Hat 8 或 CentOS 8、MariaDB 和 PHP7.2。為了您的服務器的安全,您應該刪除 info.php 立即歸檔以避免被黑客看到。

rm /var/www/html/info.php

我希望您發現本教程對您有所幫助。與往常一樣,如果您發現本文對您有幫助,請註冊我們的免費時事通訊以獲取提示和技巧。照顧好自己?