配置IP地址 查看IP地址:ifconfig 進入:vim /etc/sysconfig/network-script/ifcfg-網卡名 ONBOOT=yes BOOTPROTO=yes 在最後增添:IPADDR=IP地址 NETMASK=子網掩碼 ifup 網卡名(重啟網卡) ping IP地址 ...
配置IP地址
查看IP地址:ifconfig
進入:vim /etc/sysconfig/network-script/ifcfg-網卡名
ONBOOT=yes
BOOTPROTO=yes
在最後增添:IPADDR=IP地址
NETMASK=子網掩碼
ifup 網卡名(重啟網卡)
ping IP地址 即可
iptables -L 查看防火牆
iptables -F 關閉防火牆
網路配置基礎
一、網路配置
1、主機名
查看:hostname
臨時修改:hostname FQDN(完全合格功能變數名稱)
永久修改:/vim/etc/sysconfig/network
NETWORKING 啟動IPv4的主機名設置
HOSTNAME 更改主機名
預設主機名:localhost.localdomain
NetBIOS協議:網路基本輸入/輸出系統
2、網卡
查看:ifconfig
臨時修改:ifconfig ech1 172.16.1.100 netmask 255.255.255.0
ONBOOT=no 網卡是否啟動
NM_CONTROLLED=yes 網卡守護進程 (service NetworkManager stop)
BOOTPROTO=static 網路參數獲取方式 (static手動配置dhcp自動獲取方式)
IPADDR=172.16.1.2 IP地址
NETMASK=255.255.0.0 子網掩碼
重啟網卡:service network restart
禁止:ifdown eth0(網卡名)
啟用:ifup eth0(網卡名)
3、網關和路由
查看:route -n
臨時修改:
route add default gw 192.168.3.1 添加網關
route add -net 192.168.2.0/24 gw 192.168.3.1 添加路由
route del default gw 192.168.3.1 刪除網關
route del -net 192.168.2.0/24 刪除路由
永久修改:
進入:vim /etc/sysconfig/network-scripts/ifcfg-eth1
添加:GATEWAY=網關
4、DNS服務:將功能變數名稱轉換成IP地址
進入:vim /etc/sysconfig/network-scripts/ifcfg-eth1
添加:DNS1=
DNS2=
查看:nslookup
5、本地解析文件(主機映射)
修改:vim /etc/hosts
IP 功能變數名稱
192.168.1.3 www.yyy.con
(迴環:檢測自己的網卡是否能運行)
及時生效,無需重啟
hosts和DNS的區別
系統優化使用/etc/hosts文件中內容解析功能變數名稱
/etc/hosts文件僅對本主機生效
6、測試命令
ping 用來測試兩台主機之間的連通性
-c 指定ping的次數
-i 指定ping的時間間隔
w 指定等待時間
nestat 列出軟體詳細信息列表
-a 顯示ping的次數
-n 數字形式顯示地址
-p 顯示PID
-t 顯示TCP相關埠信息
-u 顯示UDP相關埠信息
-l 顯示詳細列表信息
traceroute (追蹤命令) 格式:traceroute 目標主機
測試從當前主機到目的主機之間經過的網路節點
追蹤到目標網路經過多少設備
arp(地址解析協議)
將IP地址解析為MAC地址
nmape
二、遠程管理
1、概述
SSH協議:為客戶機提供安全的shell
服務名:sshed
埠號:22
配置文件:
伺服器端/etc/ssh/sshd_config
作用:提供安全加密的與遠程連接
2、配置項
listenaddress 監聽地址
permitrootlogin 是否允許root用戶遠程登陸
permitemptypasswords 是否允許空密碼登錄
maxauthtries 最大登錄次數
logingracetime 登錄凍結時間
身份驗證方式:
PasswordAuthtication 用戶名/密碼驗證,預設方式
PubkeyAuthentication yes 密鑰對
AuthorizedKeysFile .ssh/authorized_keys 密鑰庫
3、功能模塊
ssh 用戶名 @IP地址 遠程安全登錄
scp 文件名 用戶名 @IP地址:目的地(目錄) 遠程安全複製文件
ssh -p 埠號 用戶名@IP地址
scp 安全文件複製
下載:
scp -P 埠號 用戶名@IP地址:/目錄 /本地文件
上傳:
scp -P 埠號 本地文件 用戶名@伺服器地址:/伺服器目錄
sftp 安全的FTP傳輸
sftp --oPrt=埠號 用戶名@服務地址
上傳:put
下載:get
4、密鑰對驗證
1、在客戶端生成密鑰對,公鑰和私鑰
2、把公鑰文件上傳給伺服器
3、在伺服器端將公鑰文件導入到密鑰庫里
4、測試
步驟:
1、在客戶機和用戶機各創建一個用戶,設置密碼,並都切換至用戶
2、在客戶機上用ssh-keygen -t rsa命令生成密鑰對
3、將公鑰(id_rsa.pub) 用scp id_rsa.pub 用戶名@伺服器地址:/伺服器目錄 命令上傳到用戶機
4、到用戶機上創建用戶家目錄
5、進入vim /etc/ssh/sshd_config 更改:PasswordAuthtication 用戶名/密碼驗證,預設方式
PubkeyAuthentication yes 密鑰對
6、將公鑰文件導入剛剛創建的目錄中
7、到從伺服器向主伺服器,遠程登陸檢測
一、DHCP服務
1、DHCP 動態主機控制協議
2、DHCP的作用: 分配網路參數,提供集中管理
提高地址利用率,解決IP地址不夠用的問題
減少管理和維護成本
3、DHCP的優勢:
小型網路,可以使用路由器/交換機;中大型網路,使用伺服器
路由器/交換器的DHCP功能是附加功能,若因流量大,導致路由器/交換器功能失效,則得不償失
伺服器配置更加簡單、高效
伺服器遷移有優勢
4、DHCP的原理
①、客戶端尋找伺服器
客戶端廣播發送DHCPdiscover包(群播),尋找DHCP伺服器
客戶端數據包的源地址為0.0.0.0,目標地址為255.255.255.0(MAC地址)
客戶端等待一秒無響應,發送第二次,9秒無響應,發送第三次,13,16
②、伺服器提供地址信息
監聽到客戶端的包,用MAC地址,回應客戶端DHCPoffer包(回應,單播)
offer提供IP地址、租約信息等簡單參數
③、接受並廣播
客戶端接受最先到達的offer包
客戶端向網路發送request包(廣播自己已有地址,請求所有網路參數)
request告知網路中所有伺服器,該客戶端接收了那個offer
發送檢測包,檢測該IP地址是否有人使用,若占用,則拒絕該offer,重新discover
④、伺服器確認
接受客戶端的request包後,向客戶機發送DHCPack包,包含所有的網路參數
⑤、客戶端重新登錄
不需要SDHCPdiscover,直接發送DHCPrequest,請求之前的參數
⑥、伺服器確認
可以使用,則分配DHCPask包確認網路參數
不可使用,則分配DHCPnack拒絕客戶端,客戶端重新發送DHCPdiscover
⑦、更新租約
客戶端在租約一半時,向伺服器發送DHCPrequest包,請求更新租約
客戶機在到一半時(75%)發送DHCPrequest包,請求更新
二、配置
1、基本配置
軟體:dhcp
埠:UDP67 接受下級客戶端的分配請求
UDP68 向客戶端發送請求成功或失敗的結果
服務名:
dhcpd DHCP的主程式
dhcprelay DHCP中繼服務
配置文件:
/etc/dhcp/dhcpd.conf 主配置文件
/etc/sysconfig/dhcrelay 中繼配置文件
/usr/share/doc/shcp-4.1.1/dhcpd.conf.sample 主配置文件模板
2、配置項
subnet 網段聲明
host 主機聲明
中繼配置
跨網段分配IP地址
一、DNS
1、概念
DNS 功能變數名稱系統
2、作用
功能變數名稱解析
3、解析方式
正向解析:
功能變數名稱解析成IP地址
反向解析:
IP地址解析成功能變數名稱
4、功能變數名稱
baidu.con 功能變數名稱
www.baidu.com FQDN
5、組織
IANA
ICANN 互聯網名稱與數字地址分配機構
6、功能變數名稱的發展
①、功能變數名稱通過維護文件伺服器上的hosts文件解析
②、通過計劃任務,定時下載hosts
③、搭建功能變數名稱伺服器
④、搭建分散式存儲
缺點:
相應時間長,管理相對麻煩
優點:
管理高效,命名簡單
7、功能變數名稱分類
www.zol.com.cn.
最右邊為根域、一級功能變數名稱、二級功能變數名稱、三級功能變數名稱、主機名
一級域:組織域,國家域
8、工作方式
遞歸查詢:
必須使用準確的查詢結構回覆客戶機
若DNS伺服器本地沒有存儲該信息,那麼該伺服器會詢問其他伺服器
並將結果返回給客戶機
迭代查詢:
伺服器會向客戶機提供其他能夠解析請求的DNS伺服器地址告訴客戶機
另一臺DNS伺服器地址
客戶機在向DNS伺服器發送請求,依次迴圈直到返回結果
9、伺服器類型
主功能變數名稱伺服器
從功能變數名稱伺服器
緩存功能變數名稱伺服器
分離解析功能變數名稱伺服器
二、配置
1、軟體:bind
2、服務名:named
3、埠:
UDP 53 數據通訊(功能變數名稱解析)
TCP 53 數據同步(主從複製)
4、配置文件:
主配置文件:/etc/named.conf 伺服器運行參數
區域文件:/etc/named.rfc1912.zones 當前DNS伺服器所解析的區域配置
數據文件:/vat/named/xx.xx 功能變數名稱和IP地址對應關係
正向解析數據文件
反向解析數據文件
5、配置項
SOA 起始授權記錄
6、從伺服器的壓力
減輕主伺服器的壓力
從伺服器拷貝文件
一、FTP
1、概述
FTP:文件傳輸協議,實現文件共用
NFS:網路文件系統,(可文件共用)
SMB:服務信息塊,(可文件共用)
2、鏈接類型
控制鏈接(命令連接):
用來發送FTP的命令信息 TCP21
特點:客戶端發送請求,伺服器響應
若沒有設置超時時間,那麼控制連接將一直保持
數據連接:用來上傳下載數據 TCP20
特點:按需打開。按需關閉,必須與命令連接相關聯
有可能同時出現多條數據連接,如mget
3、工作模式:
主動模式(主動發送給客戶機)
伺服器端:
控制連接:21埠
數據連接:20埠
被動模式(等客戶機自己來拿)
客戶端:
控制連接:21埠
數據連接:隨機埠(1024-65535)
4、驗證類型:
匿名用戶:不需要用戶名和密碼
本地用戶:即系統用戶,通常全程是明文傳輸,因此特定系統用戶
應該禁止使用本類型
虛擬用戶:通過虛擬出來的用戶名登錄,配置相對複雜,通過映射
系統用戶進行登錄
二、配置
1、軟體
伺服器端:
proftp、pureftp、vsftpd(體積小,安全性,本機自帶)
server-U、IIS、fillezilla
客戶端:
ftp、lftp
gftod、flashFXp、cuteftp
2、服務名:vsftpd
3、主目錄:/etc/vsftpd
4、主配置文件:/etc/vsftpd/vsftpd.conf
5、用戶控制文件:/etc/vsftpd/user_list
/etc/vsftpd/ftpusers
6、配置項
三、實驗
匿名用戶
用戶名:fig或anonymous
230 Login successful 登錄成功
550 Permission denied 許可權拒絕
553 Could not create fille 不能創建目錄
操作許可權由FTP許可權和目錄許可權組成。
預設目錄:
登錄目錄:/var/ftp
操作目錄:/var/ftp/pub
/var/ftp自定義目錄
FTP許可權:anonymous_enable=YES 啟用匿名用戶
anon_upload_enable=YES 允許匿名用戶上傳許可權
anon_nkdir_write_enable=YES 允許創建目錄
anon_other_write_enable=YES 允許其他寫入操作(重命名,刪除)
2、本地用戶
用戶名:系統用戶名
預設目錄:登錄用戶的家目錄
FTP許可權:local_enable=YES 啟用本地用戶
local_umask=022 本地用戶反碼
local_root=/目錄 更改預設目錄
chroot_local_user=YES 禁錮家目錄 chroot_local_user=YES chroot_list_enabble=YES 不能同時打開
chroot_list_enabble=YES 禁錮家目錄,不能切換用戶(第97行,必須把99行也開啟)
chroot_liat_file=/etc/vaftpd/chroot_list 該文件中的用戶不能更改目錄(將用戶添加其中) /etc/vaftpd/chroot_list目錄需要自己創建
userlist_enable=YES
userlist_deny=YES 拒絕userlist文件中的用戶登錄FTP伺服器
userlist_enable=YES
userlist_deby=NO 僅允許user_list文件中的用戶登錄FTP伺服器
ftpusers 拒絕ftpusers文件中的用戶登錄FTP伺服器,及時生效,無論user_list如何設置
本地用戶使用被動模式
pasv_enable=YES 啟用被動模式
pasv_min_port=2001 最小從哪開始
pasv_max-port=2005 最大到哪截至
3、其他配置項
wriye_anable 是否啟用寫入許可權
download_enable 是否允許下載
max_clients 限制併發客端連接數
max_per_ip 限制同一個IP的併發數量
dirmessage_enable 允許配置目錄提示信息
idle_session_timeout 設置空閑連接超時
ftpd_banner FTP的歡迎提示信息
banner_file FTP的歡迎提示文件
4、虛擬用戶
1、創建虛擬用戶
2、創建虛擬用戶映射的系統用戶
3、建立支持虛擬用戶的PAM認證文件
4、啟用虛擬用戶
5、為不同虛擬用戶創建獨立配置文件
5、
一、概述
1、文件共用
NFS 網路文件系統
SMB 服務信息塊
Netbios 網路基本輸入/輸出系統 API 介面
SMB更改為CIFS 公共互聯網文件系統
SMB-->samba
2、SAMBA特點
跨平臺
支持線上編輯,無需下載
使用SMB和CIFS協議
二、配置
1、服務
nmbd:通過netbios協議,實現電腦名的解析 UDP137 UDP138
smbd:實現文件共用 TCP139 TCP445
2、軟體
samba
3、主目錄
/etc/samba
4、主配置文件
/etc/samba/smb.conf
5、配置項
security 安全級別
share 不需要提供用用戶名/密碼
user 需要提供用戶名/密碼,由本地samba伺服器驗證
server 需要哦提供用戶/密碼,可指定其他主機或另一臺主機samba服務驗證
domain 需要提供用戶/密碼,由域控制器進行身份用驗證
secueity=share
三、實驗
1、匿名用戶訪問
[share]
comment 描述信息
pash 真實路徑
public 允許所有人訪問
smbclient -L // 伺服器地址 查看
smbclient // 伺服器地址/共用名 登錄
2、本地用戶訪問
security=user
[share]
comment 描述信息
path 真實路徑
read only 所有人只讀訪問
useradd 創建系統用戶
smbpasswd 管理samba用戶
a 添加
x 刪除
d 禁用
e 啟用
pdbedit -L 查看samba用戶列表
smbclient -U zhangsan -L // 192.168.1.250
smbclient -U zhangsan // 19255.168.1.250/zhangsan
3、Windos訪問
4、許可權控制
read only 設置只讀訪問
writable 設置寫入許可權
write list 設置寫入列表
valid users 設置合法用戶
browseable 是否網路可見
5、訪問控制
hosts allow 允許個別,拒絕所有 192.168.1.1 192.168.1.
hosts deny 允許個別,拒絕所有
不能同時啟用,只能啟用一個
6、用戶映射
vim /etc/samba/smbusers
zhangsan = zhaosi
username map = /etc/samba/smbusers
7、映射網路驅動器
LAMP平臺
一、概述
1、LAMP
L Linux 提供穩定的底層平臺
A apache 網站伺服器,提供網站服務
M mysql 資料庫伺服器,提供資料庫服務
P PHP 網站開發語言,提供動態網站程式解析
2、LAMP架構
單層架構、雙層架構,三層架構
3、網站架構
動態網站apache
靜態網站nginx
二、LAMP平臺
1、環境
①、編譯環境
gcc
②、關閉RPM服務
service httpd stop(關閉)
chkconfig htttpd off(關閉開機自啟)
service mysqld stop(關閉)
chkconfig mysqld off(關閉開機自啟)
③、關閉防火牆,seLinux
service iptables stop
chkconfig iptables off
setenforce 0
vim /etc/sysconfig/selinux
selinux=disable
④、關閉不必要的服務
⑤、硬碟空間
2、安裝
①、將lamp.iso載入進光碟機,將其內容拷貝至/usr/src中,然後將光碟
更換為系統盤,配置yum
一、概述
1、協議
http:超文本傳輸協議
html:超文本表示語言
url:統一資源定位
列如:http//www.jx.com:80/index.html
2、安裝
源代碼
RPM
3、相關文件
主配置文件
源代碼:/usr/local/apapche2/etc/http.conf
/usr/localapache2/etc/extra/(補全)*/conf
RPM:
/etc/htttpd/conf/httpd.conf
預設首頁位置:
源代碼:/usr/local/apapche2/htdocs/
RPM:/var/www/html
日誌保存位置:
源代碼:/usr/local/apapche2/logs
RPM:/var/log/httpd
源代碼主配置文件:/usr/local/apapche2/etc/http.conf中各段意思
31行 ServerRoot “/usr/local/apache2” Apache安裝路徑
52行 Listen 80 Apache監聽埠號
66行 LoadModule 載入模塊(模塊可拆卸)
150行<IfModule unixd_module> 對某一個模塊加一些選項,參數
181行ServerAdmin 管理員郵箱
190行ServerName 指定當前網站功能變數名稱
197行<Directory> 對某一個目錄設置訪問規則
AllowOverride none 許可權開關
Roquire all denied 拒絕所有人訪問
215行<Directory "/usr/local/apache2/htdocs"> 對首頁文件的訪問區域
228行Options Indexes FollowSymLinks 設置目錄的選項
249行Require all granted 允許所有人訪問
247行<IfModule dir_module> 目錄模塊
DirectoryIndex 聲明首頁文件的預設名
255行<Files ".ht*"> 文件配置區(以.ht開頭的文件是許可權文件)
266行ErrorLog “logs/error_log" 錯誤日誌
295行Customlog ”logs/access_log"正確日誌
273行LogLevel warn 日誌級別
275行<IfModule log_config_module> 日誌格式
304行<IfModule alias_module> 別名模塊(給一個較長的名字起一個較短的名稱)
二、應用
1、目錄與許可權
indesxes 若首頁目錄中,找不到首頁文件,則列出該目錄下所有內容
FollowSymLinks 允許首頁文件是鏈接文件
2、訪問控制
僅允許192.168.1.0/24網段的主機訪問
<requireall>
requireall all granted
requireall ip 192.168.1.0./24
</ requireall>
僅拒接192.168.1.0/24網段主機訪問
<requireall>
requireall all granted
requireall not ip 192.168.1.0/24
</requireall>
3、身份認證
authname 驗證信息
authtype 驗證類型
authserfile 驗證文件
require vaild—user 合法用戶
htpasswd -c 驗證文件路徑 用戶名 添加驗證用戶
htpasswd -m 驗證文件路徑用戶名 追加驗證用戶
4、虛擬主機
定義:在一臺物理伺服器上,構建多個網站服務,並同時運行,互不幹擾
基於功能變數名稱
<VirtualHost *:80>
DocumentRoot "/usr/local/apache2/htdocs/webl"
ServerName web1.jx.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot”/usr/local/apache2/htdocs/web2“
ServerName web2.jx.com
</VirtualHost>
基於IP
創建虛擬IP ifconfig eth0:0 192.168.1.250 netmask 255.255.2555
基於埠
listen 8000
5、個人主頁
定義:在網站伺服器上,為用戶單獨分配一個頁面
6、地址重寫
LNMP
一、概述
1、區別
①apache
模塊化、功能較全
對動態網站支持較好,與PHP相容性好
地址重寫與加密功能強大
配置相對複雜
同步阻塞型應用
②nginx
模塊相對較少,高性能模塊出色
對靜態網站支持較好
反向代理與負載均衡功能強大
配置相對簡單
非同步非阻塞型應用
消息通信機制:
同步
發出“調用”時,沒有結果之前,該調用就不返回
一旦返回,即可得到返回值
非同步
調用發出以後,該調用就直接返回,沒有返回結果
程式等待調用結果的狀態
阻塞
調用結果返回之前,當前線程會被掛起,只有得到結果
之後才會返回
非阻塞
不能立刻得到結果之前,該調用不會阻塞當前線程
2、網站的請求流程
①用戶向網站發起訪問,請求首先到達網卡上。由網卡把數據傳遞到內核
②這個請求數據到達內核之前,由內核將請求數據解封裝,得到
請數據,得知請求的是網站伺服器,將數據發給網站伺服器。
③網站伺服器收到請求數據之後,發現客戶端要求的是index.html的首頁文件
就會向內核發起請求
④內核發現,網站要訪問一個頁面文件,這個頁面文件在硬碟里存放、
內核通過驅動程式就會向硬碟發起訪問
⑤內核從硬碟中取回想要的文件,並且存放在緩存中,然後通知網站網頁文件
已經準備好
⑥網站的線程就會向內核發起訪問,將內核緩存中的首頁文件,放到網站中的緩存區域中
⑦然後網站會向用戶進行響應,並且將首頁文件交還給內核,告訴內核就使用這個文件回覆客戶端,
內核收到後,將數據進行封裝,從網卡發送給用戶。
3、總結
若是處理靜態頁面,尤其是高併發場景,適合使用nginx
若是處理動態頁面,尤其是追求穩定性,則適合使用apache
4、LNMP
a、nginx作用
①、充當網站伺服器
nginx轉發給後端的apache處理動態頁面
通過PHP-FPM模塊
②、充當代理伺服器
正向代理
反向代理
processes 核心數
connections 併發數
核心數*併發數=最大訪問量
mime.types 應用程式的配置文件
keepalive_timeout 連接超時時間
sendfile on 下載
一、Nginx
1、配置
配置項 nginx apache
虛擬主機 server virtualhost
監聽埠號 listen listen
主機名稱 server_name servername
配置區域 location directory、file
首頁文件位置 root documentroot
預設首頁名稱 index directoryindex
認證信息 auth_basic、auth_basic_user_file
authname、authype
訪問控制 允許 allow required all granted
拒絕 deny required all denied
2、虛擬主機
一、數據同步
1、數據備份:cp、mv、tar、dd、mount
2、RSYNC
增量的備份工具
同步指定目錄及子目錄的內容,還可保留文件屬性
3、類型
SSH
RSYNC
客戶端-->發起端
伺服器-->同步源
二、搭建同步源
1、基於SSH的同步源
同步源:
創建測試目錄
創建測試文件
創建測試用戶
設置許可權
發起端:
創建同步目錄
創建測試文件
測試
下行同步:
rsync -avz 伺服器用戶@伺服器IP地址
:伺服器目錄/文件 /本地路徑
上行同步:
rsync -avz /本地路徑/本地文件 伺服器用戶
@伺服器地址:伺服器目錄
2、基於RSYNC的同步源
同步源:
創建測試目錄
創建測試文件
創建配置文件
創建密碼文件
開啟服務
發起端:
創建同步目錄
創建測試文件
測試
rsync -avz 伺服器用戶@伺服器地址::共用名/ 本地目錄
rsync -avz rsync://伺服器用戶@伺服器地址/共用名 /本地用戶
三、免密碼驗證
1、基於SSH的同步源
ssh-keygen -t rsa
ssh-copy-id 伺服器用戶@伺服器地址
2、基於rsync的同步源
export RSYNC_PASSWORD=123456
四、inotify
inotifywait
-m 持續監控
-r 遞歸
-q 簡化輸出
-e 監控的事件類型 modify create delete move
一、概述
1、郵件角色
MTA 郵件傳輸代理 伺服器中接受郵件 sendmail、
exchange、postfix
MUA 郵件用戶代理 替用戶收發郵件,outlook、Foxmail
MDA 郵件分發代理 將收到的郵件保存至郵箱 maildrop
MRA 郵件檢索代理 替用到郵箱收郵件 dovecot
2、郵件認證
開放式中繼(openrelay)
SASL 簡單驗證安全層
3、協議
SMTP 簡單郵件傳輸協議 TCP25發郵件的埠 SMTOPS 465
POP3 第三版郵局協議 TCP110 POP3S 995
IMAP4 第四版互聯網郵件訪問協議 TCP143 IMAP4S 993
POP3將伺服器的郵件下載到本地處理
IMPA4與服器交互後,在伺服器端處理
4、郵件地址
郵件用戶@郵件域
mail.jx.com
[email protected]
二、郵件伺服器
1、MTA
sendmail
qmail
postfix
2、配置
主目錄:/etc/postfix
配置文件:master.cf
main.cf
myhostname 郵件伺服器主機名
mydomain 郵件域
maorigin 設置允許發送郵件的用戶的郵件域
mydestination 設置允許接收郵件的用戶的郵件域
home_mailbox 設置郵箱目錄
3、測試
發郵件
telnet mail.extmail.org 25
helo mail.extmail.org
mail from:發件人地址
rcpt to:收件人地址
data
郵件內容
. 內容結束
quit
收郵件:
telnet mail.extmail.org 110
user lisi
pass 123
list 顯示郵件列表
retr 查看指定郵件內容
【資料庫】
一、概述
1、資料庫
資料庫(database)是按照數據結構來組織,存儲和管理數據的倉庫
2、資料庫管理系統
a、定義
將能夠操控和管理資料庫的大型軟體,稱之為數據路管理系統,
通過它創建、使用和維護資料庫,保證資料庫中數據的安全性和完整性,簡稱DBMS(database management system)
3、類型
mysql、oracle(類Linux)、SQL Server、Redis、mongoDB等
關係式資料庫、mysql
SQL Server 閉源、對Linux相容性不好,適合安裝在Windows系統上
Oracle 閉源、價格昂貴、對Linux相容性好、不適合用於中小型企業中
mysql 開源、靈活、版本眾多,更具有代表性,主要應用於中小型企業
4、資料庫與文件系統的區別
a、數據冗餘和不一致性
b、數據訪問難度
c、數據格式
d、完整性
e、併發訪問
f、安全性問題
5、資料庫模型
a、層次模型
按照層次結構的形式組織資料庫數據的模型
缺點:數據冗餘
典型:IBM IMS資料庫
b、網狀模型
按照網狀結構的形式組組織資料庫數據的模型
缺點:數據量增加,網狀結構越發複雜,後期維護成本過高
典型:美國資料庫系統語言協會 DBTG資料庫
c、關係模型
按照行和列結構,組成資料庫數據的模型
以關係或表作為描述數據的基礎,擁有嚴格的數學理論基礎
以關係模型構建的資料庫關係管理系統稱之為關係資料庫關係系統,簡稱RDBMS
6、數據模型
陳品山 實體關係建模 陳氏表示法,陳氏模型 也稱之為E-R模型
關係三要素:實體、聯繫、屬性
實體:數據對象,客觀存在的事物
聯繫:多個實體之間的關聯關係
屬性:實體的某一個特性
7、SQL語句
結構化查詢語言
【埃德加 柯德 關係式資料庫之父】
【唐-錢伯林 SQL語句之父】
1979年,甲骨文的ORACLE公司推出關係式資料庫產品 ORACLE
1980年,IBM推出關係式資料庫SYSTEM/38
1983年,IBM推出DB2
ANSI 美國國家標準協會,推出統一SQL標準
8、SQL類型
SDL 數據操控語言 操作資料庫中的數據
如:select、insert、update、delete
DDL 數據描述語言 建立資料庫、定義數據關係
如:create、alter、drop等
DCL 數據控制語言 控制資料庫組件的許可權
如:grant、revoke
一、資料庫結構
1、資料庫結構
a、文件的邏輯架構
上層:文件
底層:二進位形式的數據
中間層:文件系統
b、資料庫的邏輯架構
上層:數據表
底層:數據文件
中間層:存儲引擎
2、存儲引擎
a、概念
定義:存儲數據、保存數據、更新數據等的實現方法
b、musql的存儲引擎
1、MyISAM
特點:Mysql的預設存儲引擎,最為常用。較高的寫入、
查詢速度,不支持事務(行級鎖,頁級鎖)等功能
事務:SQL語句的批處理(要麼去全部成功,要麼全部失敗)
鎖:
行級鎖:對單獨一行加鎖,效率低,衝突少 需要:INNQDB 存儲引擎
表級鎖:鎖定整張表,效率高,衝突少 需要:MyISAM 存儲引擎
頁級鎖:鎖定相鄰的多行記錄,折中方案 需要: DBD 存儲引擎
約束:
域約束:約定的數據的類型
外鍵約束:通過其他數據進行約束的類型
索引:對資料庫表中一列或多列的值進行排序的一種結構,
使用索引可快速訪問的特定信息。
2、InnoDB
MyISAM的升級版,提供了事務、行級鎖,外鍵約束等功能
3、Memory
只存在於記憶體中,通過hash(散列)來存取數據,速度最快,
通常無法持久保存。
3、數據的存儲和查詢
a、存儲管理器
專門的存儲件,通過DDL(數據描述語言)創建表的結構,然後通過
DML(數據操控語言)保存SQL語句的處理結果
許可權及完整性管理器
設置存儲許可權
事務管理器
保證數據的原始狀態
文件管理器
保證數據文件和資料庫數據的對應關係
緩存區管理器
管理緩衝空間
b、查詢管理器
專門查詢組件,負責接受用戶的查詢請求、並且將查詢請求轉交
給存儲管理器,實現數據管理去的組件
DDL、DML解釋器
同於理解分析DDL和DML的操作
查詢執行引擎
具體執行操作的組件
4、工作模式
a、資料庫後臺
Mysql是單進程多線程的應用程式類型
1、守護線程
後臺預設執行的線程,不需要和用戶交互,防止數據丟失
2、應用線程
資料庫處理用戶請求的線程,用戶推出後,終止該線程
b、資料庫性能
1、垂直擴展
換更好的硬體
2、緩存
memcache、redis、MongoDB
3、線程重用
用戶退出,不撤銷線程
c、資料庫缺點
SMP支持不夠
同一個任務只能由一個CPU完成
Mysql版本
1、版本
社區版:免費、沒有技術支持、沒有技術責任方
企業版:收費、有售後支持、更穩定,可靠
集群版:基於集群需求,添加存儲引擎、集群管理器等新功能
SO7:預設MariaDB
2、安裝
mysql:客戶端鏈接工具
mysql-server:Mysql資料庫主程式
3、配置
服務名:mysqld
段口號:TCP 3306
配置文件:/etc/my.cnf
二、操作
1、結構
DBMS 資料庫管理系統
database 資料庫
table 數據表
data 數據記錄
2、登錄
命令:mysql (進入資料庫)
資料庫每條命令,必須以分號結尾
查看資料庫命令:show databases;
u 指定登錄用戶
h 指定登錄主機
P 指定登錄埠號
p 指定登錄密碼
3、創建密碼
mysqladmin -uroot(root可以替換用戶)password '密碼'
4、創建用戶
登錄資料庫
在 create user '用戶'@’登錄地址’indentified by ’密碼’;
create user‘zhangsan‘@’localhost‘identified by ’123456‘;
create user‘lisi‘@’%‘identified by ’123456‘;
%代表僅遠程登錄
5、修改普通用戶密碼
修改當前用戶密碼:set password = password(“密碼”);
修改指定用戶密碼:set password for ’zhangsan‘@’localhost‘=passwd(“密碼”)
6、修改管理員密碼
service mysql stop 停掉mysql服務
修改主配置文件
vim /etc/my.cnf
添加skip-grant-tables
service mysql start 啟用資料庫
進入資料庫
強制覆蓋掉密碼並修改密碼
update mysql.user set passord=password('123')where user=’root‘;
將配置文件中的選項刪除
vim /etc/my.cof
刪除:skip-grant-tables
重啟資料庫服務
service mysql restart
登錄。測試
mysql -uroot -p123
三、資料庫的 增刪改查
1、查看
show databases;查看資料庫
use 資料庫名; 進入資料庫
show tables; 查看資料庫中的數據表
insert 插入
select * from 數據 你 表 查看指定數據表中的所有內容
select id from 數據表 查看指定數據表中的內容
select id,name from 數據表 查看指定數據表中的內容
describe 數據表 查看數據表結構
2、創建
命令:create database 庫名; 創建資料庫
create table 數據表名 (欄位1 屬性,欄位2 屬性,···,欄位n);
create table stu (id int, name chare(40));
int 代表整數(非字母)
char 代表字元數
unsigned代表不包含負數
not null 不能為空
null 可以為空
primary key(id)主鍵
insert(插入) into 數據表 values(插入值) (值1,值2.···,值N);
3、刪除
drop database 資料庫; 刪除資料庫
drop tablle 數據表; 刪除數據表
刪除數據:delete from 表名 where id=值N 刪除id第9行
delete from 表名 where 欄位 between 值1 and 值2;
4、插入數據
插入一行:insert into 表名 (name,age,info) values (‘a2’,22,’student‘)
插入多行:insert into 表名 (name,age,info) values (‘a2’,22,’student‘),(‘a3’,23,’student‘)
將一個表中的數據導入另一個數據
insert into stu2 (id,name)select id,name from stu;
5、修改
修改單行:update 表名 set age=26(欄位1=值1),info='dancer’(欄位2=值2) where id=9;(主鍵=值N)
修改多行:update 表名 set age=26(欄位1=值1),where 主鍵(id號)between(位於什麼之間) 值1 and 值2
alter 修改數據表
rename 改表名
modify 改屬性
change 改欄位
add 添加欄位
drop 刪除欄位
first、after 位置
格式:alter table 舊表名 rename 新表名;
格式:alter table 表名 modify name char(20) not null default ‘’;
格式:alter table 表名 change info information char(50)null;
格式:alter table 表名 add birth date; 添加欄位
格式:alter table * from drop 表名 刪除欄位
格式:alter table 表名 add birth date after id; (添加到id之後)
6、許可權
grant 授權 al 所有許可權 on 資料庫.數據表 to‘用戶’@‘地址’identified by ‘密碼’;
格式:grant all *.* to ‘'zhangsan'@localhost'identified by ‘密碼’;
revoke 取消許可權
revoke 取消的許可權1,取消的許可權2··· on 資料庫.數據表 from ‘用戶’@‘地址’ identified by ‘密碼’
revoke create(創建),drop(刪除) on *.* from ‘zhagnsan’@localhost‘;
取消張三用戶所以資料庫,數據表,創建,刪除的許可權
show grants for ’zhngsan‘@’localhost
MySQL備份
一、數據備份
1、類型
a、冷備份
關閉服務,備份數據
b、快照備份
LVM
c、邏輯備份(安裝mysqldump自帶)和物理備份
d、商業備份工具
2、mysqldump
備份:
mysqldump -uroot p 資料庫 > 備份文件
mysqldump -uroot p 資料庫 數據表 > 備份文件
mysqldump -uroot p --databases > 備份文件
還原:
mysql -uroot -p 資料庫 < 備份文件
mysql -uroot -p < 備份文件
3、musqlhotcopy
備份:
mysqlhotcopy --flusdhlog -u=‘root’-p=’123‘ --regexp=^jx backup
還原:
cp -rp /backup/* /var/lib/mysql/
4、總結
mysqlhotcopy是快速文件意義上的複製,而mysqldump是SQL語句是集合
mysqlhotcopy只能運行在當前主機,而mysqldump可以遠程操作(註意:備份結果還是保存在當前主機)
mysqlhotcopy僅適用於MyISAM引擎,而mysqldump支持MyISAM和InnoDB
二、日誌管理
1、查看日誌
命令:show global variables like ‘%log%’
2、錯誤日誌
作用: 記錄伺服器運行過程中的錯誤信息
伺服器啟動和關閉的信息
從伺服器啟動進程時產生的信息
查看:命令:show global variables like ‘%log_error% (錯誤日誌的路徑)
show global variables like ‘%log_warnings% (是否啟用錯誤日誌)
3、一般查詢日誌
作用:記錄用戶的查詢操作(預設關閉,在資料庫的配置文件打開)
general_log 是否啟動
general_log_file 日誌位置
log 全局日誌
log_output 記錄類型 file table nane
4、慢查詢日誌
slow_query_log 是否啟動慢查詢日誌
slow_query_log_file 日誌位置
long_query_time 時間設置
log—slow—queries=/var/mysql—slow.log
5、二進位日誌
作用:記錄更改資料庫狀態的操縱
log_bin 是否啟動
show binary; 正在使用的二進位文件
show binlog events in ‘mysqlbin.000001’查看二進位文件的內容
還原命令:
mysqlbinlog
——start—position
——stop—position
使用文件大小來還原
——start—datetime
——stop—datetime
使用文件時間來還原
例如:mysqlbinlog mysqlbinlog.000001 ——start—position 106 ——stop—position 264 | mysql -uroot -p123
列如:mysqlbinlog mysqlbinlog.000001 ——start—datetime ‘2020-04-29 17:59:53’——stop—datetime ‘2020-04-29 17:59:59’| musql -uroot -p123
6、事務日誌
7、中繼還原
(自己查詢)
資料庫信息同步 -多級配置
一、主從配置
作用:從伺服器提供備份
二、主主配置
作用:減輕伺服器的壓力,並且互為主從,進行備份
三、一主多從配置
作用:提供多台從伺服器進行備份
一、多主一從配置
作用:節省開支,僅通過一臺伺服器進行備份
二、讀寫分離
中間件(鏡像)
mysql proxy(官方,適合較少文件、支持讀寫分離)
atlas(支持讀寫,性能損耗大)
amoeba、cobar
一、概述
1、關係資料庫
2、nosql
全稱:mot only sql
非關係式資料庫
3、nosql的優勢
a、資料庫高併發讀寫的需求
b、海量數據的高效存儲和訪問
c、高擴展性和高可用性
d、其他
4、特點
易擴展
大數據量、高性能
靈活的數據模型
高可用
5、類型
memcache
Redis
mongoDB
hbase
cassandra
二、安裝配置
1、安裝
2、配置
基於鍵值(key)的存儲類型
3、數據類型
string 字元串類型
hash 散列
list 隊列
set 集合
zset 有序集合
三、數據操作
1、string
set 設置新建(創建) 如:set a 1
get 查看新建(查看) 如:get a
mset 批量設置新建(同時創建多個) mset a1 1 a2 2 a3 3
mget 批量查看新建 (同時查看多個) gmset a1 a2 a3
若值中間有空格加引號 set a1 ’zhang san‘
setnx 設置新建,若存在。則放棄:若不存在,則創建
getset V??VZ'x'cV?.xc?V.xcv.xc;'v,;'xc,v;lsv,;lsd,v;lsd,vsfld,lsd,fvd,fvds;,lvds,lv',lvf,vglf,vlf,dlv,fdl keys * 查看所有鍵
ttl 查看生存周期(存在時間),-1:表示鍵存在,但沒有設置生存周期
-2:表示鍵不存在
setex 設置生存周期 格式: setex 名 存在時間 值
setrange替換字元串 格式: setranfe 名 第幾個字元(第一個為0)替換值
append 追加字元串 格式: append 名 追加字元
strlen 查看字元串長度 格式:strlen 名
incr 增加1 格式 :incr 名 (每次加一)
decr 減1 格式 :decr 名 (每次減一)
incrby 增加指定數值 格式 :incrby 名 追加值
decrby 減少指定數值 格式 :decrby 名 減少值
2、hash 散列
hset 設置新建
hget 查看新建
hkeys 查看指定鍵對應的所有欄位
hmset 批量設置新建
hmget 批量查看新建
hexists 查看指定鍵是否存在
hsetnx 設置新建,若存在。則放棄:若不存在,則創建
hvals 查看指定鍵對應的所有值
hgetall 查看指定鍵對應的所有欄位和值
hdel 刪除指定欄位
hlen 查看指定鍵的欄位總數
3、list 隊列
lpush 添加隊列 格式:lpush 名 元素 (lpush l1 1 2 3 4 5 6 7)
lrange 顯隊列內容 格式:lrange l1 0 -1
llen 顯示隊列中的元素的個數 格式:llen l1
lset 替換隊列內容(通過位數) 格式:lsedt 位數 更改元素 (lset l1 2 a)
linsert 插入隊列內容(通過元素) 格式:linsert 名 before(插入)2 “hello”
lpop 刪除對列中的第一個元素 格式:lpop 隊列名
rpop 刪除對列中的最後一個元素 格式:rpop 隊列名
4、set 集合
sadd 創建集合 格式:sadd 名 數據 (sadd l1 1 2 3 )
smembers查看集合內容 格式:smembers 名 (smembers l1)
srandmember隨機抽取集合數據 格式:srandmember 名 (srandmember l1)
spop 隨機刪除 集合數據 格式:spop 名 (spop l1)
scrd 統計集合 中數據的個數 格式:scrd 名 (scrd l1)
sismember查看指定數據是否存在於集合中(返回值為1:存在 返回值為0:不存在)格式:sismember 名 數據 (sismember l1 2 )
sinter 查看交集 格式:sinter 名 名 (sinter s1 s2)
sdiff 查看差集
sunion 格式:suniontore
sinterstore查看交集並保存 格式:sinterstore 名 名 新名 (sinterstore s3 s1 s2)
sdiffstore 查看差集並保存
sunionstore查看並集並保存
5、zset有序集合
zadd 創建集合 格式:zadd 名 序號 值 (zadd 1 aa 2 bb 3 cc)
zrange 查看集合 (序號從小到大) 格式:zrange z1 0 -1 withscores
zrevrange查看集合(序號從大到小)格式:zrevrange z1 0 -1 withscores
zrangebyscore查找指定序號範圍內的元素 格式:zrangebyscore z1 2 5 withscores
zcount 查看指定序號範圍內的元素數目 格式:zcount z1 2 5
zcard 查看集合中的元素個數 格式:zcaed z1
zincrby 創建或增加序號 格式:zinceby z1 4 dd(重覆命令:增加序號)
zrank 返回指定元素的位數(序號從小到大)格式:zrank z1 dd
zrevrank返回指定元素的位數(序號從大到小)格式:zrevrank z1 dd
zrem 刪除指定元素 格式:zrem z1
6、其他
keys * 查看所有鍵
exists 查看指定鍵是否存在(存在唯1:不存在為0) 格式:exists 鍵
select 切換庫(0-15) 格式:select 庫名
move 移動鍵 至 指定庫 格式:move l1 2
type 查看指定鍵的類型 格式:type 鍵名
rename 重命名 格式:rename 舊名 新名
dbsize 統計當前所有鍵的數量
info 獲取伺服器配置信息
flushdb 刪除當前庫中所有鍵
flushall刪除所以庫中所有鍵
二、其他應用
1、改密碼
進入 vim redis.conf配置文件
391行 取消註釋
requirepass 密碼
auth 密碼 或 redis-cli -a 密碼
2、持久化存儲
進入 vim redis.conf配置文件
187行 dir 指定備份文件的位置(決定路徑)
3、主從配置
進入vim redis.conf配置文件
pidfile 指定進程文件的位置
port 指定埠號
dir 指定備份文件位置
slaveof 指定主伺服器的IP和埠
masterauth 指定主伺服器的認證信息
本文來自博客園,作者:zhaofahao,轉載請註明原文鏈接:https://www.cnblogs.com/zhaofahao/p/16599907.html