Linux之NFS服務NFS工作過程 日志服務


NFS服務NFS工作過程   日志服務

NFS:Network File System(網絡文件系統),是一種基於TCP/IP傳輸的網絡文件系統協議,最早由SUN公司研發。目前使用的NFS 4.X版本

通過使用NFS協議,客戶機可以像訪問本地目錄一樣,訪問遠程服務器中的共享資源

 

 

 

 

1.當在NFS服務器設置好一個共享目錄/home/public后

2.其他的有權訪問NFS服務器的NFS客戶端就可以將這個目錄掛載到自己文件系統的某個掛載點,這個掛載點可以自己定義,

如上圖客戶端A與客戶端B掛載的目錄就不相同。並且掛載好后我們在本地能夠看到服務端/home/public的所有數據。

3.如果服務器端配置的客戶端只讀,那么客戶端就只能夠只讀。如果配置讀寫,客戶端就能夠進行讀寫。掛載后,NFS客戶端查看磁盤信息命令:df –h。

 

4. NFS本身的服務並沒有提供數據傳遞的協議,而是通過使用RPC(遠程過程調用 Remote Procedure Call)來實現遠程到本地的過程映射。當NFS啟動后,會隨機的使用一些端口,NFS就會向RPC注冊這些端口RPC記錄下這些端口,同時開啟111端口監聽請求,一旦有請求,就告訴客戶端:服務端所使用的端口,然后建立client端和server端端口的連接以進行數據的傳輸。因此,在啟動nfs之前,首先要確保rpc服務啟動

 

工作過程

 

 

 

 

1、首先服務器端啟動RPC服務,並開啟111端口

2、服務器端啟動NFS服務,並向RPC注冊端口信息

3、客戶端啟動RPCportmap服務),向服務端的RPC(portmap)服務請求服務端的NFS端口

4、服務端RPC(portmap)服務反饋NFS端口信息給客戶端

5、客戶端通過獲取的NFS端口來建立和服務端NFS連接並進行數據的傳輸。

 

2.NFS缺點 主要軟件包 rpcbind   nfs-utils  和端口守護進程nsfd

1、rpcbind:  RPC主程序負責NFS的端口映射工作,監聽在111端口,程序名為portmapper,可通過rpcinfo命令查看端口映射情況,如:rpcinfo -p localhost

2nfs-utils:  NFS主程序:就是提供 rpc.nfsd 及 rpc.mountd 這兩個 NFS daemons 與其他相關 documents 與說明文件、執行文件等的軟件, NFS 服務所需要的主要軟件。

3、進程說明

mountd:是nfs服務的認證服務的守護進程,client在收到返回的真正端口時,就會去連接mountd,認證取得令牌。

nfsd:nfs的守護進程,負責接收到用戶的調用請求后與內核發出請求並得到調用結果響應給用戶,工作在tcp和udp的2049端口。

Idmapd:解決不同主機用戶不存在情況下的文件歸屬的問題,擠壓限制(squash)超級用戶的文件系統中的權限  (沒有目錄的問題)

4、NFS的缺點:客戶端主機基於rpc遠程調用機制沒有用戶的認證機制,且文件的傳輸都是基於明文的方式,所以安全性很差。通常只在局域網內使用NFS基於IP來進行認證,需要輔助的守護進程nfsd來進行

1.架設NSF服務 服務端共享目錄

1.服務端安裝NFS 查看端口  先啟動 rpcbind 服務,  在啟動nfs-utils

NFS服務的程序包名稱為        nfs-utils  

nfs本身程序監聽端口為2049,服務啟動后服務模塊自動裝載到內核中。

yum -y install nfs-utils rpcbind            --安裝兩個軟件服務

systemctl start rpcbind  

systemctl start nfs                         --啟動服務先啟動rpc,

netstat -antulp | grep :111           --查看端口

netstat -antulp | grep :2049

 

 

 

 

 rpcinfo -p localhost--查看端口映射

 

 

 

 

 

 

##

NFS服務程序啟動的相關程序

/sbin/mount.nfs

/usr/sbin/rpc.idmapd

/usr/sbin/rpc.mountd

/usr/sbin/rpc.nfsd

 

2.NFS服務端的配置文件:/etc/exports 增加掛載目錄 和ip  可讀可寫的權限

vim /etc/exports

 

注意:①服務端的NFS配置文件的編寫,用空格區分開,主機和選項之間的括號不能有空格

②測試機必須要安裝rpcbind和nfs-utils程序,才能掛載服務端的文件系統

 

/etc/export內相關內容選項的含義:

①rw    指定的主機可讀、可寫

②ro    指定的主機僅可讀

③async  異步訪問 (這個選項可以改進性能,如果沒有完全關閉NFS守護進程重啟NFS服務器,可能會造成數據丟失,可不加)

④root_squash:擠壓root用戶權限(默認開啟的選項)

⑤all_squash:擠壓所有用戶權限

 

 

 mkdir -p /var/www/html    mkdir -p /var/www/bbs    --服務端創建共享目錄

 

 

 systemctl restart rpcbind       systemctl restart nfs     -重啟服務注意順序

 

 

 

 

3.客戶端安裝nfs-utils rpcbind  查看掛載nfs文件系統

yum -y install nfs-utils rpcbind

systemctl start rpcbind

systemctl start nfs

 

 

 

 

 

不用重啟NFS服務重新導入文件系統(建議在客戶端沒有在線掛載的情況使用)

exportfs -a

 

客戶端開機自動掛載nfs文件系統

vim /etc/fstab   

SERVER:/XXX/XXX/XXX  /mount_point    nfs    defaults,_netdev  0 0

 

4.客戶端查詢 是否可以掛載 服務端的共享目錄

命令格式    :   showmount -e SERVER_IP

showmount -e 192.168.10.10

 

 

 

 

5.客戶端永久掛載 服務端共享的文件系統 目錄

命令格式  mount -t nfs 192.168.10.10:/var/www/html  /mnt

  nfs掛載文件系統   nfs服務器ip   共享的命令  掛載在客戶端的位置

mount -t nfs 192.168.10.10:/var/www/html /mnt     --臨時掛載

df -h                                                 --查看是否成功

 

 

 

 

永久掛載

umount /mnt/                ---卸掉

df -h

cp /etc/fstab  /etc/fstab.bak     -復制備份掛載

 

 

 

 

vim /etc/fstab               --增加永久掛載  共享目錄

192.168.10.10:/var/www/html   /mnt  nfs  defaults,_netdev    0   0

 

 

 

 

或者去修改

 

 

 

 

 

 mount -a  自動掛載fstab的文件       df -h    -查看

 

 

 

 

6.測試服務端共享目錄里建立 文件  客戶端查看

服務端建立  共享的文件  index.html

 

服務端查看  說明成功了

 

 

 

 

 

7.服務端增加新共享目錄

服務端建立新的分享目錄

vim /etc/exports

cd /var/www/

mkdir kkk

exportfs -a

exportfs -ar

 

 

 

 

 

 

 

客戶端查看 服務端的共享目錄

showmount -e 192.168.10.10

 

 

 

 

 

2. 構建兩台web服務器,安裝httpd服務, 使客戶訪問web服務器的網站都一樣 , nfs相當於硬盤,存放兩台web共享的同一個網頁

1.第一台web服務器  安裝httpd 查看網頁根路徑  然后掛載nfs

yum -y install  httpd               ----安裝軟件

cd /var/www/html/                 ---查看網頁根路徑

mount -t nfs 192.168.10.10:/var/www/html /var/www/html/      --掛載NFS

cd /var/www/html/                 ---查看網頁根路徑

cat index.html                       --查看網頁內容

 

 

 

 

 

systemctl  start httpd       -- 啟動服務網頁查看

 

 

 

 

2.第二台WEB服務器  安裝httpd  修改網頁根路徑  掛載NFS

yum -y install  httpd                        --安裝

vim /etc/httpd/conf/httpd.conf             --修改默認的網頁路徑為kkk

DocumentRoot "/var/www/kkk"             ---網頁根路徑

<Directory "/var/www/kkk">                        --讀取網頁根路徑

 

vim /etc/httpd/conf/httpd.conf                 

 

 

 

 

cd /var/www/

mkdir kkk                         ---創建掛載目錄

mount -t nfs 192.168.10.10:/var/www/html /var/www/kkk/   掛載到網頁根路徑 

cd kkk

cat index.html                      --查看網頁

 

 

 

 

 

systemctl  start httpd       啟動服務  網頁查看

 

 

 

 

 

3搭建LAMP ,客戶端可查看NFS分享的目錄php(第一台web)

1.配置yum掛載光盤,安裝軟件包

 

 

 

 

 

 

 

2.開始安裝httpd服務,更改配置,

yum -y install httpd   

 

 

 

 

去創建測試網頁  

Vim   /var/www/html/index.html   

添加主機名字

vim /etc/httpd/conf/httpd.conf

 

 

 

 

3.安裝php以及mariadb數據庫,php結合數據庫的驅動模塊

yum -y install php php-mysql mariadb mariadb-server mysql-devel

 

 

 

 

4.安裝php所依賴的庫和相關工具包 更改yum為聯網模式(本來的模式)

yum -y install php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt

修改yum 源,回復原來的yum配置

 

 

 

 

 

 

其中,紅色的包安裝不了,

解決方法:將服務器使用橋接模式或者nat連接到公網,可以訪問公網。

更改電腦管理服務vmware  DHCP和NAT開啟 ,增加虛擬機網絡適配器,虛擬網絡開啟DHCP  然后再安裝這兩個

yum -y install epel-release

yum -y  install   php-imap php-mcrypt libmcrypt

 

 

 

 

 

5.驗證php的模塊 ls /etc/httpd/modules/libphp5.so

ls /etc/httpd/modules/libphp5.so

 

 

 

6.更改httpd主配置文件,讓索引頁支持php

vim /etc/httpd/conf/httpd.conf   --主配置文件  插入index.php

 

 

 

 

7.重啟服務,查看80端口 使其php模塊生效

systemctl restart httpd    

netstat -anutlp | grep :80

 

 

 

 

 

 

 

修改NFS服務端共享目錄權限,使其可寫

chmod o+w  /var/www/html/           -- 共享目錄加入可寫的權限

vim  /etcexport                        --修改客戶端ip的權限

 

 

 

 

 

 

 

9.編寫PHP測試頁,瀏覽器驗證php和httpd的連接效果

apache 網站根目錄下創建  vim /var/www/html/index.php

<?php

   phpinfo();

?>

 

 

 

 

瀏覽器驗證

http://192.168.10.20

 

 

 

 

10.將mariadb數據庫的主配置文件做修改

cat /usr/share/mysql/my-medium.cnf > /etc/my.cnf  --覆蓋

 

 

11.啟動mariadb數據庫服務

systemctl start mariadb.service    

netstat -antulp | grep :3306         3306是否監聽

ls /var/lib/mysql/mysql.sock

 

 

 

 

12.進入mysql數據庫的命令行界面去設置用戶密碼

mysql

 

 

 

 

13.修改數據庫的賬號和密碼(一定要在mysql的解釋器窗口)

[root@client html]# mysql                           命令行進入mysql

MariaDB [(none)]>delete from mysql.user where user='';     刪除空用戶

mysql.user表里面    user這個字段空  則刪除

MariaDB [(none)]>update mysql.user set password=password('123456') where user='root';    root用戶設置密碼   

update 更新    mysql.user  set password這個字段的值為123456

但是這個1234536需要 password來加密 是一個函數   where查詢或更新的條件

MariaDB [(none)]>grant all on *.* to 'root'@'%' identified by '123456';

設置權限   允許root用戶在任何地方連接數據庫  可不寫,但只能在本機登錄

 *.*所有庫的 ,所有表的    all 所有權限  都給'root'   '%'root用戶可以在任何地方登錄    identified所有主機終端  by '123456'; 以這個密碼登錄   '%相當於任意字符*

MariaDB [(none)]> flush privileges;           刷新權限

 

 

 

 

quit  退出

重新登錄

mysql -u root -p        指定用戶 密碼

show databases;        -查看數據庫有幾個

 

 

 

 

14.退出數據庫,並將數據庫進行 重新重啟

systemctl restart mariadb

systemctl restart httpd

15.編寫測試頁test_mysql.php 網頁驗證php和mariadb數據庫的連接   

編寫測試頁  vim /var/www/html/test_mysql.php

<?php

        $link=mysqli_connect('192.168.10.20','root','123456');

        if($link)

                echo "^_^ ok ^_^";

        else

                echo "T_T not ok T_T";

?>

 

測試    ip   192.168.10.40     root用戶        密碼123456

必須跟前面指定的要一樣

 

 

 

 

網頁測試

http://192.168.10.20/test_mysql.php

 

 

 

 

16.在網頁根路徑部署discuz論壇項目,驗證LAMP架構可用性   進行unzip解壓

解壓之后出現  upload目錄  ,將其重命名並移動到網頁根路徑

unzip Discuz_X3.1_SC_UTF8.zip    解壓

cp -rf  upload /var/www/html/discuz

 

 

 

 

 

 

 

17.為discuz項目提供后台數據庫,以便於項目數據的便捷存儲

進入mariadb數據命令行界面  

mysql -u root -p             --進入mysql

create database bbs;              --創建bbs數據庫

 

 

 

 

 

18.創建普通用戶來管理discuz對應的bbs數據的所有數據

grant all on bbs.* to 'runbbs'@'%' identified by '123456';

bbs .* 數據庫里面 所有的表  給一個'runbbs'  all所有的權限  '%使這個用戶可以從任何終端登錄   identified 主機    密碼是1234536    

flush privileges;                       刷新

quit

 

 

 

 

19.更改php主配置文件,使其支持短格式選項

可在網頁 php  那里找到php的主配置文件

 

 

 

 

vim /etc/php.ini

211 short_open_tag = On       --支持短格式

 

 

 

 

 

重啟httpd服務

systemctl restart httpd

20.開始部署安裝配置 discuz論壇項目

chmod -R 777  /var/www/html/discuz        設置權限

在瀏覽器輸入http://192.168.10.20/discuz/install/

 

 

 

 

 

 

 

選擇全新安裝,點擊下一步,

 

 

 

 

輸入數據庫ip地址:192.168.10.20,數據庫的名稱:bbs,數據庫用戶名:runbbs,管理員的密碼:123456

 

 

 

 

 

 

 

 

 

 

 

http://192.168.10.20/discuz/admin.php           登錄管理員

 

 

 

 

管理員頁面:http://192.168.10.20/discuz/admin.php?   輸入admin的密碼,登錄

 

可以去修改install目錄  更改名字 使客戶不能查看

cd /var/www/html/discuz/

 

 

 

 

 

4.第二台web服務端 配置安裝httpd  和php即可

1.安裝http修改配置文件/etc/httpd/conf/httpd.conf為php的網頁

yum -y install httpd        --安裝http

cd /var/www/           

ls

cd kkk                    --查看NFS共享目錄   (自己設置的)

ls

 

 

 

 

vim /etc/httpd/conf/httpd.conf            ---修改配置文件 增加php網頁

165 DirectoryIndex index.php index.html

 

 

 

 

 

2.安裝php  修改

yum -y install php php-mysql mariadb mariadb-server mysql-devel

 

yum -y install php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt

 

cd /etc/yum.repos.d/                --修改為原來的環境,聯網 增加net網卡

mv CentOS-Base.repo CentOS-Base.repo.kkkcd

mv CentOS-Base.repo.bak CentOS-Base.repo

 

yum -y install epel-release                   ---聯網下載

yum -y  install   php-imap php-mcrypt libmcrypt

3.網頁測試 是否為第一台共享的discuz

http://192.168.10.30/discuz/

 

 

 

 

 

5.Rsyslog服務  日志服務

日志:記錄服務器發生的事件,包括錯誤情況、用戶登錄的情況、服務器訪問的情況等。

1:歷史日志(記錄日志的時間、發生的事件詳情)

2:日志級別(Loglevel):事件關鍵性程度

 

文件記錄日志的格式(文本格式):

事件日期時間  主機  進程(pid)  事件內容

 

 

 

 

 

跟蹤日志

tail  -f  /var/log/messages       --跟蹤日志

tail  -100 /var/log/messages     --查看日志后一百條

 

 

 

 

1.常見日志文件說明  /var/log/

/var/log/message包括整體系統信息,包括系統啟動期間的日志。此外mail,cron,daemon,kern,auth等內容也記錄在此日志中。

/var/log/dmesg 包含一些內核緩沖信息,在系統啟動時,會在屏幕上顯示許多與硬件相關的信息。

/var/log/auth.log   包含系統授權信息,如用戶登錄和使用的權限機制等

/var/log/boot.log   包含系統啟動的日志

/var/log/kern.log   包含內核產生的日志,有助於在定制內核時解決問題

/var/log/lastlog記錄所有用戶最近信息,不是一個ASCII文件,需要使用lastlog命令查看內容

/var/log/btmp 記錄所有失敗登錄信息.使用last命令可以查看btmp文件

/var/log/cron 每當cron進行開始一個工作時,就會將現相關信息記錄在這個文件夾中

/var/log/secure   包含驗證和授權方面的信息sshd會將所有信息記錄在這/var/log/wtmp /var/log/utmp包含登錄信息。wtmp可以找出誰正在登錄進入系統,誰使用命令顯示這個文件或信息等

/var/log/sa 包含每日由sysstat軟件包收集的sar文件

/var/log/sssd     用戶守護進程安全服務

 

示例

 

 

 

 

/var/log/secure

 

 

 

 

who   查看登錄信息

 

 

 

 

 

2.)rsyslog(系統日志服務):兩個進程

為幫助很多應用程序記錄日志,不必每個應用程序自我實現單獨記錄日志,分為兩個進程:

syslogd:記錄用戶進程記錄日志

klogd:  記錄內核日志

3.)Rsyslog  日志分類

facility:某一類具有相同特性的由各個應用程序產生的日志數據流歸類到同一日志管道中,此管道為facility,可簡單理解為系統是日志的分類   

系統中有諸多facility,從功能或程序上對日志進行分類,

例如:

auth、authpriv、cron、daemon、kern、lpr、mail、mark、news、security、user、uucp、local0-local7、syslog

分類解釋

auth    認證系統,即詢問用戶名和口令

cron    系統執行定時任務時發出的信息

daemon  某些系統的守護程序的日志

kern    內核的syslog信息

lpr     打印機的syslog信息

mail    郵件系統的syslog信息

mark    定時發送消息的時標程序

news    新聞系統的syslog信息

user    本地用戶應用程序的syslog信息

uucp    uucp子系統的syslog信息

local0-7 本地類型的syslog信息,這些信息可以由用戶來定義

*       代表所有分類

4.)priority日志級別  指定級別格式    級別狀態

級別:

debug   info  notice    warn(warning)    err(error)   crit(critical)      alert     emerg

如:

facility.priority   /var/log/messages    

分類   級別          寫到的路徑     實點代表往上所以級別  

代表什么樣的類日志,什么樣的級別 ,寫的log路徑在哪

 

指定級別的格式:

*:所有級別            

auth.*

none:沒有級別         

mail.none

priority:此級別以及更高級別的日志信息

=priority:此級別

 

級別狀態   從下往上 越來越嚴重

emerg   緊急,處於Panic狀態。通常應廣播到所有用戶;

alert   告警,當前狀態必須立即進行糾正。例如,系統數據庫崩潰;

crit    關鍵狀態的警告。例如,硬件故障;

error    錯誤;

warn    警告;

notice  注意;非錯誤狀態的報告,但應特別處理;

info    通報信息;

debug   調試程序時的信息;

none   通常調試程序時用,指示帶有none級別的類型產生的信息無需送出。如*.debug;mail.none表示調試時除郵件信息外其它信息都送出。

 

5.)/etc/rsyslog.conf主配置文件詳解 日志配置規則 和rsyslog程序包

rsyslog程序包即為rsyslog   

 

rsyslog的主配置文件  /etc/rsyslog.conf

日志主程序     /usr/sbin/rsyslogd

6服務啟停腳本:/etc/init.d/rsyslog

主配置文件詳解:

1、#### MODULES ####  

指定裝載的模塊

2、$ModLoad imuxsock

支持本地日志記錄的模塊

3、$ModLoad imjournal

支持本地系統訪問產生日志的功能

4、$ModLoad imklog

支持本地內核產生日志的功能

5、# Provides UDP syslog reception

#$ModLoad imudp

#$UDPServerRun 514

 

# Provides TCP syslog reception

#$ModLoad imtcp

#$InputTCPServerRun 514

基於UDP和TCP方式進行遠程收集日志,以及解開對應的端口

日志配置的規則

*.info;mail.none;authpriv.none;cron.none             /var/log/messages

日志所有分類的 info以上級別   分號 除了mail..不記錄.   其余寫到這個目錄

none  不記錄

authpriv.*      驗證授權                               /var/log/secure  

authpriv的所有級別,記錄在的位置

 

mail.*    mail這個分類的所有級別寫到  -/var/log/maillog  

減號    -號代表異步寫入 

cron.*     cron這個分類的所有級別寫到  /var/log/cron

 

*.emerg       所有分類的 emerg以上的級別     發給所有的用戶    :omusrmsg:*  

后面的*代表當前登錄系統的所有用戶

 

uucp,news.crit   表示uucp和news分類crit級別 寫到  /var/log/spooler

  逗號表示並列

local7.*      local7分類的所有級別                  /var/log/boot.log  

local7被boot引導記錄日志占用,其他local0-6可以自定義boot.log是啟動的日志信息

 

 

 

 

6.sshd服務進行  單獨記錄日志

1.配置sshd主配置文件,使其單獨記錄日志

vim /etc/ssh/sshd_config     

 

 

 

 

systemctl restart sshd

重載sshd服務即可對sshd服務生效

 

2.rsyslog主配置文件進行配置單獨為sshd服務記錄日志,並重啟rsyslog服務,生效

vim /etc/rsyslog.conf     

 

 

 

 

systemctl restart rsyslog.service         重啟服務

 

3.測試

ssh root@192.168.10.30  在本機登錄一下

exit

cd /var/log

ls     查找sshd.log

 

 

 

 

 

 

 

 

 

 

 

7.構建單獨的rsyslog服務器(扮演成服務器)注意:需要關閉防火牆

實驗目的:將node2上的日志傳輸到node1上

1.在服務器端node1配置

1)編輯配置文件vim /etc/rsyslog.conf

注:日志的傳輸方式有三種:TCP、UDP、RELP

UDP傳輸, 但信息有損耗

TCP明文的傳輸,只在特定情況下丟失信息,並被廣泛使用

RELP傳輸,不會丟失信息,但只在rsyslogd 3.15.0及以上版本中可用

2)啟用三種傳輸方式

1.啟用UDP傳輸方式:取消15、16行的注釋

 

 

 

 

systemctl restart rsyslog         重啟服務

或者.啟用TCP傳輸方式:取消19、20行的注釋

3)開啟傳輸端口監聽

vim /etc/sysconfig/rsyslog

SYSLOGD_OPTIONS="-r514 -c2"         加上或者修改其中內容

注:-r:指定監聽端口

-c2:使用兼容模式

 

 

 

 

4)重啟服務:systemctl restart rsyslog

2.客戶端配置

1)指定日志傳輸方式 vim /etc/rsyslog.conf

在最后添加     使用哪種方式進行日志傳輸

UDP傳輸*.* @192.168.10.30:514 所有分類的所有級別@日志服務端ip和端口號

 

或者  tcp兩個@@  

TCP傳輸*.* @@192.168.10.30:514 所有分類的所有級別@@日志服務端ip:端口號                        30為服務端的ip   端口為514

 

 

 

 

2)客戶端重啟服務:systemctl restart rsyslog

測試

在客戶端生成一條日志,看服務器端是否接受到這個日志

在客戶端:logger -t kern -p err "hello,wahaha"  

 

 

 

 

在服務器端:tail -f /var/log/messages           --追蹤日志

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM