CentOS 7 安裝 Apache, MySQL, PHP 指南

導語

一個 LAMP 軟件棧通常由多個開源軟件組合而成,它們合力驅動一個服務器去運行 web 站點和應用。LAMP 這個術語實際上是一個由 Linux 操作系統,Apache web 服務器,MySQL 數據庫服務器,以及 PHP 編程環境組合縮略而成的。

在這篇指南中,我們將為一個搭載 CentOS 7 操作系統的服務器安裝 LAMP 軟件棧。CentOS 已經滿足了 LAMP 軟件棧的第一個需求:一個 Linux 操作系統。


預備條件

在繼續閱讀這篇指南之前,請確認你使用具有 root 權限的用戶登錄了 CentOS。如果對于當前用戶如何取得 root 權限存在疑問,請咨詢服務器的管理人員。


第一步 —— 安裝 Apache

Apache 是目前世界上最廣泛使用的 web 服務器,這使得它成為運行網站的絕佳選擇。

利用 CentOS 的軟件安裝包管理系統 yum,我們可以輕易地安裝 Apache。它為我們提供了無痛式地從 CentOS 維護的倉庫獲取并安裝絕大多數軟件的方式。你可以前往這里 (https://www.digitalocean.com/community/tutorials/how-to-set-up-and-use-yum-repositories-on-a-centos-6-vps) 獲取更多如何使用 yum 安裝包管理系統的指導。

對于我們的目的而言,安裝 Apache 只需要在 CentOS 命令終端敲入這條命令就行了:

$ sudo yum install httpd

由于使用了 sudo 命令,這些操作將以 root 權限執行。如果當前用戶的身份不是 root,CentOS 將會要求你輸入當前用戶的密碼,以驗證你的意圖。

不用一會兒,你的 web 服務器就安裝好了。

一旦安裝成功,你就可以設置服務器啟動時就開啟 Apache 服務:

$ sudo systemctl enable httpd.service

你可以通過重新啟動服務器,然后在命令行終端中敲入這條命令來驗證 Apache 服務是否在服務器啟動時自動開啟了:

$ sudo systemctl is-enabled httpd.service

如果你看到了這樣的響應:

enabled

則說明 Apache 服務已經配置為在服務器啟動時自動開啟了。

在服務器上啟動 Apache 服務的命令為:

$sudo systemctl start httpd.service

重新啟動 Apache:

$sudo systemctl restart httpd.service

停止 Apache:

$sudo systemctl stop httpd.service

以及

如果你的服務器正在運行防火墻,請運行下列命令以允許它進行 HTTP 和 HTTPS 通信:

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

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

$sudo firewall-cmd --reload

在 Apache 啟動的情況下,你可以在瀏覽器里訪問服務器的公網 IP 地址以驗證一切如計劃那樣順利地進行(如果你現在還不知道如何獲取服務器的公網 IP 地址,請參考下一標題中的內容):

http://<服務器的公網 IP 地址>/

你將會看到一個出于通知和測試目的而存在的默認 CentOS 7 Apache 網頁。它應該長這樣子:

如果你看到了這個頁面,那么你的 web 服務器現在已經正確地安裝了。

如何找到服務器的公網 IP 地址

如果你不知道服務器的公網 IP 地址是什么,你可以使用多種方式找到它。通常情況下,它就是你通過 SSH 用以連接服務器的地址。

在命令行終端中,你有多種方式找到它。首先,你可以通過下面這條命令,讓 iproute2 工具幫你找出服務器的 IP 地址:

$ ip addr show eth1 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

這將會返回一到兩行結果。它們都是正確的 IP 地址,但是你的計算機可能只能使用其中的一條,所以隨意試試其中的每一條。

另一種方法是讓一個外部組織告訴你它是怎樣找到你的服務器的,你可以通過詢問特定的服務器來獲知自己的 IP 地址:

$ curl http://icanhazip.com


第二步 —— 安裝 MySQL

MySQL 是一個 web 服務器上流行的數據庫管理系統。然而,從 CentOS 7 的軟件倉庫不再提供 MySQL 的安裝包,轉而提供 MariaDB 作為默認的數據庫管理系統。MariaDB 作為 MySQL 的簡易替代品,足以勝任通常意義上你對的數據庫系統的需求 (https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-compatibility/)。你可以前往這里 (https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7) 獲取在 CentOS 7 上安裝 MariaDB 的指導。

如果你不論如何都更需要 MySQL 作為 web 服務器上的數據管理系統,那么請繼續閱讀下面這部分指南,它將指引你如何在運行 CentOS 7 的服務器上安裝并配置 MySQL 數據庫。

開始安裝 MySQL 之前,請更新系統上的軟件到最新版:

$ sudo yum update

由于 CentOS 7 的軟件倉庫不再提供 MySQL 的安裝包,我們必須從 MySQL 社區倉庫 (https://dev.mysql.com/downloads/repo/yum/) 獲取 MySQL 安裝包。

首先,獲取 MySQL 社區倉庫:

$ wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

載入 MySQL 社區倉庫:

$ sudo yum install mysql57-community-release-el7-8.noarch.rpm

更新系統上的軟件到最新版:

$ sudo yum update

在更新過程中,你會被詢問是否想接受這個 .rpm 文件 GPG 校驗得出的結果,如果沒有錯誤或者不匹配出現,請輸入 y 以完成更新。

接著,我們就能一如往常一樣安裝 MySQL 了:

$ sudo yum install mysql-server

接下來,請按照這里的指南,重置 MySQL root 賬戶的密碼為你能夠記住的密碼:

http://stackoverflow.com/questions/33510184/change-mysql-root-password-on-centos7

然后,啟動 MySQL 服務:

$ sudo systemctl start mysqld

現在 MySQL 數據庫已經開始運行了。我們希望運行一個安全防御腳本,將一些危險的默認配置移除掉,并為我們的數據庫系統加上一點安全機制。請在命令行終端里運行下面這一條命令:

$ sudo mysql_secure_installation

命令行終端將會提示你輸入 MySQL 內 root 用戶的密碼。鍵入上面重置 MySQL root 密碼后的新密碼。然后,命令行終端將會要求你更新 root 用戶的密碼。

Enter current password for root:

The existing password for the user account root has expired. Please set a new password.

New password:

Re-enter new password:

The 'validate_password' plugin is installed on the server.

The subsequent steps will run with the existing configurationof the plugin.

Using existing password for root.

對于命令行終端接下來給出的選擇,你應該敲擊 ENTER 鍵選擇忽略修改 root 密碼,接著鍵入 y 同意移除掉出于示例目的而存在的用戶,而后鍵入 y 同意禁用遠程登錄 root 用戶,再次鍵入 y 同意移除測試數據庫,最后鍵入 y 載入這些新的規則使得 MySQL 立即響應我們做的變更。

最后,如果希望 MySQL 服務在服務器啟動時自動開啟,那么你應該使用這一條的命令:

$ sudo systemctl enable mysqld.service

你可以通過重新啟動服務器,然后在命令行終端中敲入這條命令來驗證MySQL 服務是否在服務器啟動時自動開啟了:

$ sudo systemctl is-enabled mysqld.service

如果你看到了這樣的響應:

enabled

則說明 MySQL 服務已經配置為在服務器啟動時自動開啟了。

現在,你的數據庫系統已經安裝妥當,我們可以繼續后面的內容了。


第三步 —— 安裝 PHP

在我們的 web 軟件棧中,PHP 是一個能夠處理業務邏輯和數據,并動態生成內容展現給用戶的軟件。它可以運行腳本,連接到 MySQL 數據庫以存取數據,以及將處理過的內容遞交給 web 服務器來顯示。

我們可以再次利用 yum 安裝包管理系統來安裝我們的組件。現在,我們打算將 php-mysql 也加入到我們將要安裝的軟件序列中:

$ sudo yum install php php-mysql

這里安裝 PHP 應該不會有任何問題。我們需要重新啟動 Apache web 服務器以便它能夠與 PHP 協作。你可以通過這條命令達到目的:

$ sudo systemctl restart httpd.service

安裝 PHP 模塊

為了增強 PHP 的功能,我們可以選擇性地安裝一些額外的模塊。

在命令行終端敲入這條命令,你就可以找到所有可以獲取到的 PHP 模塊選項和庫:

$ yum search php

響應的結果就是所有你能夠選擇安裝的組件。其中包含了每個可選組件的描述:

php-bcmath.x86_64 : A module for PHP applications for using the bcmath library

php-cli.x86_64 : Command-line interface for PHP

php-common.x86_64 : Commonfiles for PHP

php-dba.x86_64 : Adatabase abstraction layer module for PHP applications

php-devel.x86_64 : Filesneeded for building PHP extensions

php-embedded.x86_64 : PHPlibrary for embedding in applications

php-enchant.x86_64 : Enchantspelling extension for PHP applications

php-fpm.x86_64 : PHPFastCGI Process Manager

php-gd.x86_64 : Amodule for PHP applications for using the gd graphics library

. . .

如果需要獲取每個模塊更多的信息,你可以通過互聯網搜索,或者直接在命令行終端中敲入這條命令查看:

$ yum info package_name

響應中將會包含許多的信息,其中一個名為 Description 的域包含了這個模塊提供的功能更為詳盡的描述。

舉個例子,如果要獲知 php-fpm 模塊的功能,我們只要在命令行終端中敲入下列指令就可以了:

$ yum info php-fpm

順著眾多其他信息往下看,你將會找到形如這樣的信息:

. . .

Summary ? ?: PHPFastCGI Process Manager

URL ? ? ? ? ? ?: http://www.php.net/

License ? ? ? : PHPand Zend and BSD

Description : PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI

? ? ? ? ? ? ? ? ? ?: implementation with some additional features useful for sites of

? ? ? ? ? ? ? ? ? ?: any size, especially busier sites.

在考究之后,如果你決定要安裝一個模塊包,你可以像我們之前安裝其他軟件時的做法一樣,使用 yum install 命令達到目的。

如果我們決定了 php-fpm 就是我們需要的,那么我們可以在命令行終端鍵入:

$ sudo yum install php-fpm

如果你想安裝多于 1 個的模塊包,你可以在命令行終端中鍵入 yum install 后,列出你想安裝的每個模塊包,并使用空格區分,就像下面這樣子:

$ sudo yum install package1 package2…

現在,你的 LAMP 軟件棧已經安裝并配置妥當了。但我們仍需要測試一下 PHP。


第四步 —— 測試你 Web 服務器上的 PHP 處理程序

為了測試系統已經配置得適合 PHP 運行,我們可以創建一個非常簡易的 PHP 腳本。

我們將這個腳本命名為 info.php。為了讓 Apache 能夠正確地找到并為之服務,它必須保存在一個稱為『web 目錄』特殊的目錄中。

在 CentOS 7 中,這個目錄位于 /var/www/html/。我們可以通過下面這條命令在此創建一個文件:

$ sudo vi /var/www/html/info.php

這將會打開一個空白文件,敲擊小寫字母 I 即可進行編輯。我們想在文件中輸入下列 PHP 代碼組成的文本:

<?php phpinfo(); ?>

然后,敲擊 ESC 鍵并鍵入 :wq! 即可保存并關閉這個文件。

現在我們可以測試 web 服務器是否能夠正確地顯示由 PHP 腳本生成的內容了。我們可以嘗試通過 web 瀏覽器訪問這個頁面。你需要再次獲取服務器的公網 IP 地址。

你希望訪問的地址就是:

http://<服務器的公網 IP 地址>/info.php

你看到的頁面應該像下面這樣子:

如果你的瀏覽器成功地顯示了這個頁面,那么你的 PHP 就像預期中的那樣正常工作了。

你很可能想要在測試之后移除掉這個文件,因為它事實上可以將服務器的信息展現給未授權的用戶。為此,我們需要在命令行終端中鍵入下面這條命令:

$ sudo rm /var/www/html/info.php

以后若需要,你總能重新創建這個頁面來獲取這些信息。


結論

現在我們已經安裝了 LAMP 軟件棧,對于下一步需要做什么,你有許多的選擇。大體上,你已經安裝了一個允許你在服務器上部署各種各樣網站和 web 軟件的平臺。


參考鏈接

https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-7

https://www.linode.com/docs/databases/mysql/how-to-install-mysql-on-centos-7

http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容