iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0

昨天,我們介紹了從開發到上線會經過的幾個執行環境,今天,讓我們一起來看看 Linux 是什麼,以及介紹幾個基本的指令吧 !

What is Linux ?

Linux 是一個開源且免費的操作系統,由 Linus Torvalds 在 1991 年根據 Unix 的原理設計的。也正因為 Linux 這個作業系統是開源的,讓這世界上的每一個人都能瀏覽核心的程式碼,並起參與修正與升級,致使 Linux 擁有非常廣大的社群。

剛才提到 Linux 是操作系統,意味著他擔任應用程式與硬體之間溝通的橋樑,在使用任何的應用程式時,皆需要作業系統的協助,而這一塊作業系統最底層的東西,又被稱為 Linux Kernel (Linux 核心)。

我們若想要去使用 Linux 系統,必然會需要一些軟體的協助,如命令行 (command line)、GUI 等,由於 Linux 是開源的,許多公司與非營利組織則會將 Linux Kernel 加上額外的軟體(通常包含一些工具和可運行的軟體),做成一個完整的操做系統,也就是 Linux distribution (俗稱發行版),而目前常見的發行版有 Debian、Ubuntu、Red Hat Enterprise Linux(RHEL)、CentOS、Fedora 等。

Why Linux ?

linux Logo
(取自 Red Hat 官網)

既然我們知道 Linux 是操作系統,那明明大家都是含著 Window 出生的(或是那顆蘋果),為何偏偏要使用 Linux 作為伺服器的作業系統呢 ? 這裡我整理了幾個目前主流使用 Linux 的原因:

  • 開源且免費
  • 具備廣大的社群
  • 穩定、可靠且安全

其實這三個理由也是相輔相成的,相較於 Windows Server,Linux 不用收費這一點能為公司節省很大的一筆成本,也因此更多企業用戶更偏向使用 Linux(當然 Windows Server 還是有一定的市場),而更多的用戶則能促使 Linux 的持續更新及維護,每當有 Vulnerability (具風險的漏洞) 被發現時,廣大的社群便會協助更新並修正,致使 Linux 成為一個穩定、可靠且安全的操作系統。

但俗話說防呆不防傻、大力出奇蹟,沒有什麼是傻子解決不了的問題,真正最大的漏洞其實在於人的操作上;在最近資安的顯學 "零信任架構" 就是建立在不相信內外網路的任何人事物之上。而本次鐵人賽的主要精神在於帶大家看過整個 DevOps 內會經過的步驟,則不深入探討關於資安的議題。

So Why Linux ???

到此,我們知道 Linux 因為免費好用又可靠,所以我們要學習它,而第二方面,DevOps 內的 Ops 環節幾乎都和伺服器環境相關,如昨天提到的 UAT、SIT 及 Production 環境,都常以 Linux 作為操作系統。再來,容器化得技術如 Docker 會運行在 Linux 系統上,到最後以 Kubernetes 優雅的調度資源與部署 container,全都會需要 Linux 的技術知識。

因此,我個人認為想要熟悉 DevOps 的學習途徑,其順序會包含以下幾點:

  1. 1 ~ 2 個熟悉的程式語言 (C、Java、Python 等)
  2. 熟悉網路協議與電腦底層知識
  3. Linux 操作系統 & 虛擬化作業 (VM)
  4. 容器化操作
  5. Kubernetes
  6. 雲原生的知識 (無止盡的學習與磨難)

Linux 基本指令

關於 Linux 其實還有非常多的基礎知識需要知道,如對於 User 權限的管理,檔案的權限操作等,礙於篇幅關係則不特別介紹,僅讓讀者以最少的操作就能讓 DevOps 流程運作;因此,我在這裡整理了幾個在後續搭建 Jenkins 以及調整參數時會常用到的指令,以便後續它出現時大家比較不會感到陌生。

#顯示當前的位置,應該是 print current/working directory 的縮寫
pwd
#移動到其他的目錄下,等同於我們在 Windows 點選其他的資料夾
cd 
#列舉目前資料夾下的檔案
ls
#詳細列舉目前資料夾下的檔案,包含讀寫執行的權限、建立的時間
ls -l
#更改檔案的時間戳記,如果沒有檔案,則會創立一個新的空檔案(通常是用來件檔案的)
touch
#刪除檔案或資料夾,若加上 -rf 會將資料夾內的檔案一起刪除
rm
#複製檔案
cp
#創建資料夾
mkdir
#印出檔案的內容
cat
#文字編輯器,是 Linux 必學的核心指令,讓使用者能夠打開並修改文件
vim

今日結語

今天,我們介紹了 Linux 以及一些常用的指令,而現在讓我們先一同進入時間的裂痕,培養一些基礎的知識,在後面幾天介紹完 Docker 之後,我們就會進入第四期的 Sprint,並手把手帶大家在 Linux 上操作及安裝要完成 CI/CD 的工具,並將專案部署到環境上面。

明天,我們開始介紹 Docker,當大家了解原理後,我們一起將後端的 spring boot 專案打包成 Jar 運行在 Linux 環境上(屆時我們把它叫做 SIT),並且比較以 Docker image 由 Container 運行時的差異。

Q3 開始每天都被工作追著跑,回家後又要努力擠出時間整理資料與發文,終於苟延殘喘到週末了,現在看到有人陸陸續續的完賽,以及前幾年大家的成果,每個人都是運用自己下班以及閒暇的時間整理與分享知識,真是不由得佩服起來。果然明年一定要預先準備內容,不然真的會每天壓線上傳! 最後祝大家周末愉快!

參考資料

學 Linux 鳥哥務必認識一下


上一篇
Day14: Dev 我都懂,那 Ops 呢? Git & 運行環境介紹
下一篇
Day16: Docker Container 簡介,從 Jar 到 Container (上)
系列文
一個人也能 DevOps ? 用 Angular + Spring Boot 演示專案由開發到部署30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言