1. 程式人生 > >Linux學習(第十一週)

Linux學習(第十一週)

第十一週學習內容:LAMP和檔案儲存共享服務

第十一週作業:

1、搭建php-fpm工作方式的LAMP環境,實現wordpress正常訪問。

      LAMP環境:l是作業系統linux;a是web服務程式httpd(apache)或nginx;m是關係型資料庫mysql或mariadb;p是開發語言php,perl,python等,由這四個部件組合起來搭建動態網站的架構就叫lamp。所謂的動態網站不是網頁上有flash在播放動態的圖片就是動態網站,而是要在伺服器端開啟一個程序作為直譯器,執行使用者要的指令碼或程式,把執行完成後的結果傳送給使用者。早期是使用的CGI規範,後來提出了Fast CGI機制,在httpd接收到動態請求時將其轉交給身後的某一程式或伺服器,有該程式去建立子程序,呼叫硬碟並執行,將結果傳送給httpd,最終轉發給使用者。這個程式基於各種不同的開發語言也各不相同,php是fpm,jsp是tomcat,python是django,ruby是ror。而最終要呼叫的資料是存放在硬碟上的,有的是存放在資料庫中,有的是存放在本地硬碟中。存放在資料庫中的資料有可能還在另外一臺裝置上,這樣就形成了三級架構:第一層裝置執行httpd;第二層裝置執行php-fpm;第三層裝置執行mysql。


      搭建php-fpm環境,首先在一臺伺服器上部署好httpd,一臺伺服器上部署好php-fpm和php-mysql,一臺伺服器上部署好mariadb-server。

      image.png

      image.png

      image.png

      mariadb伺服器對資料庫配置檔案新增兩條優化配置,即可啟動服務,再登入mariadb建立個測試賬戶。

      image.png

      image.png

      php-fpm伺服器上對fpm配置檔案修改一下監聽地址和埠,因為是跨主機的,所以不能使用預設的127.0.0.1,修改完成後還需要建立個php session會話儲存目錄,隨後即可啟動服務。

      image.png

      image.png

      httpd伺服器上除了一些基礎配置外,還要加上fcgi配置,表示要將動態資源請求轉交給後臺fpm伺服器,在/etc/httpd/conf.d目錄下新建一個fcgi.conf單獨做配置,比較好管理。

      image.png

      啟動服務後可以在fpm伺服器上建立個php測試頁並且用測試使用者名稱密碼登入mariadb資料庫,保證3臺伺服器正常工作。

      image.png

      image.png

      image.png

      至此準備工作都已完畢,可以開始安裝wordpress了。

      在fpm伺服器上下載wordpress,解壓後拷貝到指定目錄。

      image.png

      在httpd伺服器上建立wordpress目錄。

      image.png

      現在就能訪問wordpress了,根據提示完成後續配置。包括提供資料庫,使用者名稱,編輯配置檔案等,基本都是在網頁中進行的,配置過程中可能會遇到配置檔案無法寫入的問題,這是由於wordpress目錄中的檔案屬主屬組有問題,可以修改屬主,也可以自己新建。當一切就緒就能看到wordpress的登入介面了。

      image.png

      但這裡依然有個問題,由於只把動態資源送往fpm伺服器,而靜態資源根本就無法訪問,導致圖片、標題等資訊無法獲取,解決辦法就是在httpd伺服器上也安裝一份wordpress。最終效果如下:

      image.png

      image.png

2、什麼是DML?常用SQL舉例,每個命令至少1個例子,最多不超過3個例子。

      資料庫管理指令有很多,一般可分為客戶端命令和伺服器端命令,雖然命令不區分大小寫,但約定俗成的把客戶端命令用小寫表示,伺服器端命令用大寫表示。而伺服器端命令又可以分為DDL和DML,DDL是資料庫模式定義語言用於描述資料庫中要儲存的現實世界實體的語言;DML是負責對資料庫物件執行資料訪問工作的指令集,以INSERT、UPDATE、DELETE三種指令為核心,分別代表插入、更新與刪除。要使資料庫工作一般先使用DDL建立庫、表,併為其設定選項,然後通過DML將資料插入、更新以及刪除。

      首先建立資料庫

      image.png

      然後建立表,建立表時別忘了設定選項

      image.png

      使用DML命令INSERT,插入內容

      image.png

      使用DML命令SELECT,查詢表中的具體內容,需要與多種子句配合使用。如:FROM,從哪張表中選出檢視;WHERE,指明挑選行的條件,在有大量資料時這個子句是很有必要的;ORDER BY,排序,預設為升序,想改為降序的話可在命令列最後加上DESC;GROUP BY,分組,通常用於統計配合上自帶函式count()、sum()等;HAVING,對分組的結果進行過濾。

      image.png

      image.png

      image.png

      使用DML命令DELETE,刪除內容

      image.png 

3、簡述ftp的主動和被動模式,並實現基於pam認證的vsftpd。

      ftp(檔案傳輸協議)是一款非常古老的協議,主要為了完成各主機之間檔案傳送的。工作原理是分兩步走,由客戶端發起命令連線,目標是服務期端的TCP21號埠,伺服器響應後連線建立完成,客戶端可由此連線傳送諸如get、put、ls等指令,然後再由伺服器端通過TCP20號埠重新發起一個數據連線指向客戶端,等客戶端響應後連線建立完成,伺服器端可由此連線傳送真正的資料給客戶端,這就是主動模式。在現今網路環境中,由於防火牆的存在客戶端的埠不是隨意開放的,會導致命令連線可以建立,但伺服器端主動傳送來的資料連線會被防火牆阻攔,主動模式就不可行了,所以開發出了被動模式。依然還是建立命令連線,建立完成後,還是由客戶端發起資料連線建立的請求,伺服器端只做響應,資料連線建立完成後就通過此連線傳送真正的資料。

      ftp在Linux上的具體實現有一款程式叫vsftpd,藉助了pam進行認證,在伺服器端下載安裝。

      image.png

      直接啟動服務,其他主機就可以登入訪問了。

      image.png

      不過這是啟用的匿名訪問,訪問的路徑為/var/ftp目錄,預設是不具備上傳功能的。除了匿名使用者,還可以使用系統使用者訪問ftp。

      image.png

      系統使用者預設訪問的是其使用者名稱的家目錄,使用的是shadow檔案中存放的密碼,並且在報文互動中是明文的,這是一件非常危險的事情。所以在pam配置中定義了許多控制功能,諸如白名單、黑名單、鎖使用者等,總結下來就是要限制系統使用者的登入使用者名稱和訪問目錄,兩者結合起來才能使ftp安全管理比較完善。

      除了系統使用者和匿名使用者,vsftpd還支援虛擬使用者登入,即非系統使用者,完全是有另外個檔案或資料庫提供的使用者名稱和密碼作為登入賬號,要藉助到其他程式進行部署。

 4、簡述NFS服務原理及配置。

      NFS(網路檔案系統)最早是由SUN公司研發的,現已開源。在各種檔案系統和開發人員之間有一層虛擬檔案系統叫VFS,開發人員不用管底層檔案系統是哪一個,只需直接呼叫VFS系統提供的介面就行了。而NFS也是底層的檔案系統之一,所以也需要掛載,使用者訪問掛載的路徑,NFS通過套接字訪問遠端伺服器,伺服器接收後通過VFS訪問一個本地的檔案系統,可能是xfs或ext等,再向外輸出時通過核心中的NFS模組找到對端,通過網路將資料傳輸過去,這整個過程就涉及了重要的概念RPC,它使一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。特別要注意的是對於NFS伺服器上的檔案的屬主屬組需要和客戶端統一,否則在許可權上會出現問題。

      NFS在Linux上的具體實現叫nfsd,先在伺服器端,使用lsmod命令檢視核心是否載入了nfs模組,預設都已安裝了,然後安裝nfs-utils程式。

      image.png

      編輯/etc/exports檔案知名共享出去的是本地哪個路徑,哪個檔案系統。該檔案每一行定義一個共享位置,格式為路徑 使用者1(選項) 使用者2(選項)......,其中路徑指的是本地路徑;使用者可以是主機的IP地址,也可以是FQDN,甚至可以用“*”表示全部;選項有ro(只讀)、rw(讀寫)、sync(同步)、async(非同步)等

      image.png

      啟動服務後伺服器端就算配置完成了。

      來到客戶端,可以先使用showmount命令檢視是否有共享NFS系統

      image.png

      然後使用mount.nfs將其掛載即可使用啦

      image.png

5、簡述samba服務,並實現samba配置。

      samba:NFS只能實現Linux或Unix系統之間的檔案系統共享,而Windows系統一直有其自身的一套共享,利用NETBIOS做廣播主機名解析,利用SMB作為檔案系統共享協議,除此之外,還有工作組、域等概念。後來由澳大利亞的研究者在Linux系統上研發出了samba,其能實現Linux與Windows系統之間的檔案系統共享,印表機共享和NETBIOS協議。

      伺服器端安裝samba程式包,而客戶端需要安裝samba_client程式包,預設已安裝

      image.png

      配置檔案是/etc/samba/smb.conf,分成全域性配置和共享定義兩部分,前者用來配置samba自身執行的引數,後者用來具體指明共享的引數。可以參考smb.conf.example檔案進行配置。全域性配置中有這些比較重要的引數:workgroup=表示windows系統中的工作組概念;server string=表示windows系統點選共享檔案時顯示的×××標籤資訊;netbios name=表示windows系統上網路上的芳鄰顯示的主機名;interface=表示監聽的網絡卡介面或介面IP地址,不寫的話預設為本機所有介面;hosts allow=表示白名單地址,預設為所有;hosts deny=表示黑名單地址;logfile=表示日誌存放位置;max log size=表示日誌滾動,最大儲存多少kb;security=user表示安全模式,現在只有這一種模式可用了,表示認證方式為利用samba伺服器本地的系統使用者,而密碼用的是專門設定的samba密碼,設定密碼的方式是在伺服器端使用smbpasswd -a+使用者名稱的方式。而共享定義配置短是以“[]”為開頭定義一個子段,預設已有的子段是homes和printers,主要關注homes子段的配置命令:comment=表示使用者登入後的預設路徑,預設是home也就是該使用者的家目錄;browseable=表示是否能被其他使用者瀏覽到各自的共享資訊;writeable=表示是否擁有寫許可權。

      在共享定義配置段中定義一個子段

      image.png

      為系統使用者建立個samba專用登入密碼

      image.png

      啟動服務以後就可以同時使用Linux系統和Windows系統訪問此共享檔案系統了,而且Linux系統也同樣支援掛載使用

      image.png

      image.png

      image.png