利用WireShark進行DNS協議分析
01
准備工作
系統是Windows 8.1Pro
分析工具是WireShark1.10.8 Stable Version
使用系統Ping命令發送ICMP報文.
02
開始工作
打開CMD.exe鍵入:
ping
將自動進行域名解析,默認發送4個ICMP報文.
啓動Wireshark,選擇一個有效網卡,啓動抓包.
在控制台回車執行完畢後停止監控.
03
分析階段
截獲的所有報文如下:
總得來看有兩個DNS包(一次域名解析),和8個ICMP包(四次ping)
下面開始分析DNS的工作過程:
打開第一個包:
可以發現DNS爲應用層協議,下層傳輸層采用UDP,再下層網絡層是IP協議,然後是數據鏈路層的以太網幀.
需要關注的是應用層的實現也即DNS協議本身.
在此之前,可以從下層獲得一些必要信息:
UDP(User Datagram Protocol)报文中:DNS的目的端口(Dst Port)是53
IPv4(Internet Protocol Version 4)报文中目的IP是192.168.1.1(局域网路由器)
由于IP报文在网络层进行路由选择,他会依次送给路由器而不是直接送给DNS服務器,这一点也十分容易理解,
第一個包是请求包,不可能直接包含DNS服務器地址.
展開DNS數據:
第一個是Transaction ID为标识字段,2字节,用于辨别DNS应答报文是哪个请求报文的响应.
第二個是Flags標志字段,2字節,每一位的含義不同。
QR: 查询/响应,1为响应,0为查询
Opcode: 查询或响应类型,这里0表示标准,1表示反向,2表示服務器状态请求
AA: 授权回答,在响应报文中有效,待会儿再看
TC: 截断,1表示超过512字节并已被截断,0表示没有发生截断
RD: 是否希望得到递归回答
RA: 响应报文中为1表示得到递归响应
zero: 全0保留字段
rcode: 返回码,在响应报文中,各取值的含义:
0 - 无差错
1 - 格式错误
2 - 域名服務器出现错误
3 - 域参照问题
4 - 查询类型不支持
5 - 被禁止
6 ~ 15 保留
緊接著標志位的是
Quetions(問題數),2字節,通常爲1
Answer RRs(資源记录数),Authority RRs(授权資源记录数),Additional RRs(额外資源记录数)通常为0
字段Queries为查询或者响应的正文部分,分为Name Type Class
Name(查詢名稱):這裏是ping後的參數,不定長度以0結束
Type(查詢類型):2字節,這裏是主機A記錄.其各個取值的含義如下:
值 助记符 说明
1 A IPv4地址。
2 NS 名字服務器。
5 CNAME 规范名称。定义主機的正式名字的别名。
6 SOA 开始授权。标记一個区的开始。
11 WKS 熟知服務。定义主機提供的网络服務。
12 PTR 指针。把IP地址转化为域名。
13 HINFO 主機信息。给出主機使用的硬件和操作系統的表述。
15 MX 邮件交换。把邮件改变路由送到邮件服務器。
28 AAAA IPv6地址。
252 AXFR 传送整个区的请求。
255 ANY 对所有记录的请求。
Class(類):2字節,IN表示Internet數據,通常爲1
下面是截獲的第二個DNS包:
可以看到和第一個請求包相比,響應包多出了一個Answers字段,同時Flags字段每一位都有定義.
关注一下Flags中Answer RRs 为4 说明对应的Answers字段中将会出现4项解析结果.
Answers字段可以看成一個List,集合中每项为一個資源记录,除了上面提到过的Name,Type,Class之外,还有Time toLive,Data length,Addr.
Time to Live(生存时间TTL):表示该資源记录的生命周期,从取出记录到抹掉记录缓存的时间,以秒为单位.这里是0x00 00 00 fd 合计253s.
Data length(資源數據长度):以字节为单位,这里的4表示IP地址的长度为4字节.也就是下面Addr字段的长度.
Addr(資源數據): 返回的IP地址,就是我们想要的结果.
可以发现有4条資源记录,4个不同的IP地址,说明域名 对应有4个IP地址,分别是:
112.124.5.74
219.136.249.194
61.145.122.155
121.9.213.124
CMD中顯示的是第一條IP地址.我試了下直接訪問上面各個地址的80端口(http),
第一個和第二个显示403 Forbidden
第三个和第四个显示404 Not Found
还有每个地址哦Server都不一样oscali,oscdb,liubc,ep2,第一個像阿里云服務器,第二个看起来像數據库的服務器,其他就不知道了...
Web服務器貌似是Tengine,不知道为什么通过IP地址无法直接访问web站点,以后感兴趣再研究下哈哈!
最新的視頻監控系統技術要求
点击蓝字 关注我们 设为:星标。优质文章,极速送达!
前言
大家好,我是薛哥。最近VIP会员群的读者咨询最新的視頻監控系統技術要求,今天分享一套,可以直接使用。
此套完整的word方案,VIP會員有需求的可以直接私信我,下載!
非會員也可以進入我的知識星球進行下載,點擊掃碼進入就可以了。
想要下載弱電精品資料的,可以掃碼加入!
終將渡過成長的海
01
正文
视频安防监控系統 系統概述
1、系統采用全數字系統結構,前端采用高清IP攝像機,由弱電井UPS/強電應急回路供電;後端設置視頻管理平台;後端顯示部分采用LCD拼接屏;後端存儲采用磁盤陣列,儲存容量應滿足31天、24小時/天實時動態錄像的要求。
2、所有攝像點能同時錄像,通過網絡接至存儲設備進行存儲,存儲時間31天(按D1存儲格式),並可隨時提供調閱及快速檢索,圖像應包含攝像機機位、日期、時間等。
3、數字視頻綜合平台視頻輸出信號采用DVI、HDMI方式接入顯示設備。
4、系統服務器与存储设备设于地下一层网络机房、系統工作站及监控液晶拼接屏设于1栋半地下一层消防兼安防控制室;预留与上一级通讯的接口。
5、攝像機設置原則:
序號
業態
監控區域
攝像機類型
技術要求
商業
主要出入口
帶分析功能型攝像機
1080P、壁挂安裝
商業公共走廊及电梯厅
半球攝像機
1080P、吸頂安裝
廣場
智能球型摄像机、半球攝像機
1080P、吸頂安裝
電梯轎廂
電梯專用攝像機
1080P、吸頂安裝
服務台、收費處
半球攝像機(带拾音)
1080P、吸頂安裝
辦公
大堂及電梯廳
智能球型摄像机、半球攝像機
1080P、吸頂安裝
電梯轎廂
電梯專用攝像機
1080P、吸頂安裝
每層公共走廊及電梯廳
半球攝像機(吊顶)、低照度槍型攝像機(无吊顶)
1080P、壁挂/吸頂安裝
頂層出入口
低照度槍型攝像機
1080P、吸頂安裝
公寓
大堂及電梯廳
半球攝像機
1080P、吸頂安裝
電梯轎廂
電梯專用攝像機
1080P、吸頂安裝
頂層出入口
低照度槍型攝像機
1080P、吸頂安裝
地下室
車庫出入口、車庫車道、卸貨區、車庫收費處攝像機增加拾音功能
半球攝像機(吊顶)、低照度槍型攝像機(无吊顶)
1080P、壁挂/吸頂安裝
地下室樓梯處入口、重要設備房通道
半球攝像機(吊顶)、低照度槍型攝像機(无吊顶)
1080P、壁挂/吸頂安裝
重要機房(配電房、生活水泵房、制冷機房等)
低照度槍型攝像機(无吊顶)
1080P、壁挂安裝
消防控制室、IT網絡機房
半球攝像機
1080P、吸頂安裝
後勤通道、員工通道等
半球攝像機(吊顶)、低照度槍型攝像機(无吊顶)
1080P、壁挂/吸頂安裝
系統功能要求
1、基本功能
智能网络视频监控子系統是针对大规模系統组网、多级别管理远程聯網、安防系統无缝集成环境下的分布式集散型管理平台。智能网络视频监控子系統应该是能够实现远程聯網多级管理,面向数字化、网络化、智能化、联动化和高度集成管理的综合性平台,以满足高可靠性、灵活性和可扩性的安全防范管理需求,应该适合于在大型组网、多级管理的分布式环境下对视频编解码器或网络嵌入式存储服務器实现集中监控与管理。
2、存储服務器功能
系統保证系統稳定运行,无病毒侵入,充分满足稳定录像的要求。服務器可接入多路数字视频信号,支持高清数字信号输入,并支持高清数字信号输出,满足系統的前端兼容性及未来高清系統扩展的需要。服務器可选择多种分辨率及实时帧数,该服務器自带不少于16个硬盘插槽,支持热插拔功能,并可外接磁盘阵列,保证至少31天的有效录像记录。可以通过服務器的前面板、IE客户端、管理平台等方式,对嵌入式存储服務器进行操作及管理,包括前端球机的控制操作,多画面切换及轮巡等设置。所有录像资料可通过多途径方便查询及下载。投标人必须提供存储容量計算公式。
3、系統配置管理
智能网络视频监控子系統应该能够通过WEB方式对數據库服務器进行访问,形成完整的WEB配置管理中心。可以对整个智能网络视频监控子系統的组织结构、设备进行配置管理。
4、系統故障維護管理功能
智能網絡視頻監控子系統應該可以提供多種方式來實現綜合安防系統(包括所有集成系統)終端設備維護管理。
1)操作人員應該能夠可以通過智能網絡視頻監控子系統的電子地圖客戶端的圖形化界面,集中監控中央級以及終端設備的通信狀態、運行狀態及故障情況。當出現狀態變化或故障時,電子地圖上的相關圖標會以閃爍的方式提醒操作員。同時,操作人員應該能夠依照報警類型的報警事件級別,來指定相關類型報警時圖標的顔色。當一台終端設備具有多個狀態或故障時,操作員可以操作圖表激活設備報警事件列表,以准確、完整、快速的對多種報警事件進行處理。在狀態變化後,圖表可以及時更新狀態信息,更新的時間不大于5秒。
2)操作人員應該可以依據時間、設備地點、設備名稱、設備類別、報警事件級別、動作類型等多種過濾條件來查詢相關的報警和事件信息,返回的查詢信息中應該包含報警和事件的狀態及故障信息應包括時間、設備地點、設備名稱、設備類別、報警事件級別、動作類型等。
5、分布式身份認證功能
智能網絡視頻監控子系統是針對大規模組網、多級管理聯網環境下的分布式系統。是一套監控和管理不同類型數字視頻虛擬矩陣、數字化視頻存儲、防範報警系統、門禁及通道管理的綜合性管理專業聯網平台軟件。
6、矢量電子地圖功能
智能網絡視頻監控子系統針對的是具有占地面積廣、設備布點分散特點的中大型系統,如果采用傳統的位圖電子地圖的方式,則由于位圖的原理,只能局部反映項目的部分地點和部分設備的實時狀況,因此,應該采用標量電子地圖與矢量電子地圖結合的方式來對系統進行監控和操作。智能網絡視頻監控子系統一方面應該能夠支持JPG、BMP、TIF等多種不同格式的固定圖片,實現平面地圖的多級鏈接管理方式;另一方面,還應支持Autocad、SHAPE格式的矢量電子地圖,操作員可以根據自己的需要,隨時對電子地圖進行縮小、放大和旋轉操作,此時地圖的效果不會失真。以滿足用戶高效、快速、准確地精確定位事故現場,提供地理位置信息,便于對應急事件的響應。
7、實時視頻監控功能
智能網絡視頻監控子系統應該能夠通過視頻管理客戶端、電子地圖客戶端等多種形式來實現實時視頻的監控目的。可以人工選擇閉路電視監控系統攝像機圖像或報警聯動顯示相應區域攝像機圖像,以及對攝像機進行操作控制,包括控制參數設置、預置位設置、攝像頭特殊參數設置、鏡頭控制、雲台勻速與變速控制等。還可對錄像進行存儲管理,通過時間、攝像頭編號、事件等信息進行錄像檢索和回放控制。視頻客戶端至少應該且不限于以下功能:
1)視頻列表管理
視頻列表以文件夾的形式存放用戶關注的視頻對象。每一個文件夾應該能夠支持16個視頻對象,且文件夾內部可以嵌套若幹文件夾;一個文件夾代表一個用戶關注的對象集合,這個集合在視頻播放窗口區有特定的擺放位置。
2)播放視頻;
3)視頻環繞:顯示重要區域和周邊12個關聯區域的圖像
4)替換視頻:主攝像機故障,備用攝像機接替監視任務
5)拖拽視頻;
6)添加視頻;
7)查找視頻。
8)實時監控
9)播放窗口:視頻播放窗口應有狀態顯示燈,以指示各個圖像的運行狀態;
10)視頻交換窗口;
11)全屏方式顯示;
12)報警列表信息;
13)報警視頻播放;
14)報警日志管理;
15)多畫面預覽:分爲1*1、2*2、3*3、4*4模式以及多種特殊畫面模式;
16)視頻集合對象添加和保存;
17)屏幕文字設置;
18)雲台快球控制;
19)視頻參數調整;
20)模擬信號上大屏的矩陣切換控制。
21)支持虛擬矩陣功能
通過分控鍵盤或者系統管理工作站可以將系統內的任何一個攝像機調用到系統內任何一個模擬輸出端口顯示設備或網絡多媒體工作站上顯示,並能操作控制畫面。
22)錄像查詢
錄像查找應包括按時間查找錄像、按事件查找錄像、多路曆史視頻查找等功能:
a.按時間查找;
b.按事件查找;
c.多路視頻查詢;
d.錄像資源下載。
可以從實時圖像監控快速切換到同一監控點的錄像回放界面,操作動作不多于2步;並提供錄像的時間軸,拖動時間軸能迅速定位到任意時間的錄像。
可以即時回放實現30秒鍾內的視頻錄像回放。
能同時查看多路同一時間的錄像回放,拖動時間軸時多路錄像能同時定位到任意時間的錄像。
可以對錄像中的關鍵點進行標注,可以通過標注標題、標注內容、標注時間等進行精確查詢和模糊查詢、可以從查詢結果中直接觀看已經標注的錄像。
可以把一段時間內的同一路視頻按照1分鍾、2分鍾、10分鍾、30分鍾、1小時、2小時、6小時、12小時、24小時切割成多個視頻片段視頻浏覽。
8、集中報警功能
智能網絡視頻監控子系統的客戶端(視頻管理客戶端和電子地圖客戶端)應可以通過列表報警和電子地圖圖形化顯示兩種形式來實現報警的集中顯示、定位和統一處理功能;可根據報警類型靈活的自主定義報警事件級別,報警事件級別應可分爲99級。
1)智能網絡視頻監控子系統應可以按時間、人員、設備類型、報警事件級別、設備名稱、設備地點等多種過濾條件來查詢報警和事件資料。具備分類信息檢索功能,並可以提供自定義的按時間分類或事件分類等不同分類方式的報表。
2)集散控制體系架構:
3)訪問權限設置支持多達255個級別的權限設置,不同用戶權限分明,可嚴格授權敏感區域圖像訪問,並記錄用戶訪問曆史
4)多級別多站點:支持遠程聯網管理,中心和站點也可各自獨立運行
最新精品資料介紹
最近發布了2022年下半年(到12月31號)的公衆號文章。裏面有方案,有圖片,基本涵蓋了智能化弱電行業的各個系統的文章,而且還送18套精品資料,每一篇都帶著題目,方便大家查找相關內容。比如搜索視頻監控方面的資料。此資料非常適合新人學習,尤其沒有時間、又不知道怎麽搜索資料的,全文件共計4000多個,建議弄一套,絕對有幫助!
文章中的PPT方案,全部贈送了,共計262個PPT,6套完整圖紙,253個行業標准規範及施工圖集,word的方案60個,施工組織設計20個,工程量清單20個,圖紙及素材88個,VISIO圖塊及拓撲圖52個,項目管理及施工方案,實用性excel表格41個,投標方案及施工組織設計等等。
相關內容可以點擊下面的鏈接查看
薛哥總結:
如果您需要2022年的上半年文章,可以查看以下鏈接:
如果您需要2021年的下半年文章,可以查看以下鏈接:
弱電資料免費送,需要的點下面的鏈接
好的文章分享出去,分享是一種美德,幫助別人就是幫助自己
如果您在學習弱電行業知識的時遇到問題,不能解決的時候,可以咨詢我!我願意爲那些剛入行的人提供一點幫助。歡迎大家加我的QQ號81113907或者微信ruodianxuege
弱電成長俱樂部(VIP群)6群正在招募會員,已經有2500名精英加入我們,歡迎弱電工作者加入!現在入群可以獲得精品資料,和2500人脈資源。
我們的宗旨就是分享知識,共享資源,合作共贏,共同成長!
具體詳情點擊下面的鏈接:
一篇从购买服務器到部署博客代码的详细教程
买服務器
因为个人的工作经历,选择了阿里云服務器,我们直接买个云服務器 ECS,所谓 ECS 服務器,直接引用官方的介绍:
云服務器ECS(Elastic Compute Service)是一种简单高效、处理能力可弹性伸缩的計算服務。帮助您构建更稳定、安全的應用,提升运维效率,降低IT成本,使您更专注于核心业务创新。
爲了簡單起見,直接一鍵購買[4]:
地域、鏡像、網絡類型等我直接選擇了默認。
考虑到一开始也没有什么人访问,網站完全是静态的,即便买了,以后还可以升降配置,实例规格我选择了 1 vCPU 1 GiB 。
公網帶寬付費方式
在公網帶寬這裏,有兩種付費方式,一種是按固定帶寬,一種是按使用流量。
所谓按固定带宽,先付费后使用,如果用户选择 10M 带宽,阿里云就会划分 10M 独享带宽给用户,官方建议适用于业务场景对于网络带宽要求比较稳定的客户,也就是说你的页面流量比较稳定,选择固定带宽会更合适一些。
而所謂按使用流量,先使用後付費,根據具體使用的流量計費,每小時扣費,官方建議適用于業務場景對網絡帶寬需求變化較大的場景,如平時帶寬使用較低但間歇性的出現網絡訪問高峰的場景。
帶寬選擇
如果你使用固定帶寬模式,那麽選擇多少帶寬是合適的呢,我們不妨大致的算一下:
所謂網絡帶寬是指在單位時間(一般指的是1秒鍾)內能傳輸的數據量。網絡和高速公路類似,帶寬越大,就類似高速公路的車道越多,其通行能力越強,簡單的來說,帶寬越大,網站的訪問速度越快。
而 1M 带宽对应的下载峰值就是 128KB/S,这是因为云厂商提供的云服務器带宽的单位是 bit(比特),我们通常说的 1M 完整写法其实是 1Mb/s,注意这其中的 b 是小写的。而用户下载速度使用的单位是 Byte(字节),1Byte(字节)= 8bit(比特),所以 1Mb = 1/8MB = 0.125MB,我们知道 1MB = 1024KB,所以 1Mb = 0.125MB = 128KB,当然你也可以这样换算:
1Mbit/s = 1024kbit/s = 1024/8(KByte/s) = 128(KByte/s)
总之带宽是下载速度的 8 倍,1M 带宽对应下载速度是 128KB/s,2M 对应 256KB/s,4M 对应 512KB/s,依此类推。
那我们的页面的資源大小是多少呢?我们可以在浏览器的 NetWorks 选项中查看页面的总資源大小,这里以我搭建的 TypeScript 学习站点[5]为例,打开开发工具查看:
我们可以看到已传输的資源大小为 443kB,所选資源大小为 852kB,之所以会有差别,是因为服務器和浏览器传输的數據是可以被压缩的,就比如 gzip 压缩。
当客户端和服務端握手的时候,客户端会告诉服務端是否支持压缩,如果服務端开启了压缩,且客户端支持压缩,便会将压缩后的數據传输过去,客户端再进行解压操作,我们可以在 headers 的 content-encoding 中查看压缩方式:
那这里实际传输的大小,就是 443kB,如果我们希望用户能够在 1s 之内就打开我们的網站,我们至少需要 443 / 128 = 3.46 M 的带宽,当然这样算,非常的粗糙,用户的带宽、CDN 优化等等都没有考虑进去,所以就是这么随便一算,如果优化做的好,即便只有 1M 带宽,也可以带来不错的效果。
如果我们 4M 的固定带宽买 1 个月,这里给的价格是 155.60 元。
但如果我们使用按流量付费,如果 4M 每秒都跑满(每秒都有很多人访问),总共的流量为:4 * 128KB/S * 86400 = 11059200KB = 42.1875GB,按照¥0.800/GB 的价格算,每天是大概是 33 元,一個月大概是 1000 元左右,这也就是为什么,如果你的流量比较稳定,会建议使用固定带宽。
那我们再算一個例子,如果我的網站每天有 1000 PV,假设他们打开了首頁就撤了,大概产生的流量为 1000 * 443KB = 0.42GB,每天的费用为 3 毛钱,一個月大概是 9 元。
考虑刚开始也没有什么流量,这里我选择了按使用流量计费,并设置了最大网络带宽为 25M,之所以设置最大网络带宽,是考虑到突然爆发的流量产生较高的费用,我们指定容许的最大网络带宽进行一点限制。
1. 重置实例登陆密码
如果是一鍵購買,我們應該會看到這樣一則提示:
在购买后,我们根据这个页面[6] 的操作示例,重置一下密码,否则我们无法登陆服務器。
2. 配置安全组
我们知道,当我们使用 HTTP 协议访问網站的时候,默认监听的是 80 端口,但阿里云服務器默认關閉 80 端口,为了能支持 HTTP 访问,我们登陆云服務器 ECS 管理后台,选择安全组,再点击第一個安全组:
点击手动添加,添加 80 端口,添加完的效果如下:
3. 登陆实例1. ssh 登陆
#?语法:ssh root@<实例的固定公网IP或EIP>
#?示例:
ssh?root@47.99.XX.XX
#?輸入實例登錄密碼
#?如果出现 Welcome to Alibaba Cloud Elastic Compute Service ! 表示成功连接到实例。
登陸後如果我們一段時間沒有操作,再操作的時候就會需要重新登陸,又要輸入一次密碼,爲了能夠自動登陸,我們需要:
#?在本地起一個終端,獲取本地公鑰
cat?~/.ssh/id_rsa.pub
#?登陆服務器,将获取的公钥写入服務器的?authorized_keys
echo?"這裏修改爲你的公鑰內容"?>>?~/.ssh/authorized_keys
这样我们再次登陆的时候就不需要输入密码了。注意,我们写入的是 ~ 目录里,这就意味着如果我们切换了用户,是需要再按照这个方式配置一遍的。
2. 控制台进入
我们登录ECS管理控制台[7],可以看到我们的服務器实例,点击远程连接:
点击 立即登陆,跳转到 [8],输入密码,即可登陆进去。
当然登陆进去的方式还有很多,可以点击云服務器 ECS 文档[9]查看更多方式。
4. 安裝 NginxNginx 介绍
Nginx是一款轻量级的网页服務器、反向代理服務器。相较于Apache、lighttpd具有占有内存少,稳定性高等优势。它最常的用途是提供反向代理服務。
安裝和啓用
#?安裝
yum?install?-y?nginx
#?啓用?Nginx
systemctl?start?nginx
#?設置爲在系統啓動時自動啓動
systemctl?enable?nginx
效果是:
此时我们在浏览器中输入服務器的 IP,如果看到下面这样的页面提示,说明启用成功:
創建測試文件
我们创建一個用于测试的 index.html 文件,放在 /home/www/website/ 目录下
#?創建目錄
mkdir?-p?/home/www/website
#?進入目錄
cd?/home/www/website
#?創建文件
touch?index.html
#?寫入內容
echo?'Hello?World! 铃原爱蜜莉的视频哪里可以看
Hello?World!'?>?index.html
修改配置文件
#?進入配置文件目錄
cd?/etc/nginx
#?修改配置文件內容
vim?nginx.conf
在 location / {} 中添加内容,使得访问首頁的时候,会返回刚才创建的文件:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
# 这里是添加的内容
location / {
root /home/www/website/;
index index.html;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
保存退出修改後,重新加載配置文件:
#?重新加載配置文件
systemctl?reload?nginx
此时我们打开浏览器输入服務器,IP,就可以看到配置生效了:
至此,我们完成了 Nginx 的基本配置,接下来,我们将博客仓库代码上传到服務器上,再修改 Nginx 配置指向仓库中的代码即可。
5. 安裝 Git安裝
yum?install?git
创建 git 用户
这里我们思考一個问题,观察 Github Clone 时的 SSH 地址,这里以我的博客仓库地址为例:
为什么这个 SSH 地址是以 开头呢?
在 《一份前端够用的 Linux 命令》[10]中,我们讲到了 ssh 的语法为:
ssh?[USER@]HOSTNAME
我们可以发现,其实这里是以 git 用户的身份登陆了 。
我们也效仿这种方式,创建一個 git 用户管理远程仓库。具体的操作在 《一份前端够用的 Linux 命令》[11]中也有讲过,这里简要写一下:
#?添加一個名爲?git?的用戶
adduser?git
#?設置?git?用戶的密碼
passwd?git
#?提權
sudo?visudo
#?在文件裏寫入
git?ALL=(ALL:ALL)?ALL
#?保存提出,然後切換到?git?用戶
su?git
git 用户免登
如果我们现在使用 git 用户登陆服務器:
ssh?-v?git@8.141.xxx.xxx
我們依然需要輸入密碼,爲了免登錄,我們需要再做一遍相同的操作:
#?進入用戶主目錄
cd?~
#?創建?.ssh?目錄
mkdir?.ssh?&&?cd?.ssh
#?創建?authorized_keys?文件
touch?authorized_keys
#?在本地起一個終端,獲取本地公鑰
cat?~/.ssh/id_rsa.pub
#?登陆服務器,将获取的公钥写入服務器的?authorized_keys
echo?"這裏修改爲你的公鑰內容"?>>?~/.ssh/authorized_keys
#?給相關文件添加執行權限
chmod?600?~/.ssh/authorized_keys
chmod?700?~/.ssh
此时,我们再以 git 用户登入服務器,就可以直接登陆。
創建遠程倉庫
#?進入代碼倉庫目錄
cd?/home/www/website
#?賦予?git?用戶權限
sudo?chown?git:git?/home/www/website
#?創建代碼目錄
mkdir?ts.git
#?進入代碼目錄
cd?ts.git
#?初始化
git?init?--bare?.
至此,我们生成了一個远程仓库地址,它的 SSH 地址是:
git@8.141.152.253:/home/www/website/ts.git
这里我们使用 git init --bare 初始化仓库,它与我们常使用的 git init 初始化的仓库不一样,你可以理解为它专门用来創建遠程倉庫,这种仓库只包括 git 版本控制相关的文件,不含项目源文件,所以我们需要借助一個 hooks,在有代码提交到该仓库的时候,将提交的代码迁移到其他目录,这里我们在 ts.git 同级目录下创建了一個 ts 文件夹,用于存放提交的源代码文件:
#?進入?hooks?目錄
cd?hooks
#?創建並編輯?post-receive?文件
vim?post-receive
#?這裏是?post-receive?寫入的內容
#!/bin/bash
git?--work-tree=/home/www/website/ts?checkout?-f
#?賦予執行權限
chmod?+x?post-receive
#?退出目錄到?ts.git?同級目錄並創建文件
cd?../../?&&?mkdir?ts
push 代码到服務器
在 《一篇带你用 VuePress + Github Pages 搭建博客》[12]中,我们为了方便提交代码,写了一個 deploy.sh 的脚本,现在修改脚本文件:
git?push?-f?git@8.141.152.253:/home/www/website/ts.git?master
執行腳本
sh?deploy.sh
执行完毕后,我们可以在 ts 文件夹里查看到提交的代码:
6. 修改 Nginx 配置
现在代码已经上传上去了,我们需要修改 Nginx 的配置,让用户访问首頁的时候能指向到 index.html 文件。
#?修改配置文件
cd?/etc/nginx
#?拿到權限
sudo?chown?git:git?nginx.conf
#?編輯配置文件
vim?nginx.conf
#?這裏是修改的內容
location?/?{
?alias?/home/www/website/ts/;
?index?index.html;
}
#?重新加載?nginx?配置文件
sudo?systemctl?reload?nginx
此时,我们在浏览器中输入服務器的 IP 地址,发现已经可以访问到我们的页面,但就是样式错乱了,我们查看一下请求,会发现请求的地址都是 learn-typescript 开头:
learn-typescript 是我们设置的 baseurl,我们可以修改 baseurl,或者我们直接再加一個 nginx 配置:
location ^~ /learn-typescript/ {
alias /home/www/website/ts/;
}
修改完不要忘記執行這句,配置才會生效:
sudo?systemctl?reload?nginx
此時我們再刷新下頁面,就可以樣式恢複正常了。
至此,我们完成了博客的搭建,最终的访问地址是:[13],这将会是中国最好的 TypeScript 入门教程之一。
參考資料
[1]
《一篇带你用 VuePress + Github Pages 搭建博客》:
[2]
《一篇教你代码同步 Github 和 Gitee》:
[3]
《Gitee 如何自动部署 Pages?还是用 GitHub Actions!》:
[4]
直接一键购买: #/simple
[5]
TypeScript 学习站点:
[7]
ECS管理控制台:
[9]
云服務器 ECS 文档:
[10]
《一份前端够用的 Linux 命令》:
相關閱讀:
1、DNS服務器解析域名查询IP地址原理
2、如何設置默認dns?,如何設置默認DNS?詳細步驟解析
3、如何刷新dns解析?,DNS解析刷新方法指南
4、搭建一個DNS服務器,轻松实现域名解析内容分发,访问速度提高N倍
5、如何修改備用dns?,如何更改備用DNS設置?
還沒有評論,來說兩句吧...