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、客戶端啟動RPC(portmap服務),向服務端的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
2、nfs-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 --追蹤日志

