# Linux與服務部署 --- ## Linux基本介紹 雖然現今的作業系統 都已經有完備的圖形介面可供便利操作 比較少人使用指令 但熟悉指令後 許多操作會變得相對簡潔有力 因此我們以Linux為主軸介紹指令的使用 --- ## Linux是什麼 ---- ### 作業系統簡介 **Operating System (作業系統)** 作業系統是電腦裡的系統程式 負責調度與分配硬體資源給需要的應用程式使用 ---- 而最常見的作業系統有 - Windows - MacOS - Linux ---- ### Windows 大家再熟悉不過的作業系統 大部分台灣人使用文書和遊玩遊戲都是用這套系統 由微軟開發 以完全的圖形操作介面聞名 ---- ### MacOS 第二多人使用的作業系統 由蘋果開發 介面優雅簡潔 通常用於文書和工作處理 比較少用於遊玩遊戲 ---- ### Linux 今天的主角 是由社群合力開發的作業系統 雖然一般使用者較少 但卻是伺服器系統的首選 > ![](https://i.imgur.com/gpz5ibj.png =125x) > Linux的吉祥物企鵝 ---- ### Linux Kernal Linux的本質是一個作業系統核心 意即只包含了最基本的功能 而 Linux 的核心當初由 *Linus Torvalds* 開發出來 並且將所有原始碼開放 讓所有人皆能自由修改使用 這也造成了後來 Linux 有各種變化版本。 ---- ### Linux Distribution Linux 發行版就是將核心加上搭配其他程式打包起來 變成使用者能夠自行安裝進電腦的形式 而各發行版的差別 最明顯的就是圖形介面 :::info 熱知識: Android就是為行動裝置開發的Linux發行版 ::: ---- ### 為什麼選用Linux 1. 免費 開源 2. 多個用戶 多個線程 多個任務 3. 高穩定性和高效性 4. 類Unix系統 ---- ### 要選擇哪一種Linux系統 Linux的系統有非常非常多種 有centOS、debian、Kali、Arch之類的很多很多 以系統完善和穩定度而言 許多公司行號會選擇Debian或同系的Ubuntu 筆者的電腦則是ArchLinux 以輕量化著名 --- ## 學習詠唱咒語: 跟Terminal互動 玩Linux指令的第一步 ~~是要先有這個系統~~ 是要先學會如何打指令跟系統溝通 ---- ### 終端機 終端機是一個純文字介面的程式 會提供Shell跟系統進行互動 而Shell能夠下指令 判斷你的指令意圖並告訴系統 ---- 在三大系統中 分別可以這樣開啟Terminal - Linux - Ctrl+Shift+T - 系統功能表->系統工具->終端機 - MacOS - 在啟動器裡面尋找「Terminal.app」 - Windows - 使用Windows Terminal開啟Powershell > 注意 CMD和Linux指令並不兼容 ---- ### 沒有Linux系統怎麼辦 - 魔改自己的電腦系統 - 使用虛擬機 - 使用虛擬雲 - 使用wsl - ~~買一台幫你裝好的新電腦~~ ---- ### Alwaysdata 本文會以這個平台進行示範 免付費註冊能夠給予100mb玩到爽的服務 並且提供網域可以監控服務 --- ## Linux常用指令 有了終端機之後就能打指令和系統互動了 ---- ### ssh 首先優先介紹這個 - 一種能和遠端伺服器互動的加密協定 ```shell= ssh user@domain ``` > [穿牆術補充](https://hackmd.io/@fanlan1210/S16xysoZ5#/) > @fanlan1210 ---- ### pwd - print working directory - 顯示目前你所在的位置 在終端機裡面通常會想做的第一件事 就是查詢目前所待的目錄位置 這行指令可以辦到這件事 ![](https://i.imgur.com/rxtx1Vd.png =480x) ---- ### ls - list - 列出資料夾裡的內容 - 預設列出你目前所在的資料夾 ```shell= ls ls <資料夾名稱> ls -a #列出隱藏內容 ls -l #列出詳細資料 ``` ![](https://i.imgur.com/IEDEM44.png =480x) ---- ### cd - change directory - 切換資料夾 ```shell= cd <資料夾位置> ``` ![](https://i.imgur.com/1Ey6OIj.png =480x) ---- ### 補充: 位置表示法 在表示位置中有兩種表示法 - 相對位置 - 絕對位置 ---- #### 絕對位置 - 台灣桃園市龜山區明路5號S棟5樓之13 絕對位置是從最初的起點一路表示到所在位置 像是我們現在的位置就可以表示成上面那樣 ---- #### 相對位置 - 銘傳大學AA棟隔壁那個S棟 相對位置可以是用目前所在位置作為參考 進一步去延伸想要表示的位置 就像是以一個現成的建築物去對照資訊大樓的位置 ---- 而在 Linux 裡面,這種比照方式就不是以 / 開頭,而會是`.`和`..`: - `.` 開頭: 目前所在的位置 - `..` 開頭: 目前所在的位置的上一層 ---- ### mkdir - make directory - 建立資料夾 ```shell= mkdir <新資料夾名稱> ``` ![](https://i.imgur.com/mdnnMXv.png =480x) ---- ### cp - copy - 複製檔案、資料夾 ```shell= cp <檔案名稱> <新檔案名稱> cp -R <資料夾名稱> <新資料夾名稱> ``` ---- ### nano/vim - 兩種文字編輯器 - vim用法 - `:w`: 儲存檔案 - `:q`: 離開檔案 ```shell= vim <文件名稱> ``` ---- ### cat - ~~貓~~ concatenate - 檢視檔案內容 ```shell= cat <檔案名稱1> <檔案名稱2> ...... ``` ![](https://i.imgur.com/VjT29Wk.png =480x) --- ## 注意 接下來要介紹的指令有一定操作風險 請小心使用 一不小心就會 bang ---- ### mv - move - 移動檔案或資料夾 - 更改名稱 - **覆蓋檔案** 如果移動的位置不變 就會有更改檔案名稱的作用 ```shell= mv <檔案名稱> <資料夾名稱> mv <原名稱> <新名稱> ``` :::danger 只是要注意如果新名稱已經存在 系統將不會警告 直接強制覆蓋掉 ::: ---- ### rm - remove - 刪除檔案或資料夾 - **不可逆** 不經過垃圾桶而直接將檔案或目錄移除 ```shell= rm <檔案名稱> rm -R <資料夾名稱> ``` ---- ### sudo - superuser do - 以管理員權限執行後者指令 ```shell= sudo <指令> ``` --- ## 服務部署 ---- 既然我們會基礎的linux操作了 是時候試試在linux環境下架設一個屬於我們自己的服務吧 --- ### npm - node package manager node.js自帶的套件管理器 > windows系統底下可以[在這邊](https://nodejs.org/en/)下載 ```shell= npm install <package> #安裝套件 npm install #安裝package.json中寫好的套件 ``` ---- ### node_module - 裡面存放著nodejs專案所需的各種library - 超級肥 ![](https://i.imgur.com/XSqE10D.png =480x) ---- ### run nodejs的服務可以透過`node`指令執行檔案 或者各個npm套件有各自可以run的腳本 ```shell= node app.js npm run server ```
{"metaMigratedAt":"2023-06-17T15:35:25.415Z","metaMigratedFrom":"YAML","title":"Linux與服務部署","breaks":true,"slideOptions":"{\"transition\":\"fade\"}","contributors":"[{\"id\":\"89d78a69-e84b-4f53-afd3-e1b33bfd1903\",\"add\":3840,\"del\":95}]","showTags":"true"}
    269 views