Linux操作系統(tǒng)基礎與應用(CentOS Stream 9) 課件 項目11 使用LNMP架構部署網(wǎng)絡_第1頁
Linux操作系統(tǒng)基礎與應用(CentOS Stream 9) 課件 項目11 使用LNMP架構部署網(wǎng)絡_第2頁
Linux操作系統(tǒng)基礎與應用(CentOS Stream 9) 課件 項目11 使用LNMP架構部署網(wǎng)絡_第3頁
Linux操作系統(tǒng)基礎與應用(CentOS Stream 9) 課件 項目11 使用LNMP架構部署網(wǎng)絡_第4頁
Linux操作系統(tǒng)基礎與應用(CentOS Stream 9) 課件 項目11 使用LNMP架構部署網(wǎng)絡_第5頁
已閱讀5頁,還剩114頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

項目11使用LNMP架構部署網(wǎng)站SUBTITLEHEREMindShow.fun2023-06-05CONTENTS學習目標項目情境思維導圖任務11-1了解LNMP架構任務11-2安裝與配置Nginx服務器任務11-3安裝MariaDB數(shù)據(jù)庫任務11-4安裝配置PHP環(huán)境任務11-5部署基于LNMP的WordPress博客網(wǎng)站拓展知識項目實訓項目小結項目11使用LNMP架構部署網(wǎng)站01學習目標學習目標知識目標能力目標素養(yǎng)目標知識目標了解LNMP架構的含義熟悉Nginx服務器熟悉MariaDB數(shù)據(jù)庫熟悉php-fpm服務能力目標能熟練使用Nginx部署web服務器能熟練使用MariaDB數(shù)據(jù)庫能夠正確架設LNMP環(huán)境能夠運維管理LNMP架構環(huán)境素養(yǎng)目標能夠嚴格按照職業(yè)規(guī)范要求進行安全操作02任務11-1了解LNMP架構任務11-1了解LNMP架構任務目標11.1.1LNMP是什么11.1.2Nignx是什么11.1.3Mysql、MariaDB是什么11.1.4PHP是什么11.1.5LNMP架構工作原理11.1.6LNMP架構部署方式任務目標

小陳計劃在LNMP架構下部署自己的個人博客。在開始實際部署之前,小陳決定先了解一下LNMP架構的概念、基本工作流程以及常用的部署方式。

因此,小陳制定了如下的任務目標:了解LNMP是什么。了解Nginx,MYSQL和PHP。熟悉LNMP架構工作原理和部署方式。11.1.1LNMP是什么LNMP指的是在Linux操作系統(tǒng)中分別安裝Nginx網(wǎng)頁服務器、MySQL數(shù)據(jù)庫服務器和PHP開發(fā)服務器,以及一些對應的擴展軟件而構成的一種動態(tài)網(wǎng)站運行環(huán)境。LNMP簡單說就是:Linux+Nginx+MySQL+PHP或者Linux+Nginx+MARIADB+PHP。

相較于LAMP,LNMP使用Nginx網(wǎng)頁服務器取代了Apache網(wǎng)頁服務器。Nginx是一款高性能的HTTP網(wǎng)頁服務器和反向代理服務器,它的執(zhí)行效率極高,配置相比Apache也較為簡單,所以在短時間內(nèi)被國內(nèi)外很多大型公司所采用,大有取代Apache的勢頭(目前Apache和Ngnix使用量基本持平),這也是本文采用LNMP的原因。Nginx是一款高性能的開源Web服務器軟件,也可以用作反向代理、負載均衡器和HTTP緩存。它采用事件驅(qū)動模型和異步非阻塞IO處理方式,能夠處理大量并發(fā)連接,同時占用較少的系統(tǒng)資源。Nginx被廣泛應用于高流量的網(wǎng)站和Web應用程序中,如亞馬遜、谷歌、微軟等公司都在使用Nginx。1.Nignx的功能Nginx的功能很多,如作為Web服務器、反向代理服務器、負載均衡服務器和緩存服務器等。(1)Web服務器Nginx是一個高性能的Web服務器軟件。與Apache相比,它能支持的并發(fā)連接更多,占用服務器資源較少,并且請求處理效率較高。(2)反向代理服務器Nginx可以作為HTTP服務器或數(shù)據(jù)庫服務的代理服務器,與Haproxy代理軟件的功能相似,但Nginx的代理功能相對簡單,處理請求的效率不及Haproxy。(3)負載均衡服務器Nginx可以作為負載均衡服務器,將客戶端的請求流量分配給后端多個應用程序服務器,從而提高Web應用程序服務器的性能、可伸縮性與可靠性。(4)緩存服務器Nginx可以用作緩存服務器,與專業(yè)的緩存軟件功能相似。11.1.2Nignx是什么2.Nignx的優(yōu)點Nginx的優(yōu)點包括:高性能:采用事件驅(qū)動模型和異步非阻塞IO處理方式,能夠處理大量并發(fā)連接,同時占用較少的系統(tǒng)資源。高可靠性:Nginx具有優(yōu)秀的容錯能力和穩(wěn)定性,支持熱部署,能夠在不中斷服務的情況下進行軟件升級。高擴展性:Nginx支持模塊化架構,用戶可以根據(jù)需要選擇和定制不同的模塊,以滿足不同的應用場景。靈活性:Nginx支持反向代理、負載均衡、HTTP緩存等多種應用場景,可以根據(jù)需要進行配置和調(diào)整。安全性:Nginx具有豐富的安全功能,如SSL/TLS加密、基于IP地址的訪問控制、請求限速等,可以有效保護Web應用程序的安全。11.1.2Nignx是什么11.1.3Mysql、MariaDB是什么1.Mysql簡介MySQL是一種開源的關系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),由瑞典MySQLAB公司開發(fā),后被Sun公司收購,現(xiàn)在屬于Oracle旗下產(chǎn)品。MySQL支持多種操作系統(tǒng),包括Linux、Windows和MacOS等,以及多種編程語言,如C、C++、Java、Python等。MySQL具有高性能、可靠性和安全性等特點,在Web應用程序、企業(yè)應用程序等各種場景中被廣泛應用。MySQL數(shù)據(jù)庫有很多版本,具體介紹如下。Alpha版本:一般只在軟件開發(fā)公司內(nèi)部運行,不對外公開。Beta版本:完成功能開發(fā)和所有測試工作后的產(chǎn)品,不會存在較大的功能或性能Bug。RC版本:屬于正式發(fā)布前的一個版本,是最終測試版本,進一步收集Bug或不足之處,然后進行修復和完善。GA版本:軟件產(chǎn)品正式發(fā)布的版本,也是生產(chǎn)環(huán)境中使用的版本。2.MaraiaDBMariaDB由MySQL的創(chuàng)始人MichaelWidenius主導開發(fā),他早前曾以10億美元的價格,將自己創(chuàng)建的公司MySQLAB公司賣給了SUN公司。此后,隨著SUN被Oracle收購,MySQL的所有權也落入Oracle的手中。在Oracle控制下的MySQL的開發(fā),有兩個主要問題:MySQL核心開發(fā)團隊是封閉的,完全沒有Oracle之外的成員參加。很多高手即使有心做貢獻,也沒辦法做到。MySQL新版本的發(fā)布速度,在Oracle收購Sun之后大為減緩。MariaDB數(shù)據(jù)庫管理系統(tǒng)是MySQL的一個分支,主要由開源社區(qū)在維護,采用GPL授權許可。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。MariaDB在擴展功能、存儲引擎以及一些新的功能改進方面都強過MySQL。在存儲引擎方面,使用XtraDB來代替MySQL的InnoDB。11.1.3Mysql、MariaDB是什么PHP是一種開源的服務器端腳本語言,用于Web開發(fā)和動態(tài)網(wǎng)頁生成。它可以嵌入HTML中,也可以作為獨立的腳本運行。PHP支持多種數(shù)據(jù)庫,如MySQL、Oracle、PostgreSQL等,以及多種協(xié)議,如HTTP、SMTP、FTP等。PHP的語法簡單易學,具有很好的可移植性和擴展性,因此被廣泛應用于Web開發(fā)領域。許多知名的網(wǎng)站和Web應用程序,如Facebook、Wikipedia、WordPress等都是使用PHP開發(fā)的。PHP具有以下特點:1.開源免費PHP是一個受眾大并且擁有眾多開發(fā)者的開源軟件項目,Linux+Nginx+Mysql+PHP是它的經(jīng)典安裝部署方式,相關的軟件全部都是開源免費的,所以使用PHP可以節(jié)約大量的正版授權費用。不過PHP作為一個開源軟件,它缺乏大型科技公司的支持背景,網(wǎng)絡上對它的唱衰也是經(jīng)久不衰,不過它的持續(xù)迭代和性能持續(xù)增強的現(xiàn)實卻是鼓舞人心的,PHP社區(qū)用實際行動給予各種質(zhì)疑強有力的回擊。11.1.4PHP是什么2.快捷高效PHP的內(nèi)核是C語言編寫的基礎好效率高,可以用C語言開發(fā)高性能的擴展組件;PHP的核心包含了數(shù)量超過1000的內(nèi)置函數(shù),功能應有盡有很全面,開箱即用程序代碼簡潔;PHP數(shù)組支持動態(tài)擴容,支持以數(shù)字、字符串或者混合鍵名的關聯(lián)數(shù)組,能大幅提高開發(fā)效率;PHP是一門弱類型語言,程序編譯通過率高,相對其他強類型語言開發(fā)效率快;PHP天然熱部署,在php-fpm運行模式下代碼文件覆蓋即完成熱部署;PHP經(jīng)過20多年的發(fā)展,在互聯(lián)網(wǎng)上可以搜到海量的參考資料供參考學習。3.性能提升PHP版本越高它的整體性能越高,根據(jù)官方介紹,PHP7.0對比PHP5.6性能就提升了2倍,PHP7.4已經(jīng)比PHP7.0快了約30%,PHP8.0在性能上又相對PHP7.4大約改進了10%。PHP8.0引入了JIT編譯器特性,同時加入多種新的語言功能。PHP擁有自己的核心開發(fā)團隊,保持5年發(fā)布一個大版本。11.1.4PHP是什么4.跨平臺每個平臺都有對應的php解釋器版本,指針對不同平臺均編譯出目標平臺的二進制碼(PHP解釋器),php開發(fā)的程序可以不經(jīng)修改運行在Windows、Linux、unix等多個操作系統(tǒng)上。5.常駐內(nèi)存php-cli模式下可以實現(xiàn)程序常駐內(nèi)存,各種變量和數(shù)據(jù)庫連接都能長久保存在內(nèi)存實現(xiàn)資源復用,比較常用的做法是結合swoole組件編寫cli框架

6.頁面級生命周期在php-fpm模式下,所有的變量都是頁面級的,無論是全局變量還是類的靜態(tài)成員,都會在頁面執(zhí)行完畢后被清空,對程序員水平要求低,占用內(nèi)存非常少,特別適合中小型系統(tǒng)的開發(fā)11.1.4PHP是什么11.1.5LNMP架構工作原理1.Nginx與PHP的協(xié)同工作機制Nginx是一個靜態(tài)Web服務器和HTTP請求轉發(fā)器,它可以直接回應客戶端對靜態(tài)資源的請求,對動態(tài)資源的請求需要通過快速通用網(wǎng)關接口(FastCommonGatewayInterface,F(xiàn)astCGl)轉發(fā)給后臺的腳本程序解析服務器進行處理。FastCGI采用C/S結構,可以將Web服務器和腳本程序解析服務器相分離,讓Web服務器專一地處理靜態(tài)請求和轉發(fā)動態(tài)請求,而腳本程序解析服務器則專一地處理動態(tài)請求。在LNMP架構的服務器中,處理PHP動態(tài)資源的后臺服務是PHPFastCGI進程管理器(PHPFastCGlProcessManager,PHP-FPM)。PHP-FPM啟動后包含master和worker兩種進程:master進程只有一個,它負責監(jiān)聽、接收來自Nginx服務器的請求和管理調(diào)度worker進程;而worker進程一般有多個,每個進程的內(nèi)部都嵌入了一個PHP解釋器,負責解析執(zhí)行PHP程序。由此可見Nginx服務器負責處理靜態(tài)資源請求,PHP-FPM負責處理PHP腳本程序,兩者都遵循FastCGI協(xié)議進行通信,完成協(xié)同工作。2.LNMP服務器的工作原理LNMP服務器的工作流程如圖11.2所示。11.1.5LNMP架構工作原理圖11.2LNMP服務器工作流程LNMP服務器的具體工作過程如下:用戶通過瀏覽器發(fā)送HTTPRequest請求到Nginx服務器,該服務器響應并處理請求。如果請求的是靜態(tài)資源,則該服務器直接將靜態(tài)資源(CSS、圖片、視頻等)返回。如果請求的是動態(tài)數(shù)據(jù),則Nginx服務器將PHP腳本程序通過FastCGI協(xié)議傳輸給PHP-FPM,由PHP-FPM響應,然后將PHP腳本程序交給worker進程(內(nèi)嵌了PHP解釋器)解析執(zhí)行。可以同時啟動多個worker進程,并發(fā)執(zhí)行。PHP腳本程序執(zhí)行完畢,將解析后的腳本返回到PHP-FPM,PHP-FPM再以FastCGI的形式將腳本信息傳送給Nginx服務器。Nginx服務器再以HTTPReponse形式傳送給瀏覽器,瀏覽器進行解析與渲染,最后呈現(xiàn)給用戶。11.1.5LNMP架構工作原理

部署LNMP環(huán)境的方式有多種,一般根據(jù)應用的實際情況來進行選擇。常見的LNMP部署方式有三種,分別是:使用dnf安裝:簡單,部署速度快,適合新手,不能定制化。使用二進制源碼:部署需要的時間長,需要配置的項較多,但能夠自由定制。使用一鍵安裝包:簡單,部署時間適中,可以進行定制化部署。11.1.6LNMP架構部署方式03任務11-2安裝與配置Nginx服務器任務11-2安裝與配置Nginx服務器任務目標11.2.1安裝Nginx軟件包11.2.2熟悉Nginx的配置文件任務目標

小陳經(jīng)過比較后發(fā)現(xiàn),Nginx作為一款高性能的靜態(tài)Web服務器,具有占用內(nèi)存少且具備強大的并發(fā)能力的特點。因此,小陳決定在他的博客服務器上使用Nginx來搭建。

因此,小陳制定了如下的任務目標:掌握Nginx軟件的基本安裝方法。熟悉Nginx服務器主配置文件。能夠配置虛擬主機。說明:為了學習方便,小陳的服務器部署在虛擬機環(huán)境下。以最小化方式安裝了CentOSStream9系統(tǒng),以NAT模式連接外網(wǎng)??蛻舳耸褂梦锢頇C模擬。虛擬機節(jié)點的具體規(guī)劃如表11.1所示。11.2.1安裝Nginx軟件包1.安裝Nignx(1)安裝Nginx所需要的依賴庫軟件。首先配置啟用epel-release源,增加可用的rpm軟件包。(2)使用dnf安裝Nignx軟件包。(3)啟動Nginx服務,并設置為開機自啟并檢查服務狀態(tài)。(4)查看80端口的監(jiān)聽狀態(tài)。11.2.1安裝Nginx軟件包(5)查看Nginx進程運行狀態(tài)。11.2.1安裝Nginx軟件包2.配置防火墻配置firewalld防火墻,開啟服務器的TCP80號端口。3.關閉SElinux安全系統(tǒng)11.2.1安裝Nginx軟件包11.2.1安裝Nginx軟件包4.訪問測試頁

在物理機的瀏覽器地址欄中輸如“00”,打開Nginx服務器的測試頁面,如圖11.3所示。圖11.3Nginx服務器測試頁面安裝完Nginx后,需記住如表11.2所示的Nginx常用目錄。11.2.2熟悉Nginx的配置文件1.Nginx主配置文件Nginx的主配置文件/etc/nginx/nginx.conf中的每個指令必須以分號結束,文中以#號開頭的行是注釋行。整個配置文件以“塊”的形式組織在一起,每個塊一般以一對大括號“{}”表示(全局塊例外)。Nginx的配置文件相當簡潔,主要分為三部分:全局塊、events塊、http塊。全局塊:配置服務器整體運行的配置指令,如worker_processes1。events塊:影響Nginx服務器與用戶的網(wǎng)絡連接,如worker_connections1024。http塊:此塊包含兩個子塊,http全局塊和server塊。11.2.2熟悉Nginx的配置文件11.2.2熟悉Nignx的配置文件11.2.2熟悉Nginx的配置文件2.配置NginxNginx提供了三種類型的虛擬主機配置,包括基于域名的虛擬主機、基于IP的虛擬主機和基于端口的虛擬主機。接下來將逐一介紹這三種虛擬主機的配置方法。配置基于域名的虛擬主機創(chuàng)建基礎站點目錄這里不再使用Nginx默認的站點目錄,在生產(chǎn)環(huán)境下也不建議使用默認目錄。手工創(chuàng)建需要的站點目錄并設置相關權限。11.2.2熟悉Nginx的配置文件②創(chuàng)建默認首頁文件創(chuàng)建好站點目錄后,接下來創(chuàng)建兩個站點的默認首頁文件。11.2.2熟悉Nginx的配置文件③配置基于域名的虛擬主機

在/etc/nginx/conf.d/目錄下新建ceshi.conf虛擬機配置文件,內(nèi)容如下。11.2.2熟悉Nginx的配置文件11.2.2熟悉Nginx的配置文件注意:對于Nginx,servername參數(shù)可以是一個域名,也可以是多個域名并列,域名之間用空格隔開。訪問多個域名時,其實訪問的是同一個網(wǎng)站。其格式如下:在servername中還可以使用通配符“*",同樣是由3部分組成的,其格式如下:11.2.2熟悉Nginx的配置文件④修改/etc/hosts文件,實現(xiàn)本機地址解析

由于本服務器是用來在本地測試,沒有公網(wǎng)上的正是域名,所以這里采取本機地址解析的方法,操作如下。(生產(chǎn)環(huán)境下請用其他方式解析域名)11.2.2熟悉Nginx的配置文件⑤語法檢查并重載服務配置文件⑥瀏覽器測試在本服務器中打開瀏覽器訪問相對應的域名,訪問結果如圖11.4所示。(注意:使用物理機訪問可能會出錯)。圖11.4使用域名訪問結果11.2.2熟悉Nginx的配置文件(2)配置基于ip的虛擬主機添加IP地址Linux系統(tǒng)支持IP別名的功能。配置基于IP的虛擬主機,即給Nginx服務器主機配置多個不同的IP,所以需要在同一物理網(wǎng)卡中使用nmcli命令添加多個不同的IP地址。具體執(zhí)行命令如下:11.2.2熟悉Nginx的配置文件②改虛擬機配置文件

修/etc/nginx/conf.d/目錄下ceshi.conf虛擬機配置文件,內(nèi)容如下:11.2.2熟悉Nginx的配置文件11.2.2熟悉Nginx的配置文件③語法檢查并重載服務配置文件④瀏覽器測試在客戶機中打開瀏覽器訪問相對應的IP,訪問結果如圖11.5所示。圖11.5使用IP訪問結果11.2.2熟悉Nginx的配置文件(3)配置基于端口的虛擬主機通過上面兩種虛擬主機配置方式可以看出,虛擬機配置起來相當?shù)暮唵巍;诙丝诘奶摂M主機配置也一樣,只需要開放不同的端口給Nginx,然后客戶端通過訪問不同的端口來訪問不同的虛擬主機。修改虛擬機配置文件修/etc/nginx/conf.d/目錄下ceshi.conf虛擬機配置文件,內(nèi)容如下:11.2.2熟悉Nginx的配置文件11.2.2熟悉Nginx的配置文件②設置防火墻配置firewalld防火墻,開啟服務器的TCP8001和TCP8002號端口。11.2.2熟悉Nginx的配置文件③語法檢查并重載服務配置文件④瀏覽器測試在客戶機中打開瀏覽器訪問相對應的IP端口號,訪問結果如圖11.6所示。圖11.6使用IP端口訪問結果04任務11-3安裝MariaDB數(shù)據(jù)庫任務11-3安裝MaraiaDB數(shù)據(jù)庫任務目標11.3.1安裝MaraiaDB11.3.2初始MaraiaDB

11.3.3管理MaraiaDB任務目標

陳通過之前的學習了解到,MariaDB是MySQL的一個分支,并且在幾乎所有方面都與MySQL兼容,甚至在某些方面更優(yōu)越。最重要的是,MariaDB是由一個開放的社區(qū)進行維護,不存在版權問題。因此,小陳決定在自己的服務器上使用MariaDB來提供數(shù)據(jù)庫服務。因此,小陳制定如下的任務目標:能夠正確安裝MariaDB。熟悉MariaDB的配置。能完成MariaDB的基本管理操作。11.3.1安裝MaraisDB

在LNMP架構中,早期的M表示MySQL數(shù)據(jù)庫系統(tǒng),因為早期的Linux發(fā)行版本多數(shù)都使用MySQL,而近年來,RHEL及CentOS等新的發(fā)行版本中,開始陸續(xù)采用MariaDB代替MySQL。MariaDB兼容MySQL,支持多種類型的操作系統(tǒng)及編程語言。MariaDB可用于GPL、LGPL和BSD等多種許可協(xié)議,避免了MySQL被Oracle收購后引發(fā)的許可證問題,它提供了多種存儲引擎(包括高性能存儲引擎),用于與其他關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)的數(shù)據(jù)源一起工作。MariaDB和MySQL在性能上基本保持一致,兩者的操作命令也十分相似。從務實的角度來講,在掌握了MariaDB數(shù)據(jù)庫的命令和基本操作之后,在今后的工作中即使遇到MySQL數(shù)據(jù)庫,也可以快速上手。1.MaraiaDBCentOSStream9的資源庫中已經(jīng)包含了MariaDB,所以這里我們直接安裝:2.MaraiDB初始位置這里要做三件事情。首先啟動MariaDB服務,然后將其設置為開機自啟,最后查看其運行狀態(tài)。11.3.1安裝MaraisDB11.3.2初始化MaraisDB1.初始化MariaDB數(shù)據(jù)庫MariaDB數(shù)據(jù)庫軟件安裝完畢并成功啟動后請不要立即使用。為了確保數(shù)據(jù)庫的安全性和正常運轉,需要先對數(shù)據(jù)庫程序進行初始化操作。這個初始化操作涉及下面5個步驟:設置root管理員在數(shù)據(jù)庫中的密碼值(注意,該密碼并非root管理員在系統(tǒng)中的密碼,這里的密碼值默認應該為空,可直接按回車鍵)。設置root管理員在數(shù)據(jù)庫中的專有密碼。刪除匿名用戶,并使用root管理員從遠程登錄數(shù)據(jù)庫,以確保數(shù)據(jù)庫上運行的業(yè)務的安全性。刪除默認的測試數(shù)據(jù)庫,取消測試數(shù)據(jù)庫的一系列訪問權限。刷新授權列表,讓初始化的設定立即生效。11.3.2初始化MaraisDB2.登錄MariaDB數(shù)據(jù)庫

配置完畢,即可使用root(初始化時設置的密碼是000000)用戶登錄MariaDB數(shù)據(jù)庫,操作如下:

1.數(shù)據(jù)庫操作對數(shù)據(jù)庫的常用操作包括:創(chuàng)建數(shù)據(jù)庫、選擇數(shù)據(jù)庫和刪除數(shù)據(jù)庫(1)創(chuàng)建數(shù)據(jù)庫登錄數(shù)據(jù)庫后,使用“createdatabase數(shù)據(jù)庫名;”完成對數(shù)據(jù)庫的創(chuàng)建。然后可以使用“showdatabases;”命令來查看目前所有數(shù)據(jù)庫信息。MySQL數(shù)據(jù)庫默認自帶3個數(shù)據(jù)庫,information_schema數(shù)據(jù)庫存儲相關信息,mysql數(shù)據(jù)庫存儲授權表,performance_schema數(shù)據(jù)庫存儲數(shù)據(jù)庫性能參數(shù),可以用來提升數(shù)據(jù)庫的性能。創(chuàng)建couman數(shù)據(jù)庫操作如下:11.3.3管理MaraisDB(2)選擇數(shù)據(jù)庫

當需要對某一數(shù)據(jù)庫進行操作時,首先需要選擇該數(shù)據(jù)庫才能操作,使用“use數(shù)據(jù)庫名字;”命令來完成。選擇couman數(shù)據(jù)庫操作如下:(3)刪除數(shù)據(jù)庫使用“dropdatabase數(shù)據(jù)庫名;”命令刪除指定數(shù)據(jù)庫。刪除數(shù)據(jù)庫時,連同數(shù)據(jù)庫里的所有表(包括其中的數(shù)據(jù))和數(shù)據(jù)庫目錄都將被刪除。刪除couman數(shù)據(jù)庫操作如下:11.3.3管理MaraisDB

當刪除不存在的數(shù)據(jù)庫時,會提示錯誤信息,為了避免這種情況發(fā)生,可以在命令中加入ifexists子句。刪除一個可能不存在的數(shù)據(jù)庫操作如下:11.3.3管理MaraisDB2.數(shù)據(jù)表操作

創(chuàng)建數(shù)據(jù)庫之后,需要進一步創(chuàng)建和管理數(shù)據(jù)表。每個表由行和列組成,每行是一條記錄,每個記錄包含多個列(字段)。對數(shù)據(jù)庫表的常用操作主要包括:創(chuàng)建表,修改表,克隆表,刪除表。(1)創(chuàng)建表

創(chuàng)建表的SQL語句格式如下。11.3.3管理MaraisDB

其中字段類型,也稱作列類型,規(guī)定了某個字段所允許輸入的數(shù)據(jù)類型。常見的字段類型見表11.3。11.3.3管理MaraisDB字段約束用于進一步約束某個字段允許輸入的數(shù)據(jù)。常見的字段約束見表11.4。表11.4字段約束11.3.3管理MaraisDB表約束用于確定表的主鍵、外鍵和索引等。見表11.5。表11.5表級約束11.3.3管理MaraisDB

表類型指明了表中數(shù)據(jù)存儲的格式,MariaDB支持多個存儲引擎作為不同類型的處理器。默認的為“innoDB”處理器,對應的存儲引擎為“innoDB”。MariaDB數(shù)據(jù)庫支持的表存儲引擎見表11.6。表11.6表存儲引擎11.3.3管理MaraisDB11.3.3管理MaraisDB11.3.3管理MaraisDB

一旦數(shù)據(jù)庫創(chuàng)建成功,會在/var/lib/mysql下生成一個與數(shù)據(jù)庫同名的目錄。表創(chuàng)建成功后會在該目錄中生成“表名.frm”文件表示新建的表格式,表數(shù)據(jù)和索引放在“表名.ibd”文件中。

本例中我們要創(chuàng)建以下三個表:員工信息表(employee),字段:員工號(eno)、姓名(ename)、性別(sex)、項目組(groups);考核內(nèi)容表(exam),字段:內(nèi)容序號(exid)、考核內(nèi)容(cname);員工考核信息表(score,)字段:序號(scid)、員工號(eno)、內(nèi)容序號(exid)、成績(score)。11.3.3管理MaraisDB(2)修改表

修改表的SQL語句格式如下。

可以對表的結構進行修改,包括添加、刪除或修改字段,更改表名或類型等。操作包括add、change、modify、drop和rename等。11.3.3管理MaraisDB(3)克隆表

克隆表的SQL語句格式如下。

克隆的內(nèi)容包括表結構、表中的數(shù)據(jù)和約束,并用源表數(shù)據(jù)填充副本。(4)刪除表

刪除表的SQL語句格式如下。

用于刪除一個或多個已存在的表,表結構和表中的數(shù)據(jù)都將被刪除。11.3.3管理MaraisDB3.處理表數(shù)據(jù)

創(chuàng)建數(shù)據(jù)庫和表后,下一步要做的就是處理數(shù)據(jù)。一般情況下,需要使用SQL語句來增加,更新,查詢和刪除數(shù)據(jù)表中的記錄。(1)增加記錄

增加的SQL語句格式如下。(2)更新記錄

更新的SQL語句格式如下。11.3.3管理MaraisDB(3)查詢記錄

查詢的SQL語句格式如下。(4)刪除記錄

刪除的SQL語句格式如下。11.3.3管理MaraisDB4.數(shù)據(jù)庫的權限管理(1)數(shù)據(jù)庫權限介紹與處理邏輯MariaDB數(shù)據(jù)庫服務采用了基于白名單的權限策略,這意味著明確指定了哪些用戶可以執(zhí)行哪些操作,但無法明確指定哪些用戶不能執(zhí)行某些操作。權限驗證主要通過MariaDB庫中的五個數(shù)據(jù)字典表(mysql.user、mysql.db、mysql.tables_priv、mysql.columns_priv、c_priv)來實現(xiàn)對不同粒度權限需求的控制。下表列出了MariaDB數(shù)據(jù)庫中授權表的表名和說明。11.3.3管理MaraisDB表11.7MariaDB數(shù)據(jù)庫中授權表11.3.3管理MaraisDB

當用戶登錄數(shù)據(jù)庫時,會根據(jù)這幾張表中的內(nèi)容來決定用戶的訪問權限,決定過程如下:首先從user表中的host,user,passwd這三個字段判斷連接的IP,用戶名,密碼是否存在表中,存在則通過身份驗證;然后進行權限分配,首先檢查全局表user,如果user中對應的操作權限為Y,則此用戶對所有數(shù)據(jù)庫的該操作權限為Y,將不再檢查db,tables_priv和columents_priv中的權限;如果為N,則到db表中檢查此用戶對應的具體數(shù)據(jù)庫,并得到db中為Y的權限;如果db中為N,則檢查tables_priv表中此數(shù)據(jù)庫對應的具體表,取得表中的權限Y,并依次進行類推。MariaDB數(shù)據(jù)庫提供了兩種方法修改授權表中的訪問權限??梢允褂胕nsert、update和delete等SQL語句手工修改權限表中的信息或者使用grant和revoke命令。對比兩種方法,后一種更加簡單而方便。

grant命令用于授予權限,而revoke命令用戶撤銷權限。11.3.3管理MaraisDBgrant命令的格式:revoke命令的格式:11.3.3管理MaraisDB

數(shù)據(jù)庫的權限級別見表11.8,如果針對數(shù)據(jù)庫所有內(nèi)容或所有訪問地址進行設置可以使用“%”。

表11.8數(shù)據(jù)庫的權限級別11.3.3管理MaraisDB11.3.3管理MaraisDB通常在管理數(shù)據(jù)庫權限時可以基于以下幾點來設置用戶權限:只賦予能滿足用戶需要的最小權限,防止用戶操作不當。比如用戶只是需要查詢數(shù)據(jù)信息,則只賦予select權限,不用給用戶賦予update、insert或delete權限。創(chuàng)建用戶的時候限制用戶的登錄主機,一般是限制成指定IP或者內(nèi)網(wǎng)IP段。如果安裝完數(shù)據(jù)庫自動創(chuàng)建了無密碼用戶,則最好將這些用戶刪除。為每個用戶設置滿足密碼復雜度的密碼。定期清理不需要的用戶,回收權限或者刪除用戶。11.3.3管理MaraisDB(2)數(shù)據(jù)庫權限及用戶管理Grant命令創(chuàng)建一個只允許本地登錄的用戶zhangping,并允許將權限賦予別的用戶,密碼為Zhangping11??!。說明:allprivileges:表示所有權限,也可以是select、update等具體權限。on:用來指定權限針對的數(shù)據(jù)庫和表。*.*:前面的*號用來指定數(shù)據(jù)庫名稱,后面的*號用來指定表名。如果使用*,則表示所有。to:表示將權限賦予某個用戶。zhangping@'localhost':表示zhangping用戶,@后面接限制的主機,可以是IP,IP段,域名以及%,%號表示任何地方。identifiedby:指定用戶的登錄密碼。withgrantoption:表示該用戶可以將自己的權限賦予別的用戶。11.3.3管理MaraisDB②權限刷新當管理員對用戶的權限進行了修改操作,是否即時生效呢?針對這個問題,答案是:看情況!如果是通過GRANT、REVOKE、SETPASSWORD、RENAMEUSER等MySQL提供的命令執(zhí)行修改,那么權限將馬上生效,因為這些命令將觸發(fā)系統(tǒng)重新載入授權表(GRANTTABLES)到內(nèi)存。如果是手動修改字典表方式(INSERT、UPDATE、DELETE),這種情況下權限并不會馬上生效,除非重啟MariaDB服務,或者DBA主動觸發(fā)授權表的重新裝載。當授權表被重新加載后,對當前已連接的客戶端又會產(chǎn)生哪些影響呢?具體如下:表或列粒度的權限將在客戶端下次執(zhí)行操作時生效。數(shù)據(jù)庫級的權限將在客戶端執(zhí)行USEdb_name語句,切換數(shù)據(jù)庫時生效。全局權限和密碼修改,對當前已連接的客戶端無效,下次連接時才會生效。11.3.3管理MaraisDB③查看權限

查看當前用戶權限:

查看dpuser0101用戶權限:11.3.3管理MaraisDB

查看dpuser0102用戶權限:④收回權限

回收用戶zhangping的權限:11.3.3管理MaraisDB⑤對用戶重命名

將用戶名zhangping重命名為liqiang;⑥修改用戶密碼

將liqiang用戶的密碼修改為liqiang123?、邉h除用戶

刪除數(shù)據(jù)庫的用戶liqiang;11.3.3管理MaraisDB5.數(shù)據(jù)庫的備份與恢復

數(shù)據(jù)庫的備份與恢復是非常重要的環(huán)節(jié)。由于意外或者其他人為失誤而導致的數(shù)據(jù)丟失,會造成數(shù)據(jù)的嚴重損失。因此,定期進行數(shù)據(jù)庫備份是非常有必要的。

在MariaDB數(shù)據(jù)庫中,可以使用命令進行數(shù)據(jù)備份與恢復。它是將數(shù)據(jù)庫中的數(shù)據(jù)備份成一個擴展名為.sql的文本文件,此文件可以用于數(shù)據(jù)庫的恢復。

(1)備份數(shù)據(jù)庫

用于進行數(shù)據(jù)備份的命令是mysqldump命令。這個命令存儲于mariaDB目錄的bin目錄中。mysqldump命令格式如下:例如:備份couman數(shù)據(jù)庫,到root用戶的家目錄,備份名為couman.sql。操作如下:11.3.3管理MaraisDB

(2)恢復數(shù)據(jù)庫

恢復數(shù)據(jù)庫的命令格式如下:

輸入命令后,根據(jù)提示輸入相應密碼就可以完成數(shù)據(jù)庫的恢復。需要注意,在恢復數(shù)據(jù)庫之前首先要刪除已有數(shù)據(jù)庫,然后再次創(chuàng)建數(shù)據(jù)庫,最后再恢復。11.3.3管理MaraisDB6.重置MariaDB數(shù)據(jù)庫管理員root密碼

在工作學習過程中,很多人在初始設置之后會較長時間不再使用MariaDB數(shù)據(jù)庫,從而導致數(shù)據(jù)庫管理員密碼遺忘,這時候就需要通過重置密碼來登錄數(shù)據(jù)庫。不同版本的MariaDB數(shù)據(jù)庫在進行密碼重置時方法略有差異,下面介紹的方法適用于10.1.20-MariaDB及更高版本。這里我們以10.5.16-MariaDB版本為例,具體的操作過程如下:(1)確認數(shù)據(jù)庫版本號。(2)停止數(shù)據(jù)庫11.3.3管理MaraisDB(3)在沒有權限檢查的情況下重新啟動數(shù)據(jù)庫服務器。如果在不加載有關用戶權限的信息的情況下運行MariaDB,則可以使用root權限訪問數(shù)據(jù)庫命令行而無需提供密碼。為此,我們需要停止數(shù)據(jù)庫加載授權表,該表存儲用戶權限信息。因為這個操作有安全風險,所以我們還要跳過網(wǎng)絡以防止其他客戶端連接。11.3.3管理MaraisDB(4)更改數(shù)據(jù)庫管理員root密碼。11.3.3管理MaraisDB(5)重啟并登錄數(shù)據(jù)庫服務器。05任務11-4安裝配置PHP環(huán)境任務11-4安裝配置PHP環(huán)境任務目標11.4.1安裝PHP環(huán)境11.4.2配置php-fpm服務11.4.3配置Nginx服務器對PHP程序的支持任務目標Nginx服務器本身無法處理PHP程序,因此需要與php-fpm服務配合來解析PHP程序。為了完成LNMP平臺的搭建,小陳需要進一步學習如何配置PHP環(huán)境以完成LNMP平臺的部署。

因此,小陳制定如下的任務目標:配置EPEL擴展源。正確安裝php-fpm軟件。正確架設LNMP平臺。11.4.1安裝PHP環(huán)境php-fpm是用于解析PHP程序的fastCGI接口管理程序,提供了Nginx服務器和PHP語言交互的接口。php-fpm是配置php-fpm服務的軟件包,它作為PHP環(huán)境擴展模塊進行安裝。在某些版本的Linux系統(tǒng)中默認沒有提供php-fpm包,建議在系統(tǒng)中安裝EPEL源。如果安裝過程中EPEL源中沒有我們需要的軟件包,則可以考慮安裝Remi源。

1.配置EPEL源2.安裝php-fpm軟件(1)安裝php-fpm軟件使用dnf命令安裝php、php-mysqlnd、php-fpm軟件包。其中:php-mysqlnd是PHP的擴展模塊,可以是PHP程序連接MySQL。php-fpm用來并發(fā)處理所有的PHP動態(tài)請求。11.4.1安裝PHP環(huán)境(2)啟動php-fpm服務,將其置為開機自啟并檢查運行狀態(tài)(3)查看PHP版本號11.4.2配置php-fpm服務1.主配置文件

php-fpm的主配置文件為/etc/php-fpm.conf,主要包含php-fpm的全局配置,一般不需要修改。

在php-fpm的配置文件中,以分號“;”開頭的行是注釋行。下面為了方便介紹php-fpm配置文件中的代碼,我們過濾了文件中原有的注釋行。

查看/etc/php-fom.conf文件中有效的配置(過濾掉分號“;”開頭的注釋行)內(nèi)空如下:11.4.2配置php-fpm服務2.進程池配置文件php-fpm作為一個獨立的服務運行,在php-fpm的進程池中運行多個子進程,用來并發(fā)處理所有的PHP動態(tài)請求。Nginx服務器接收到PHHP動態(tài)請求時,會轉發(fā)給php-fpm,php-fpm服務調(diào)用進程池中的子進程來處理動態(tài)請求。如果進程池中的資源耗盡,會導致請求無法處理。php-fpm進程池的配置文件存放在/etc/php-fpm.d/目錄中,配置文件名一般以“.conf”作為后綴。php-fpm默認只配置了一個進程池,其配置文件是/etc/php-fpm.d/www.conf。查看到/etc/php-fpm.d/www.conf文件中有效的配置內(nèi)容如下。11.4.2配置php-fpm服務11.4.3配置Nginx服務器對PHP程序的支持Nginx服務器本身只是一個靜態(tài)Web文件服務器,無法處理PHP程序。通過配置Nginx服務器以支持PHP,當Nginx服務器接收到客戶端的PHP請求時,它會將請求發(fā)送給后端的php-fpm進行處理,然后接收php-fpm返回的處理結果,并將結果返回給客戶端。這樣實現(xiàn)了Nginx對PHP程序的支持。11.4.3配置Nginx服務器對PHP程序的支持1.配置Nginx服務器的虛擬主機以默認的虛擬主機為例,配置Nginx服務器支持PHP程序,步驟如下。(1)使用nano編輯器打開/etc/nginx/conf.d/default.conf文件。

(2)配置location/{}塊。在index參數(shù)的最前面位置增加“index.php",設置網(wǎng)站的首頁為index.php。(3)刪除location~\.php${}塊前的“#”注釋符。(4)配置location~\.php${}塊。修改網(wǎng)站的根目錄,將root參數(shù)值改為/usr/share/nginx/html。將參數(shù)SCRIPTFILENAME值更改為$document_root$fastcgi_script_name。(5)保存配置文件。11.4.3配置Nginx服務器對PHP程序的支持(5)保存配置文件。修改完畢的/etc/nginx/conf.d/default.cond文件內(nèi)容如下。11.4.3配置Nginx服務器對PHP程序的支持2.檢查生效的Nginx和php-fpm(1)檢查配置文件/etc/nginx/nginx.conf的語法正確性(2)重新Nginx配置說明:執(zhí)行“nginx-sreload”命令與“systemctlrestartnginx”命令都可以更新Nginx配置,它們的區(qū)別如下:執(zhí)行“nginx-sreload”命令表示向Nginx發(fā)送reload(重新加載)信號,可以實現(xiàn)不停服務,平滑地更新Nginx配置文件。執(zhí)行“systemctlrestartnginx”命令會重啟Nginx,造成服務中斷,不適合生產(chǎn)環(huán)境。11.4.3配置Nginx服務器對PHP程序的支持(3)檢查配置文件/etc/php-fpm.conf語法正確性(4)重新載入php-fpm服務11.4.3配置Nginx服務器對PHP程序的支持3.測試LNMP服務器

在LNMP服務器上創(chuàng)建PHP測試頁文件phpinfo.php,保存到網(wǎng)站的根目錄/usr/share/nginx/html中,phpinfo.php的內(nèi)容如下:之后在本地物理機打開瀏覽器。在地址欄輸入00/phpinfo.php。返回結果如圖11.7所示,表示LNMP環(huán)境部署成功。(建議測試完成之后刪除phpinfo.php文件)

圖11.7PHP測試頁06任務11-5部署基于LNMP的WordPress博客網(wǎng)站任務11-5部署基于LNMP的WordPress博客網(wǎng)站任務目標11.5.1安裝WordPress

11.5.2為WordPress創(chuàng)建MaraiaDB數(shù)據(jù)庫環(huán)境11.5.3配置WordPress

11.5.4配置Nginx虛擬主機11.5.5通過Web界面完成WordPress配置

任務目標

通過之前的學習,小陳成功地部署了LNMP平臺,離自己的目標也越來越近了。下一步的工作是在LNMP平臺上部署自己的個人網(wǎng)站。WordPress是一款使用PHP語言和MySQL數(shù)據(jù)庫開發(fā)的免費個人博客網(wǎng)站系統(tǒng),用戶可以在WordPress中文網(wǎng)站獲取WordPress網(wǎng)站的安裝包,然后在LNMP服務器上搭建自己的博客網(wǎng)站。接下來,小陳計劃在單節(jié)點LNMP服務器上部署WordPress網(wǎng)站。

因此,小陳制定如下的任務目標:獲取WordPress程序代碼。在LNMP平臺安裝WordPress。完成參數(shù)配置。11.5.1安裝WordPressWordPress是一種開源的內(nèi)容管理系統(tǒng)(CMS),用于創(chuàng)建和管理網(wǎng)站和博客。它基于PHP語言和MySQL數(shù)據(jù)庫,提供了豐富的功能和插件,可以輕松創(chuàng)建各種類型的網(wǎng)站,如個人博客、商業(yè)網(wǎng)站、新聞門戶等。WordPress具有易用性、靈活性和可擴展性等特點,用戶可以通過安裝不同的主題和插件,來定制自己的網(wǎng)站風格和功能。WordPress是目前最流行的CMS之一,被廣泛應用于全球各地的網(wǎng)站建設。圖11.8WordPress圖標11.5.1安裝WordPress1.下載WordPress至網(wǎng)站根目錄并解壓

注意:這時候WordPress的目錄是/usr/share/nginx/html/WordPress。這個目錄就是WordPress網(wǎng)站的根目錄,后面配置其他參數(shù)時會用到。當然你也可以使用其他目錄。11.5.1安裝WordPress2.創(chuàng)建上傳目錄Wordpress使用過程中需要上傳圖片和附件。因此,這里我們要創(chuàng)建一個專用的上傳目錄。3.修改網(wǎng)絡根目錄權限

將網(wǎng)站根目錄的權限用戶更新為Nginx對應的用戶,解決WordPress更新版本、上傳主題或安裝插件時,提示需要FTP登錄憑證或無法創(chuàng)建目錄問題。

11.5.2為WordPress創(chuàng)建MaraiaDB環(huán)境

使用root賬戶登錄MariaDB數(shù)據(jù)庫,創(chuàng)建WordPress數(shù)據(jù)庫,然后創(chuàng)建wp用戶(密碼為KUt*&3421),并授予wp用戶對WordPress數(shù)據(jù)庫的所有權限。

注意:生產(chǎn)環(huán)境下一定要注意密碼的強度,弱密碼很容易被攻破,會產(chǎn)生極大的安全隱患。11.5.3配置WordPress

將工作目錄切換到

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論