本教程展示瞭如何在 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
大寫,即默認答案。 )
現在您可以通過運行以下命令並輸入 MariaDB root 密碼來登錄 MariaDB shell:
mysql -u root -p
要退出,請運行
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信息並提示您下載 信息.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
希望本教程對您有所幫助。與往常一樣,如果您發現本文有幫助,請註冊我們的免費時事通訊以獲取提示和技巧。照顧好你自己?