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

什麼是 LAMP 堆棧?

軟件堆棧是一組捆綁在一起的軟件工具。 LAMP代表 舉起輸入, 一種修補, 詠嘆調數據庫 /惠普,這都是開源的。這是支持動態網站和 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 服務器基準工具 (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.1 再次 localhost 在瀏覽器的地址欄中。顯示歡迎信息。這意味著 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 作為 web 目錄的所有者。默認情況下,它由 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 再次運行命令,上面的錯誤信息應該會消失。

第三步:在 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 root 密碼時,按 Enter 鍵,因為沒有設置 root 密碼。然後輸入 y 設置 MariaDB 服務器的根密碼。

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

mysql_secure_installation rhel8 centos8

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

mysql -u root -p

mariadb 外殼登錄

要退出,請運行

exit;

第四步:在 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 安裝包 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.php 再次 localhost/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

現在您應該能夠在 Web 瀏覽器中看到 PHP 信息。

Apache 會自動重啟

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

sudo systemctl restart httpd

您可以編輯它以自動重新啟動 Apache,而不是手動鍵入此命令。 httpd.service 系統服務單元。創建另一個目錄以覆蓋默認的 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 需要向外部 Web 服務發出請求,請通過運行以下命令來允許它:

setsebool -P httpd_can_network_connect on

包起來

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

rm /var/www/html/info.php

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