Linux操作系統應用

Linux操作系統應用

  • 一、用戶與用戶組管理
    • 1.1 管理用戶
      • 1.1.1 與用戶賬號相關的文件
      • 1.1.2 用戶管理命令
      • 1.1.3 任務實施
    • 1.2 管理用戶組
      • 1.2.1 用戶組
      • 1.2.2 用戶組管理命令
    • 1.3 查看用戶和用戶組狀態
      • 1.3.1 用戶查看命令 id、who、whoami
      • 1.3.2 用戶身份切換命令 su、sudo
  • 二、文件管理
    • 2.1 管理文件
      • 2.1.1 目錄操作命令
        • mkdir(-p:多級目錄)
        • rmdir(-p:遞歸刪除空目錄)
        • cd、pwd、ls
      • 2.1.2 文件操作命令
        • touch
        • fiel:查看文件類型
        • cp(-r:遞歸復制、-f:強制覆蓋)、mv(移動)、rm
        • find、which:查找命令的絕對路徑
        • ln:為文件創建鏈接(默認軟鏈接-s:硬鏈接)不能對目錄創建
      • 2.1.3 文件內容操作命令
        • cat
        • more/less
        • head/tail
        • wc
        • grep
    • 2.2 壓縮文件
      • gzip(-d:解壓縮,-r:遞歸,-v:顯示過程)
      • tar(-c:創.tar,-x:解.tar,-f:目標文件名,-v:顯示過程,-z:gzip,-j:bzip2)
    • 2.3 設置文件權限屬性
      • chmod 更改文件訪問權限(u、g、o — r、w、x)
      • chown 更改文件所屬者和所屬組
      • chgrp 更改文件所屬組
  • 三、磁盤與文件系統管理
    • 3.1 創建磁盤分區
      • 1. 分區管理(fdisk)
      • 2. 格式化(mkfs)
      • 3. 掛載(mount)
      • df:查看文件系統掛載狀態和磁盤使用情況(-h:易讀方式查看)
    • 3.2 設置磁盤配額 quota
    • 3.3 管理邏輯卷
  • 四、軟件包與進程管理
    • 4.1 管理軟件包
      • rpm 安裝
      • yum 安裝(先搭建倉庫)
      • 源碼包安裝
    • 4.2 管理進程(進程號:PID)
  • 五、服務管理與任務制定
    • 5.1 管理 Linux 服務
    • 5.2 管理計劃任務
      • 一次性計劃任務 at
      • 周期性計劃任務 crontab
  • 六、shell簡易編程
    • 6.1 重定向
    • 6.2 shell 命令與 vim 編輯器
  • 七、網絡基本配置
    • 7.1 網絡配置
      • 顯示網卡的配置信息 ifconfig
      • 配置網卡 nmcli
      • 修改 IP nmcli connection modify 網卡(method、IP、gateway、dns、connection.autoconnect)
      • 修改網卡
    • 7.2 網絡調試
      • 測試網絡連通性 ping
      • 顯示網絡相關信息 netstat
      • 顯示數據包到達主機所經過的路由信息 tracepath
      • 顯示域名和 IP 地址的對應關系 nslookup
  • 八、遠程連接 OenpSSH
    • 8.1 配置與啟動OpenSSH
    • 8.2 遠程控制服務
      • 遠程連接主機 ssh
      • 遠程傳輸命令 scp
  • 九、網絡服務器
    • 9.1 web服務器
    • 9.2 Apache
    • 9.3 Nginx
  • 十、
  • 十一、NFS
    • 練習1
      • 1.創建兩臺主機,配置倉庫,安裝基本軟件,安裝 NFS 軟件
      • 2. 放行防火墻,關閉SELinux,啟動服務(查看服務狀態)
      • 3. 配置 NFS ,服務端創建一個需要共享的文件,這個文件的內容會被共享到目的客戶端
      • 4. 重啟服務
      • 5. 然后暴露共享服務,服務器查看nfs共享狀態
      • 6. 客戶端創建掛載目錄,將創建的目錄掛載到服務端的共享目錄
      • 7. 功能測試
        • 測試服務端讀寫
        • 測試客戶端讀寫
    • 練習2
      • 1. 環境初始化
        • 配置倉庫、掛載
        • 基本軟件安裝
        • nginx 安裝
      • 2. 放行防火墻,關閉SELinux,啟動服務
      • 3. 配置 Web 服務,放行80端口
      • 4. 搭建 nginx 服務
      • 5. 瀏覽

一、用戶與用戶組管理

1.1 管理用戶

用戶類型UID描述
超級用戶0root用戶、系統管理員或根用戶
系統用戶1~999方便系統管理
普通用戶1000~60 000又超級用戶創建,用于用戶的日常工作

1.1.1 與用戶賬號相關的文件

/etc/passwd:系統識別用戶的文件,保存用戶賬號的基本信息

username:password:UID:GID:comment:home directory:shell
字段含義
username用戶名,必須唯一
password用戶密碼,x填充,真正密碼以MD5加密方式保存在shadow文件中
UID用戶ID,如果多個用戶名對應一個UID,系統內部回將它們視為同一個用戶
GID組ID,區分不同組
comment備注信息
home directory用戶主目錄
shell命令解釋器,默認bash

/etc/shadow

1.1.2 用戶管理命令

  • 添加用戶賬號 useradd

    • -d:指定用戶主目錄,默認為 /home/用戶名
    • -g:指定用戶所屬的基本組或 GID,-G:指定用戶所屬的附加組,各組之間逗號相隔,-u:指定用戶的 UID,且必須唯一
    • -e:指定用戶賬號的失效時間
    • -s:指定用戶的登錄 shell,默認為 /bin/bash
  • 管理用戶密碼 passwd

    • -d:刪除用戶密碼,將其設置為空,使之無需密碼即可登錄
    • -l:鎖定用戶賬號,可暫時禁止該用戶登錄系統,-u:解鎖用戶賬號
    • -S:查詢用戶賬號的狀態“(是否鎖定)
  • 修改用戶賬號 usermod

    • -l:更改用戶名,該賬號的主目錄、UID 及 GID 保持不變,
    • -L:鎖定用戶賬號,-U:解鎖
  • 刪除用戶賬號 userdel

    • -userdel -r 用戶名

UUID:

  • 創建一個新的 UUID 值 uuidgen
    在這里插入圖片描述

  • 識別磁盤設備和其他硬件設備,并顯示它們的 UUID 和元數據 blkid

    • 修改成新的:
      • blkid /dev/sda -o set_uuid=”8CCB6C99-6C68-475C-9056-77460848426F”
      • tune2fs /dev/sda -U"8CCB6C99-6C68-475C-9056-77460848426F"

1.1.3 任務實施

任務說明:
小李為研發部門和運維部門的4位成員分別添加個人賬號,并設置初始密碼均為kd*123

用戶名:Lina,UID:1005
用戶名:xuxi,不允許登錄
用戶名:suxi
用戶名:junji

[root@host ~]# useradd -u 1005 Lina #-u:指定用戶的UID,且必須唯一
[root@host ~]# passwd Lina #設置初始密碼
Changing password for user Lina.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.[root@host ~]# useradd -s /sbin/nologin xuxi #不允許用戶登錄[root@host ~]# useradd suxi
[root@host ~]# passwd suxi
Changing password for user suxi.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.[root@host ~]# useradd junji
[root@host ~]# passwd junji
Changing password for user junji.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.[root@host ~]# cat /etc/passwd
Lina:x:1005:1005::/home/Lina:/bin/bash
xuxi:x:1006:1006::/home/xuxi:/sbin/nologin
suxi:x:1007:1007::/home/suxi:/bin/bash
junji:x:1008:1008::/home/junji:/bin/bash[root@host ~]# cat /etc/shadow
Lina:$6$mknKGRqdHSh.DGdR$svPbl0F0ToHsIu3z/uhAay7CQ1xSazSgWOFYqkXGmDGbpK9jknIavkh0qI0hidcsAk8QGdXq7gA6585zZA9RL.:20146:0:99999:7:::
xuxi:!!:20146:0:99999:7:::
suxi:$6$kyHAU/4Cj70JnMVA$ShPGjE7OZYNUa.jDzwjPvQ/M1TC8AlGLXoFGkySqk.QTLu/iPh1Ewd1eclFXHsqCxwPnxjVZ666ozqGVCwF8O0:20146:0:99999:7:::
junji:$6$7TYi0jPnE5queNh/$UvfTDQtH28ljuOf5xyXgkK55oJlv/688zFECmGUirdosGtkJ8zNASEKGu3mKw0otw/LO3f/PVuLy7QU1utXeV1:20146:0:99999:7:::

1.2 管理用戶組

1.2.1 用戶組

/etc/group:保存著用戶名、用戶組名等基本信息

groupname:password:GID:user_list
字段含義
groupname用戶組名
password用戶組密碼,x填充,真正密碼以MD5加密方式保存在gshadow文件中
GID組 ID
user_list用戶組成員列表

/etc/gshadow

groupname:encypted password:admin:user_list
字段含義
groupname用戶組名
encypted password加密后的用戶組密碼
admin用戶組管理員
user_list用戶組成員列表

1.2.2 用戶組管理命令

  • 添加用戶組賬號 groupadd
    • groupadd -g GID 用戶組名,如果不指定 GID ,則由系統自動分配
  • 管理用戶組密碼 gpasswd [選項] [用戶名] 用戶組名
    • -a:為用戶組添加組成員
    • -d:從用戶組移除組成員
  • 修改用戶組屬性 groupmod
    • -n:更改用戶組名,GID 保持不變,
    • -g 新 GID:修改 GID
  • 刪除用戶組賬號 groupdel
    • groupdel 用戶組名

1.3 查看用戶和用戶組狀態

1.3.1 用戶查看命令 id、who、whoami

UUID:

  • 創建一個新的 UUID 值 uuidgen
    在這里插入圖片描述

  • 識別磁盤設備和其他硬件設備,并顯示它們的 UUID 和元數據 blkid

    • 修改成新的:
      • blkid /dev/sda -o set_uuid=”8CCB6C99-6C68-475C-9056-77460848426F”
      • tune2fs /dev/sda -U"8CCB6C99-6C68-475C-9056-77460848426F"

1.3.2 用戶身份切換命令 su、sudo

su 命令格式中,”-“表示完全切換到新的用戶,即環境變量信息也變為新用戶的相關信息

普通用戶可使用 sudo 命令臨時或的root用戶的權限執行操作(前提:root 用戶必須使用 visudo 命令打開并編輯 sudoers 配置文件/etc/sudoers

  • sudo常用選項:
    • -b:在后臺執行指定命令
    • -u 用戶名/UID:以指定的用戶身份執行命令
    • -l:顯示出執行 sudo 命令的使用者的權限

二、文件管理

在這里插入圖片描述

2.1 管理文件

2.1.1 目錄操作命令

mkdir(-p:多級目錄)

多個同級目錄:

mkidr {a,b,c} 或 mkdir a b c
rmdir(-p:遞歸刪除空目錄)

執行刪除命令時,需要對父目錄有寫權限

cd、pwd、ls

2.1.2 文件操作命令

  • -:普通文件
  • d:目錄文件
  • l:鏈接文件
  • c、b:設備文件
  • p:管道文件
touch
fiel:查看文件類型
cp(-r:遞歸復制、-f:強制覆蓋)、mv(移動)、rm
# 把本主機的/etc/yum.repos.d/dnf.repo,復制到主機192.168.72.136中的/etc/yum.repos.d/下
scp /etc/yum.repos.d/dnf.repo root@192.168.72.136:/etc/yum.repos.d/
find、which:查找命令的絕對路徑
ln:為文件創建鏈接(默認軟鏈接-s:硬鏈接)不能對目錄創建

默認軟鏈接-符號鏈接->快捷方式,-s:硬鏈接->與原始文件互相影響,不能對目錄創建

2.1.3 文件內容操作命令

cat
more/less
head/tail
wc
grep

2.2 壓縮文件

gzip(-d:解壓縮,-r:遞歸,-v:顯示過程)

tar(-c:創.tar,-x:解.tar,-f:目標文件名,-v:顯示過程,-z:gzip,-j:bzip2)

2.3 設置文件權限屬性

chmod 更改文件訪問權限(u、g、o — r、w、x)

rwx
420

chown 更改文件所屬者和所屬組

chgrp 更改文件所屬組

三、磁盤與文件系統管理

3.1 創建磁盤分區

1. 分區管理(fdisk)

請添加圖片描述

2. 格式化(mkfs)

磁盤分區后不能直接使用,須創建分區的文件系統(格式化 mkfs)才能使用

mkfs | mkfs.xfs | mkfs.ext4 [選項] 分區的設備名

eg.

mkfs.ext4 /dev/sda3 /mkfs -t ext4 /dev/sda3
[root@bogon ~]# mkfs -t xfs /dev/sda2
...

3. 掛載(mount)

磁盤創建文件系統后,須將該文件系統掛載(mount)到某個目錄(掛載點,必須是空目錄)才能使用

命令行模式:手動掛載
系統啟動時自動掛載(/etc/fstab) 設備文件 掛載點 文件系統類型 權限選項 是否備份 是否自檢

#自動掛載配置:設備文件 掛載點 文件系統類型 權限選項 是否備份 是否自檢

df:查看文件系統掛載狀態和磁盤使用情況(-h:易讀方式查看)

3.2 設置磁盤配額 quota

磁盤配額信息:wfs_quota (-x、-c)
指定用戶或用戶組磁盤配額信息:edquota
開啟或關閉:quotaon、quotaoff
查看指定用戶或用戶組的磁盤配額信:quota
查看文件系統的磁盤配額信:requota

3.3 管理邏輯卷

請添加圖片描述
創建邏輯卷流程:

  1. 創建物理卷
  2. 創建卷組
  3. 創建邏輯卷
  4. 創建文件系統
  5. 掛載文件系統

擴展邏輯卷流程:

  1. 卸載文件系統
  2. 擴展邏輯卷容量
  3. 擴展文件系統

縮小邏輯卷流程:

  1. 卸載邏輯卷
  2. 檢查文件系統的完整性
  3. 縮小文件系統
  4. 縮小邏輯卷
  5. 重新掛載文件系統

四、軟件包與進程管理

4.1 管理軟件包

rpm 安裝

  • 安裝 rpm [選項] 軟件名
    • -U:升級(若沒有該安裝包則安裝)
    • -F:升級(若沒有該安裝包則取消安裝)
  • 卸載 rpm -e 軟件名(-evh:顯示卸載過程))
  • 查詢 rpm [選項] 軟件名
    • -qa:查詢已安裝
    • -qf:查詢文件或目錄屬于哪個RPM軟件包的格式
    • -qp:查詢未安裝的軟件包
    • -ql:查詢文件安裝路徑

yum 安裝(先搭建倉庫)

[BaseOS] --- YUM軟件倉庫名稱,具有唯一性
name= 	YUM軟件倉庫的描述,用于說明軟件倉庫的用處
baseurl= 	YUM軟件倉庫的位址 FTP/HTTP地址/本地地址
enabled= 	是否啟動該YUM軟件倉庫,1:啟動,0:禁用
gpgcheck= 	是否校驗RPM文件內的數字簽名
[AppStream]
name= 	YUM軟件倉庫的描述,用于說明軟件倉庫的用處
baseurl= 	YUM軟件倉庫的位址 FTP/HTTP地址/本地地址
enabled= 	是否啟動該YUM軟件倉庫,1:啟動,0:禁用
gpgcheck= 	是否校驗RPM文件內的數字簽名

源碼包安裝

  1. 下載及解壓縮源碼包文件
  2. 配置
  3. 編譯
  4. 安裝

4.2 管理進程(進程號:PID)

優先級:-20~19(取值越小,優先級越高)

請添加圖片描述

五、服務管理與任務制定

5.1 管理 Linux 服務

systemctl is-enable #查看服務是否為開機自啟動

5.2 管理計劃任務

一次性計劃任務 at

at -l = atq # 顯示待執行的任務
at -d = atrm # 刪除任務
ctrl + d # 提交任務

周期性計劃任務 crontab

在配置時,所有命令使用 絕對路徑

  • -e:創建并編輯
  • -l:查看當前任務
  • -r:刪除某條任務
  • -u:指定用戶名稱(root用戶下)

配置格式:

#分鐘字段必須有數值,日期與星期不可同時使用
分鐘	小時	日期	月份	星期	命令
0~59	0~23	1~31	1~12	0~7(0、7都為周天)0	     17		 *		 *		1-5			#周一到周五每天17:00
30		 8	   	 *		 *		1,3,5		#每周一、三、五的8:30
0	  	 8-18/2	 * 		 * 		*			#8:00到18:00之間每隔2小時
0		 *		 */3	 * 	  	*			#每隔3天
  • 周期性計劃任務配置中的符號:
    • *:該范圍的任意時間
    • ,:間隔的多個不連續時間點
    • -:一段連續的時間范圍
    • /:執行任務的間隔時間

六、shell簡易編程

6.1 重定向

符號命令格式作用
<命令 < 文件將文件作為命令標準輸入
< <命令 < < 分界符從標準輸入中讀入,知道遇到分界符才停止
>命令 > 文件標準輸出重定向到一個文件中(清空原有文件的數據)
>>命令 >> 文件將標準輸出重定向到一個文件中(追加到原有內容的后面)
:2>命令 2> 文件錯誤輸出重定向到一個文件中(清空原有文件的數據)
2>>命令 2>>文件將錯誤輸出重定向到一個文件中(追加到原有內容的后面)

需求:在 /etc/yum.repos.d/ 中通過重定向配置一個本地倉庫,倉庫名為 ymrepo.repo,然后將倉庫中的內容反序重定向到 /root/myfile 文件中。

# 利用重定向將內容寫到文件中
[root@host ~]# cat > /etc/yum.repos.d/ymrepo.repo << EFO
> [OS]
> name=BaseOS
> baseurl=/mnt/BaseOS
> gpgcheck=0
> enable=1
> [AppStream]
> name=AppStream
> baseurl=/mnt/AppStream
> gpgcheck=0
> enable=1
> EFO
[root@host ~]# cat /etc/yum.repos.d/ymrepo.repo 
[OS]
name=BaseOS
baseurl=/mnt/BaseOS
gpgcheck=0
enable=1
[AppStream]
name=AppStream
baseurl=/mnt/AppStream
gpgcheck=0
enable=1
[root@host ~]# tac /etc/yum.repos.d/ymrepo.repo >> /root/myfile
[root@host ~]# cat /root/myfile 
enable=1
gpgcheck=0
baseurl=/mnt/AppStream
name=AppStream
[AppStream]
enable=1
gpgcheck=0
baseurl=/mnt/BaseOS
name=BaseOS
[OS]
[root@server ~]# cat /etc/yum.repos.d/dnf.repo | sort -r
name=BaseOS
name=AppStream
gpgcheck=0
gpgcheck=0
enabled=1
baseurl=/mnt/BaseOS
baseurl=/mnt/AppStream
[BaseOS]
[AppStream]
[root@server ~]# cat /etc/yum.repos.d/dnf.repo -n | sort -r9	gpgcheck=08	baseurl=/mnt/AppStream7	name=AppStream6	[AppStream]5	enabled=14	gpgcheck=03	baseurl=/mnt/BaseOS2	name=BaseOS1	[BaseOS]
[root@server ~]# cat /etc/yum.repos.d/dnf.repo -n | sort -rn9	gpgcheck=08	baseurl=/mnt/AppStream7	name=AppStream6	[AppStream]5	enabled=14	gpgcheck=03	baseurl=/mnt/BaseOS2	name=BaseOS1	[BaseOS]

管道 pip “ | ” :連接多個命令
echo:在終端輸出 字符串/變量 提取后的值

6.2 shell 命令與 vim 編輯器

vim編輯:
請添加圖片描述

七、網絡基本配置

在這里插入圖片描述

7.1 網絡配置

socket相關知識: 什么是Socket?

顯示網卡的配置信息 ifconfig

配置網卡 nmcli

修改 IP nmcli connection modify 網卡(method、IP、gateway、dns、connection.autoconnect)

修改 IP(ipv4.addresses ip/掩碼,ipv4.dns,ipv4.gateway,authentic )

TCP/UDP:四層協議(傳輸層),都在 53 端口
TCP協議 提供可靠的連接服務,連接是通過 三次握手 進行初始化的。TCP是全雙工模式,所以需要 四次揮手 關閉連接. TCP使用三次握手和四次揮手來建立和終止連接(強連接-安全),以確保可靠的連接建立和終止,在網絡通信中保護數據的完整性和可靠性.
UDP協議 僅保證發送信息,不保證接受(優點:快,缺點:容易丟失數據,安全系數不高)

nmcli connection modify 網卡(ensxxx) ipv4.method manual ipv4.addresses ip/掩碼 ipv4.dns,ipv4.gateway,connection.autoconnect yes
[root@client ~]# nmcli connection modify ens33 ipv4.addresses 192.168.88.7/24 ipv4.dns 192.168.88.2 ipv4.gateway 192.168.88.2 ipv4.method manual connection.autoconnect yes

修改網卡

nmcli c modify ens160 ipv4.dns 192.168.88.136
或者
vi /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.88.144
  • 查看 dns
nmcli d show | grep DNS

7.2 網絡調試

測試網絡連通性 ping

執行 ping 命令時,系統會使用 ICMP(Internet控制報文協議)向遠程主機發出要求回應的信息

顯示網絡相關信息 netstat

顯示數據包到達主機所經過的路由信息 tracepath

顯示域名和 IP 地址的對應關系 nslookup

八、遠程連接 OenpSSH

8.1 配置與啟動OpenSSH

OpenSSH 基于 SSH(secure shell)協議開發的免費開源軟件,可在網絡上由一臺計算機遠程連接另外一臺計算機

SSH 是建立在 應用層 基礎上的安全協議,sshd 是基于 SSH 協議 開發的 遠程管理服務,提供兩種安全驗證方法:

  • 基于密碼的驗證
  • 基于密鑰的驗證

配置文件:/etc/ssh/sshd_config

[root@host ~]# cat /etc/ssh/sshd_config
#	$OpenBSD: sshd_config,v 1.104 2021/07/02 05:11:21 dtucker Exp $# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.# This sshd was compiled with PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.# To modify the system-wide sshd configuration, create a  *.conf  file under
#  /etc/ssh/sshd_config.d/  which will be automatically included below
Include /etc/ssh/sshd_config.d/*.conf# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22 sshd服務端口,默認為22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
....

8.2 遠程控制服務

遠程連接主機 ssh

首次連接主機時,需要輸入yes(Are you sure you want to continue connecting)

ssh [選項] [遠程用戶名@]遠程IP地址 或 域名
  • -l:指定遠程登錄用戶名
  • -v:追蹤調試建立的 SSH 連接情況
  • -p:指定遠程主機的 sshd 端口
  • -b:指定源 IP 地址
  • -C:所有通過 SSH 發送或接收的數據將會被壓縮,并且都是加密的
  • -F:指定配置文件

遠程傳輸命令 scp

使用 scp 命令將文件從本地復制到遠程主機

scp [選項] 本地文件 [遠程主機名@]遠程IP地址 或 域名:遠程目錄

使用 scp 命令將遠程主機的文件下載到本地

scp [選項] [遠程主機名@]遠程IP地址 或 域名:遠程文件 本地文件
  • 選項:
    • -r:遞歸復制整個目錄
    • -v:顯示詳細的連接進度
    • -p:指定遠程主機的 sshd 端口
# 把本主機的/etc/yum.repos.d/dnf.repo,復制到主機192.168.72.136中的/etc/yum.repos.d/下
scp /etc/yum.repos.d/dnf.repo root@192.168.72.136:/etc/yum.repos.d/
[root@server ~]# scp /etc/yum.repos.d/dnf.repo root@192.168.88.142:/etc/yum.repos.d/
The authenticity of host '192.168.88.142 (192.168.88.142)' can't be established.
ED25519 key fingerprint is SHA256:I3/lsrnTEnXOE3LFvTLRUXAJ+AhSVrIEWtqTnleRz9w.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? y
Please type 'yes', 'no' or the fingerprint: yes
Warning: Permanently added '192.168.88.142' (ED25519) to the list of known hosts.
root@192.168.88.142's password: 
dnf.repo         
[root@client ~]# ll /etc/yum.repos.d/
total 4
-rw-r--r--. 1 root root 358 Mar 14 13:32 redhat.repo
[root@client ~]# ll /etc/yum.repos.d/
total 8
-rw-r--r--. 1 root root 113 Mar 14 14:10 dnf.repo
-rw-r--r--. 1 root root 358 Mar 14 13:32 redhat.repo

九、網絡服務器

9.1 web服務器

9.2 Apache

9.3 Nginx

Nginx 是高性能的 Web 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。

在高連接并發的情況下,Nginx是Apache服務器不錯的替代品

十、

十一、NFS

在Linux系統中,有一些文件共享協議用于跨網絡共享存儲和文件,NFS(Network File System,網絡文件系統),它允許網絡中的計算機(不同的計算機、不同的操作系統)之間通過 TCP/IP 網絡共享資源

在 NFS 的應用中,本地 NFS 的客戶端應用 可以 透明地讀寫 位于 遠端 NFS 服務器上的文件 ,就像訪問本地文件一樣

  1. 創建兩臺主機,配置倉庫,安裝基本軟件,安裝 NFS 軟件
  2. 啟動服務(查看服務狀態),放行防火墻,關閉SELinux,設置開機自啟動
  3. 配置 NFS ,服務端創建一個需要共享的文件,這個文件的內容會被共享到目的客戶端
    • 服務端:編輯/etc/exports文件,配置文件和目的網段(IP、主機),設置權限
  4. 重啟服務
  5. 然后暴露共享服務,服務器查看nfs共享狀態
  6. 客戶端創建掛載目錄,將創建的目錄掛載到服務端的共享目錄

練習1

要設置NFS共享,需要至少兩臺 Linux/Unix 機器。下面使用兩臺服務器來演示 NFS 安裝、配置及使用。

角色IP主機名系統
服務器192.168.88.136nfs-serverRHEL 9
客戶端192.168.88.142nfs-clientRHEL 9

1.創建兩臺主機,配置倉庫,安裝基本軟件,安裝 NFS 軟件

  • client:
#配置倉庫
[root@client yum.repos.d]# vi dnf.repo
[root@client yum.repos.d]# cat dnf.repo 
[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=/mnt/AppStream
gpgcheck=0
[root@client yum.repos.d]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.
[root@client yum.repos.d]# ls /mnt
AppStream  EULA              images      RPM-GPG-KEY-redhat-beta
BaseOS     extra_files.json  isolinux    RPM-GPG-KEY-redhat-release
EFI        GPL               media.repo# 把本主機(客戶端)的/etc/yum.repos.d/dnf.repo,復制到主機(服務端)192.168.72.136中的/etc/yum.repos.d/下
[root@client yum.repos.d]# scp /etc/yum.repos.d/dnf.repo root@192.168.88.136:/etc/yum.repos.d/
The authenticity of host '192.168.88.136 (192.168.88.136)' can't be established.
ED25519 key fingerprint is SHA256:I3/lsrnTEnXOE3LFvTLRUXAJ+AhSVrIEWtqTnleRz9w.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? y
Please type 'yes', 'no' or the fingerprint: yes
Warning: Permanently added '192.168.88.136' (ED25519) to the list of known hosts.
root@192.168.88.136's password: 
dnf.repo                                                100%  114   215.5KB/s   00:00                  
  • server:
[root@server yum.repos.d]# ls
dnf.repo  EFo  EFO  EFP  redhat.repo
[root@server yum.repos.d]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.
  • 安裝基本軟件(需要先配置倉庫和掛載后才能成功執行此命令):
# 安裝基本軟件,bash-completion 用于tab補全
[root@client yum.repos.d]# dnf install net-tools wget curl bash-completion vim -y
[root@client yum.repos.d]# dnf install nfs-utils -y
#設置主機名命令:
hostnamectl hostname nfs-server#設置IP命令:
nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.88.136/24 ipv4.dns 223.5.5.5 ipv4.gateway 192.168.88.2 connection.autoconnect yes
# IP:固定前綴nmcli connection modify 網卡 
1.ipv4.method:manual
2.ipv4.addresses(注意寫子網掩碼)
3.ipv4.dns
4.ipv4.gateway 
5.connection.autoconnect:yes
nmcli c up ens160 #啟動
需要重新連接才能改變IP#開機自啟動

2. 放行防火墻,關閉SELinux,啟動服務(查看服務狀態)

  • 同時執行兩個會話的命令
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
# 啟動服務
systemctl enable --now nfs-server
或者
systemctl start nfs-server# 放行防火墻
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload
firewall-cmd --list-all(驗證是否放行成功)
# 永久關閉
[root@server ~]# sed -i "s/^SELINUX=enforcing$/SELINUX=permissive/g" /etc/selinux/config# 關閉SELinux
setenforce 0
  • 查看網絡相關命令:
[root@server ~]# netstat -lntup | grep 2049tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
[root@server ~]# netstat -lntup | grep 111
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
udp        0      0 0.0.0.0:111             0.0.0.0:*                           1/systemd           
udp6       0      0 :::111                  :::*                                1/systemd           
[root@server ~]# ss -lntup | grep 111 #(ss=netstat)
udp   UNCONN 0      0            0.0.0.0:111        0.0.0.0:*    users:(("rpcbind",pid=13602,fd=5),("systemd",pid=1,fd=88))
udp   UNCONN 0      0               [::]:111           [::]:*    users:(("rpcbind",pid=13602,fd=7),("systemd",pid=1,fd=90))
tcp   LISTEN 0      4096         0.0.0.0:111        0.0.0.0:*    users:(("rpcbind",pid=13602,fd=4),("systemd",pid=1,fd=87))
tcp   LISTEN 0      4096            [::]:111           [::]:*    users:(("rpcbind",pid=13602,fd=6),("systemd",pid=1,fd=89))
[root@server ~]# ps -ef | grep nfs
root       13607       1  0 13:01 ?        00:00:00 /usr/sbin/nfsdcld
root       13621       2  0 13:01 ?        00:00:00 [nfsd]
root       13622       2  0 13:01 ?        00:00:00 [nfsd]
root       13623       2  0 13:01 ?        00:00:00 [nfsd]
root       13624       2  0 13:01 ?        00:00:00 [nfsd]
root       13625       2  0 13:01 ?        00:00:00 [nfsd]
root       13626       2  0 13:01 ?        00:00:00 [nfsd]
root       13627       2  0 13:01 ?        00:00:00 [nfsd]
root       13628       2  0 13:01 ?        00:00:00 [nfsd]
  • 查看服務狀態:
[root@client ~]# systemctl status nfs-server
● nfs-server.service - NFS server and >Loaded: loaded (/usr/lib/systemd/>Active: active (exited) since Fri>Docs: man:rpc.nfsd(8)man:exportfs(8)

在這里插入圖片描述

3. 配置 NFS ,服務端創建一個需要共享的文件,這個文件的內容會被共享到目的客戶端

服務端:創建一個用于存儲文件目錄,編輯/etc/exports文件,配置文件和目的網段(IP、主機),設置權限

# 創建一個用于存儲文件目錄
[root@server ~]# mkdir /nfs/server -p# 配置文件和目的網段(IP、主機),設置權限,將此目錄共享給客戶端
[root@server ~]# vim /etc/exports
[root@server ~]# cat /etc/exports
# we will share file | other PC's ip(notice limits of authority:read and write)
/nfs/server 192.168.88.142(rw) (客戶端IP)

服務端 server IP:192.168.88.136
客戶端 client IP:192.168.88.142

4. 重啟服務

[root@server ~]# systemctl restart nfs-server

5. 然后暴露共享服務,服務器查看nfs共享狀態

[root@server ~]# showmount -e 192.168.88.136(本機,服務端IP)
Export list for 192.168.88.136:
/nfs/server 192.168.88.142 //此時服務端創建文件
[root@server ~]# touch /nfs/file/one.txt
touch: cannot touch '/nfs/file/one.txt': No such file or directory
[root@server ~]# touch /nfs/server/one.txt
[root@server ~]# vim /nfs/server/one.txt 
[root@server ~]# cat /nfs/server/one.txt 
a file of share from server to client:
content:this is nfs service//客戶端還沒能同步到文件,需要在客戶端創建目錄,再掛載到服務端的共享目錄
[root@client ~]# ll /nfs
ls: cannot access '/nfs': No such file or directory

服務端 server IP:192.168.88.136
客戶端 client IP:192.168.88.142

6. 客戶端創建掛載目錄,將創建的目錄掛載到服務端的共享目錄

# 1. 創建掛載目錄
[root@client ~]# mkdir -p /nfs/client# 2. 將創建的目錄掛載到服務端的共享目錄
[root@client ~]# mount -t nfs 192.168.88.136:/nfs/server /nfs/client# 3. 查看是否掛載成功
[root@client ~]# df /nfs/client
Filesystem                 1K-blocks    Used Available Use% Mounted on
192.168.88.136:/nfs/server  46587904 1756160  44831744   4% /nfs/client# 掛載成功后即可查看到 服務端想要共享的文件
[root@client nfs]# cd /nfs/client/
[root@client client]# ll
total 4
-rw-r--r--. 1 root root 69 Mar 14 14:34 one.txt
# 有讀的權限
[root@client client]# cat one.txt 
a file of share from server to client:
content:this is nfs service

服務端 server IP:192.168.88.136
客戶端 client IP:192.168.88.142

7. 功能測試

測試服務端讀寫
  • 服務端已創建 one.txt 文件
[root@server ~]# cat /nfs/server/one.txt
a file of share from server to client:
content:this is nfs service
[root@server ~]# echo add second text >> /nfs/server/one.txt
[root@server ~]# cat /nfs/server/one.txt 
a file of share from server to client:
content:this is nfs service
add second text

服務端對于要共享的文件,可讀可寫

測試客戶端讀寫
  • 客戶端查看此文件
[root@client ~]# ls /nfs/client/
one.txt
[root@client nfs]# cd /nfs/client
[root@client client]# cat one.txt 
a file of share from server to client:
content:this is nfs service
add second text#沒有寫的權限
[root@client client]# vim one.txt 
[root@client client]# echo add third text > one.txt 
-bash: one.txt: Permission denied

在這里插入圖片描述

讀文件能執行成功,不能寫

  • 服務端查看權限
#服務端查看權限
[root@server ~]# ll -d /nfs
drwxr-xr-x. 3 root root 20 Mar 14 14:27 /nfs
root(rwx) root的主(r-x) 其他用戶(r-x)
u				g			o
[root@server server]# chmod o+rw /nfs
[root@server server]# ll -d /nfs/
drwxr-xrwx. 3 root root 20 Mar 14 14:27 /nfs/[root@server server]# vim /etc/exports
[root@server server]# cat /etc/exports
# we will share file | other PC's ip(notice limits of authority:read and write)
/nfs/server 192.168.88.142(rw,no_root_squash)#客戶端可讀寫
[root@client ~]# ll -d /nfs/
drwxr-x--x. 3 root root 20 Mar 14 14:35 /nfs/
[root@client client]# systemctl restart nfs-server
[root@client client]# echo a new file > two.txt
[root@client client]# ls
one.txt  two.txt# 服務端已同步客戶端的讀寫操作
[root@server server]# ls
one.txt  two.txt
  • 用戶對目錄的權限受兩方面約束:NFS認證權限、Posix權限;

    • NFS權限:

      • NFS服務器器中exports中配置額讀寫、只讀權限
    • Posix權限:

      • 發現exports目錄權限中,參數 no_root_squash 的其作用是:NFS客戶端使用共享目錄的用戶,如果是root 的話,所有的操作均在服務器端映射為root用戶,擁有共享目錄的root權限!

默認情況使用的是相反參數root_squash:在登入 NFS 主機 export 目錄的使用者如果當root時,那么這個使用者的權限將被壓縮成為匿名使用者,通常他的 UID 與 GID 都會變成 nobody 那個身份。

因為客戶端是使用root登錄的,自然權限被壓縮為nobody了,難怪無法寫入。

將配置信息改為:

/nfs/server 192.168.88.142(rw,no_root_squash)
據說有點不安全,但問題是解決了。

練習2

配置 NFS服務器 作為 ngxin 服務的存儲目錄,并在目錄中創建 index.html 文件,當訪問 http://你的IP地址時,可以成功顯示 index.html 文件的內容。

角色軟件IP主機名系統
NFS服務器nfs-utils192.168.88.7serverRHEL 9
WEB服務nfs-utils, nginx192.168.88.8webopenEuler

1. 環境初始化

配置倉庫,掛載,對應主機安裝基本軟件,安裝 NFS 軟件及nginx軟件等

配置倉庫、掛載

基本軟件安裝
bash-completion 用于tab補全
net-tools wget curl bash-completion vim  nfs-utils
nginx 安裝
  • 安裝 nginx( ngin官方倉庫安裝 )
#  配置nginx官方倉庫
[root@web ~]# vim /etc/yum.repos.d/nginx.repo
[root@web ~]# cat /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[root@web ~]# dnf install nginx -y
  • 查找 nginx 的啟動服務文件:
[root@web ~]# find / -name nginx.service
/usr/lib/systemd/system/nginx.service# 查看這個文件的內容:
[root@web ~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
PIDFile=/run/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
#ExecStop=/usr/sbin/nginx -s stop | quit
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=mixed
PrivateTmp=true[Install]
WantedBy=multi-user.target
  • 查看nginx.conf配置文件
[root@web ~]# vim /etc/nginx/nginx.conf

2. 放行防火墻,關閉SELinux,啟動服務

# 啟動 nfs 服務
[root@server ~]# systemctl enable --now nfs-server
或者
systemctl start nfs-server
# 啟動 nginx
[root@web ~]# systemctl start nginx
[root@web ~]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; preset: disabled)Active: active (running) since Sun 2025-03-09 23:58:02 CST; 3s agoProcess: 14937 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)Process: 14940 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)Process: 14944 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)Main PID: 14945 (nginx)Tasks: 5 (limit: 21357)Memory: 11.1M ()CGroup: /system.slice/nginx.service├─14945 "nginx: master process /usr/sbin/nginx"├─14946 "nginx: worker process"├─14947 "nginx: worker process"├─14948 "nginx: worker process"└─14949 "nginx: worker process"Mar 09 23:58:02 web systemd[1]: Starting The nginx HTTP and reverse proxy server...
Mar 09 23:58:02 web nginx[14940]: nginx: the configuration file /etc/nginx/nginx.conf syntax >
Mar 09 23:58:02 web nginx[14940]: nginx: configuration file /etc/nginx/nginx.conf test is suc>
Mar 09 23:58:02 web systemd[1]: Started The nginx HTTP and reverse proxy server.
  • 放行防火墻,關閉SELinux
# 放行防火墻
[root@server ~]# firewall-cmd --permanent --add-service=nfs
[root@server ~]# firewall-cmd --reload
firewall-cmd --list-all(驗證是否放行成功)
# 永久關閉
sed -i "s/^SELINUX=enforcing$/SELINUX=permissive/g"/etc/selinux/config# 關閉SELinux
[root@server ~]# setenforce 0

3. 配置 Web 服務,放行80端口

# 配置一個web服務
[root@web ~]# vim /etc/nginx/conf.d/nfs.conf
[root@web ~]# cat /etc/nginx/conf.d/nfs.conf
server {access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;server_name 192.168.72.8;root /var/nginx/;
}# 驗證配置文件是否有效
[root@web ~]# /usr/sbin/nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful# 重啟 nginx 服務
[root@web ~]# systemctl restart nginx
[root@web ~]# firewall-cmd --permanent --add-port=80/tcp
success
[root@web ~]# firewall-cmd --reload
success
[root@web ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources:services: dhcpv6-client mdns nfs sshports: 80/tcpprotocols:forward: yesmasquerade: noforward-ports:source-ports:icmp-blocks:rich rules:

4. 搭建 nginx 服務

5. 瀏覽

打開瀏覽器,輸入 http://192.168.72.8 來訪問:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73782.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73782.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73782.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【大語言模型_5】xinference部署embedding模型和rerank模型

一、安裝xinference pip install xinference 二、啟動xinference ./xinference-local --host0.0.0.0 --port5544 三、注冊本地模型 1、注冊embedding模型 curl -X POST "http://localhost:5544/v1/models" \ -H "Content-Type: application/json" \…

Vector 的模擬實現:從基礎到高級

文章目錄 1. 引言2. vector的核心設計3. vector的常用接口介紹3.1 構造函數和析構函數3.1.1 默認構造函數3.1.2 帶初始容量的構造函數3.1.3 析構函數 3.2 拷貝構造函數和拷貝賦值運算符3.2.1 拷貝構造函數3.2.2 拷貝賦值運算符 3.5 數組長度調整和動態擴容3.5.1 調整大小&#…

深入理解 Linux 的 top 命令:實時監控系統性能

在 Linux 系統管理和性能優化中,top 命令是一個不可或缺的工具。它可以實時顯示系統的進程信息和資源使用情況,幫助管理員快速定位性能瓶頸。本文將詳細介紹 top 命令的輸出內容及其使用方法,幫助你更好地掌握系統性能監控。 一、top 命令簡介 top 是一個動態顯示系統狀態的…

拖拽實現+搖桿實現

拖拽實現 拖拽事件實現: 半透明漸變貼圖在ios設備下&#xff0c;使用壓縮會造成圖片質量損失&#xff0c;所以可以將半透明漸變UI切片單獨制作真彩色圖集 拖拽事件組 IBeginDragHandler:檢測到射線后&#xff0c;當拖拽動作開始時執行一次回調函數 IDragHandler:拖拽開始后&a…

xLua_001 Lua 文件加載

xLua下載 1、HelloWrold 代碼 using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; // 引入XLua命名空間 public class Helloworld01 : MonoBehaviour {//聲明LuaEnv對象 private LuaEnv luaenv;void Start(){//實例化LuaEnv對象…

每天看一篇漏洞報告

前言&#xff1a; 內容來源于烏云漏洞 今日思考xss漏洞&#xff0c; 今天看到一篇文章&#xff0c;里面詳細說了xss的繞過技巧&#xff0c;雖然時間久了&#xff0c;沒有去嘗試&#xff0c;待會有時間去測試一下 以下是整理后的文章&#xff0c;原文在下面 文章鏈接&#…

【sql靶場】第18-22關-htpp頭部注入保姆級教程

目錄 【sql靶場】第18-22關-htpp頭部注入保姆級教程 1.回顧知識 1.http頭部 2.報錯注入 2.第十八關 1.嘗試 2.爆出數據庫名 3.爆出表名 4.爆出字段 5.爆出賬號密碼 3.第十九關 4.第二十關 5.第二十一關 6.第二十二關 【sql靶場】第18-22關-htpp頭部注入保姆級教程…

Python----計算機視覺處理(Opencv:形態學變換)

一、形態學變化 形態學變換&#xff08;Morphological Transformations&#xff09;是一種基于形狀的圖像處理技術&#xff0c;主要處理的對象為二值化圖像。 形態學變換有兩個輸入和一個輸出&#xff1a;輸入為原始圖像和核&#xff08;即結構化元素&#xff09;&#xff0c;輸…

對于memset(b, 1, sizeof b)賦值為16843009情況

memset(b, 1, sizeof b); 的行為看起來可能不符合預期&#xff0c;這是因為 memset 的工作方式和數據類型之間的差異導致的。下面詳細解釋這個問題。 1. memset 的作用 memset 是 C/C 中的一個標準庫函數&#xff0c;用于將一段內存區域的值設置為指定的字節值。它的函數原型如…

【最新版】智慧小區物業管理小程序源碼+uniapp全開源

一.系統介紹 智慧小區物業管理小程序,包含小區物業繳費、房產管理、在線報修、業主活動報名、在線商城等功能。為物業量身打造的智慧小區運營管理系統,貼合物業工作場景,輕松提高物業費用收繳率,更有功能模塊個性化組合,助力物業節約成本高效運營。 二.搭建環境 系統環…

C++模板進階

目錄 非類型模板參數 類模板的特化 分類 函數模板的特化 模板分離編譯 問題 解決方法 1&#xff09;不對模板定義進行分離或對模板進行特例化&#xff1b; 2&#xff09;將聲明和定義放在同一個文件 總結 關于C模板的使用在《C類和對象》中有介紹&#xff0c;本篇博客…

Ubuntu togo系統讀寫性能與原生系統測試

我前面把一個Ubuntu環境拷貝到了一個10Gbps的硬盤盒制作了一個Ubuntu togo的系統&#xff0c;帖子在這里&#xff0c;這篇文章主要用于測試使用Ubuntu togo的系統和原生系統的性能差異。 以下是測試Ubuntu togo系統與原系統性能差異的具體方案&#xff0c;結合移動硬盤特性及參…

【css酷炫效果】實現魚群游動動態效果

【css酷炫效果】實現小魚游動動態效果 緣創作背景css代碼創建div容器引入jquery引入魚群js完整代碼效果圖成品資源下載鏈接:點擊下載 緣 在開發系統功能的時候,無意間看到了小魚游動特效,感覺很有意思,就在網上找了相關教程,分享給大家。 創作背景 剛看到csdn出活動了…

停車場停車位數據集,標注停車位上是否有車,平均正確識別率99.5%,支持yolov5-11, coco json,darknet,xml格式標注

停車場停車位數據集&#xff0c;標注停車位上是否有車&#xff0c;平均正確識別率98.0&#xff05;&#xff0c;支持yolov5-11&#xff0c; coco json&#xff0c;darknet&#xff0c;xml格式標注 數據集-識別停車場所有車輛的數據集 數據集分割 一共184張圖片 訓練組 89&am…

結合基于標簽置信度的特征選擇方法用于部分多標簽學習-簡介版

假設 部分多標簽學習&#xff08;PML&#xff09;假設&#xff1a;假設樣本的標簽集合中存在偽正標簽&#xff0c;即某些標簽可能是錯誤的。目標是從候選標簽集中識別出真實標簽。特征與標簽的關系假設&#xff1a;假設不同的標簽對應的特征子空間可能是不同的&#xff0c;而不…

Lora微LLAMA模型實戰

引言 本文介紹如何復現Alpaca-lora&#xff0c;即基于alpaca數據集用lora方法微調Llama模型。 環境準備 實驗環境用的是lanyun&#xff0c;新用戶點擊注冊可以送算力。 下載huggingface上的模型是一個令人頭疼的問題&#xff0c;但在lanyun上可以通過在終端運行source /etc…

Maven常見問題匯總

Maven刷新,本地倉庫無法更新 現象 This failure was cached in the local repository and resolution is not reattempted until the update interval of aliyunmaven has elapsed or updates are forced原因 因為上一次嘗試下載&#xff0c;發現對應的倉庫沒有這個maven配置…

什么是站群服務器?站群服務器應該怎么選?

站群服務器是專門用于托管和管理多個網站的服務器。通常用于SEO優化、內容分發、廣告推廣等場景&#xff0c;用戶可以通過一個服務器管理多個站點&#xff0c;提升效率并降低成本。選擇站群服務器時&#xff0c;需根據業務需求、性能要求、IP資源等因素進行綜合考慮。 什么是站…

分享一個項目中遇到的一個算法題

需求背景&#xff1a; 需求是用戶要創建一個任務計劃在未來執行&#xff0c;要求在創建任務計劃的時候判斷選擇的時間是否符合要求&#xff0c;否則不允許創建&#xff0c;創建的任務類型有兩種&#xff0c;一種是單次&#xff0c;任務只執行一次&#xff1b;另一種是周期&…

【LInux進程六】命令行參數和環境變量

【LInux進程六】命令行參數和環境變量 1.main函數的兩個參數2.利用main函數實現一個簡單的計算器3.環境變量之一&#xff1a;PATH4.修改PATH5.在命令行解釋器bash中查看所有環境變量6.用自己寫的程序查看環境變量7.main函數的第三個參數8.本地的環境變量和環境變量9.環境變量具…