# linux伺服器架設系統筆記 >111010536 資工二 林家成 [TOC] ## 9/12 (ssh) 設定主機名稱 ![image](https://hackmd.io/_uploads/rkgzbr1v6.png) 檢查是否安裝 SSH ![image](https://hackmd.io/_uploads/rkRzzHyPp.png) yum install openssh-server => 下載ssh ![image](https://hackmd.io/_uploads/BJQEMr1Pp.png) 套件管理與操控 ![image](https://hackmd.io/_uploads/BJET7SyDT.png) 前三個固定,第四個號碼不動 ![image](https://hackmd.io/_uploads/H16c4Hkv6.png) 手動固定主機ip ![image](https://hackmd.io/_uploads/r1GSHrkw6.png) **之後一定要turn off 在 turn on !!** ![image](https://hackmd.io/_uploads/Bk445BJDa.png) ## 9/19 (ssh遠端連線) virtualbox box **要開兩張** nat hosyonly 網際網路通訊 連其他主機 (**其他虛擬機 或 自己 windows**) nat **10.0** 開頭 ![](https://hackmd.io/_uploads/BkFx8nUyT.png) host **192.168** 開頭 ![](https://hackmd.io/_uploads/BkuWLhLyT.png) vmware 只需一張nat就足夠跟網路上做通訊 ssh server => **設在22port** tcp通訊協定 => **主要用來遠端登入** hostnamectl set-hostname [要該名稱] => 更改伺服器名稱 ### 檢查是否能 sshd 連線 (例如 putty(別用198.168.1.1登入) 和 winscp) 考 無密碼登入 ![](https://hackmd.io/_uploads/S1SVj2Iya.png) 1. 有沒有在預設的port上 ![image](https://hackmd.io/_uploads/rkELm9Jva.png) 2. 檢查伺服器是否有開啟 systemctl status sshd => 查看有沒有開啟 3. 檢查selinux 要等於disable 執行reboot (0.0.0.0 代表任意介面) ![](https://hackmd.io/_uploads/BkSe22Uya.png) ![](https://hackmd.io/_uploads/H18y22Lka.png) 4. 檢查防火牆 systemctl stop firewalld => 要關閉防火牆 成功如下 => winscp 能複製檔案到另一台主機 ![image](https://hackmd.io/_uploads/ry0XFc1wp.png) ### 使用網域名稱互 ping gedit /etc/hosts => 圈起來為另一個主機名稱 ![1](https://hackmd.io/_uploads/H1Ye1i1PT.jpg) 成功如下 => ![1](https://hackmd.io/_uploads/S1odyskPT.jpg) ### ssh 有密碼登入 接著上一個的設定 ![1](https://hackmd.io/_uploads/S1lOgo1va.jpg) exit 登出帳號 => ![1](https://hackmd.io/_uploads/HkPzWikvp.jpg) ### 期末考 無密碼遠端登入其他主機 **要先 gedit /etc/hosts 新增主機名稱如上 !!** 先檢查有沒有.ssh檔 ![image](https://hackmd.io/_uploads/S1CyXLlwT.png) 接著要創建公鑰和私鑰(就是.ssh)(選項都直接enter) => ![image](https://hackmd.io/_uploads/HkvQXUgva.png) cd 到 .ssh 查看內容 => id_ras.pub 為公鑰 複製公鑰到另一台主機 ![image](https://hackmd.io/_uploads/Skt7rUevp.png) 最後 ssh 到另一台主機 就能成功達成無密碼登入 ![image](https://hackmd.io/_uploads/SyXsH8xPa.png) --- --- scp 要複製的檔案(/etc/hosts) 目的端(root@centos7-2:/etc/hosts) ![image](https://hackmd.io/_uploads/BySLDUxvp.png) scp 另一端 要複製的檔案(另一端) ![image](https://hackmd.io/_uploads/HytnPIeva.png) 對目的端做的動作 ![image](https://hackmd.io/_uploads/SJrVdIlvT.png) --- --- ping .... 連接電腦 . 開頭的檔案為隱藏黨 遠端指令 ssh [另一台主機名稱] [動作] 期中可能會考 rpm -qa | httpd => 查看 查看系統有無安裝httpd 考試 ## 9/26(httpd 能在外網使用 , 期末 ngrok) ### 簡單伺服器架設 檢查有無 httpd(網頁伺服器) 套件 ![image](https://hackmd.io/_uploads/rJbpTUxvT.png) **多使用 netstat -tunlp | grep xxx(伺服器) 檢查開啟的伺服器 port** 新增網頁(只在內部網路) => ![image](https://hackmd.io/_uploads/S1l_yvlva.png) ![image](https://hackmd.io/_uploads/rJHhkvgwp.png) --- --- ### ngrok (1.一個帳號的token只能給一台主機用不能重複,否則開不了伺服器 !! 2.ngrok沒加路徑(PATH)要加上 ./ 才能使用執行檔) 先登入 ![image](https://hackmd.io/_uploads/Hy-0ZDxwa.png) 對下載項目點右鍵選取 複製網址 ![1](https://hackmd.io/_uploads/BJ8rXDlw6.png) (**--no-check-certificate要加 允許在下載時忽略伺服器的 SSL 憑證是否有效的檢查**) 使用 wget --no-check-certificate https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz =>下載 --no-check-certificate(在前面 圖有誤) ![1](https://hackmd.io/_uploads/HyESrvxPT.jpg) 再家目錄用 ls 檢查有無成功安裝 用 tar zxvf 解壓縮檔案 ![image](https://hackmd.io/_uploads/ryLYIvePT.png) 接著輸入 ./ngrok config add-authtoken 你的token (**要用./ngrok**) ![image](https://hackmd.io/_uploads/BkMZDwlvT.png) ![1](https://hackmd.io/_uploads/HydL2vlDp.jpg) 輸入 ./ngrok http 80 如下 => ![image](https://hackmd.io/_uploads/BkvF6DgP6.png) 輸入標記的網址 開啟網址成功如下 => ![1](https://hackmd.io/_uploads/r1rACwlPT.jpg) --- --- pwd => 顯示當前目錄 df -h | grep /$ =>$為取甚麼當結尾 awk '{print $5}' => 取第五項 ava=$() => 執行裡面內容,再放進ava 之後echo ava 會執行內容結果 ## 10/3 (nfs 伺服器) nfs使用教學 https://qizhanming.com/blog/2018/08/08/how-to-install-nfs-on-centos-7 防火牆 要檢查 **遇到的問題 要分享的資料夾以及檔案要改權限 => chmod 755 -R server端要分享的檔案名稱** nfs伺服器 = network file sysytem = client-server 目的 能做到資料的分享 ![](https://hackmd.io/_uploads/Hk2qiXKga.png) **要有 host-only 網路卡 (192.168 開頭)** 第一步 (目前這台是 nfs server)(**-p** 參數來檢查是否存在 存在就不建立 不存在則建立) ![image](https://hackmd.io/_uploads/SJCmD_gwa.png) 權限 chmod 755 -R /data 第二步 (另一台主機 client) ![image](https://hackmd.io/_uploads/r1V_udgwp.png) ![image](https://hackmd.io/_uploads/ryprFdlPa.png) **接著回到 nfs server 主機** yum install nfs-utils ![image](https://hackmd.io/_uploads/S1kWcdewT.png) 之後 systemctl enable rpcbind systemctl enable nfs systemctl start rpcbind systemctl start nfs ![image](https://hackmd.io/_uploads/HyHUoueva.png) (**最重要的地方!! 通常有問題都在這**) vim /etc/exports (最重要的配置檔,決定把甚麼資源分享出去) => (**這裡的ip是client的** 前面三個數都一樣最後為0) /data/192.168.0.0/24(rw,sync,no_root_squash,no_all_squash) ![1](https://hackmd.io/_uploads/Bk5pJteP6.jpg) 接著systemctl restart nfs 再檢查一下是否成功 成功會出現底線內容 ![1](https://hackmd.io/_uploads/rySg-tlv6.jpg) **接著回到 nfs client 主機** 一樣 yum install nfs-utils systemctl enable rpcbind systemctl start rpcbind ![image](https://hackmd.io/_uploads/HJmEfYgv6.png) 測試 (可以用ip 也可以用之前存的domain name) => ![image](https://hackmd.io/_uploads/Ska8mYgwa.png) **這裡也很重要 !!** **掛載** 192.168.153.152 是 nfs server 的 ip mount -t nfs 192.168.0.101:/data(data是分享出來的資料夾) /nfs-data(對應到本地端的資料夾) ![image](https://hackmd.io/_uploads/r1CgEtxP6.png) 接著到 /nfs-data 後 touch 一個 a.txt 的檔案 ![1](https://hackmd.io/_uploads/SkgwUFlPp.jpg) **接著回到 nfs server 主機** cd 到 data 就能看到 a.txt 成功如下 ![2](https://hackmd.io/_uploads/B12OUtlwp.jpg) ![1](https://hackmd.io/_uploads/SJEKdYlD6.jpg) --- --- dev/zero dev/null 有無限的 0 期中可能考 dd if=/dev/zero of=名稱 bs=1M count=100 cat 檔案 | wc -l => 只有幾行的數字 cat -T -E 檔名 => T 中間加tab E結尾加$ tr的指令教學 https://wangchujiang.com/linux-command/c/tr.html 大小寫的轉換 ![](https://hackmd.io/_uploads/BkDESSFxT.png) ![](https://hackmd.io/_uploads/SywTSrYl6.png) -T變換TAB空格=>^ ![](https://hackmd.io/_uploads/HyOn8rtlp.png) -E 結尾加上$ ![](https://hackmd.io/_uploads/BJCMvStl6.png) ![](https://hackmd.io/_uploads/r10VKHKlT.png) ![](https://hackmd.io/_uploads/H1LHFBYgp.png) ![](https://hackmd.io/_uploads/SykUirFea.png) ![](https://hackmd.io/_uploads/ByqIiStx6.png) ![](https://hackmd.io/_uploads/BkBPsSKlp.png) ![](https://hackmd.io/_uploads/SkqPiHte6.png) bc => linux裡的計算機 =>幫你計算 ![](https://hackmd.io/_uploads/SJNMArFxT.png) seq -s "+" 1 10 => 1+2+3+4+5+6+7+8+9+10 返回使 -1 ![](https://hackmd.io/_uploads/SkifCSFg6.png) 參數 -w=width => 對齊 => 用 0 補齊 ## 10/17 (基本samba ,跟windows共享用host-only ip) samba教學 https://josephjsf2.github.io/linux/2019/11/01/share_centos_folder_with_windows.html 學姊筆記 https://github.com/stereomp3/note/blob/main/linux/111semester01/3-SAMBA.md#SAMBA 下載 ![image](https://hackmd.io/_uploads/BJgtb2lva.png) 看一下 跟 windows能不能互 ping ![image](https://hackmd.io/_uploads/HygQ7nlDT.png) 檢查是否disabled ![image](https://hackmd.io/_uploads/r1JIQ3eDa.png) ### 測試資料夾 mkdir /test_samba -p chown nobody /test_samba ls -l -d /test_samba(查看權限) chmod 777 /test_samba/ ![image](https://hackmd.io/_uploads/SyMiN3evT.png) ![image](https://hackmd.io/_uploads/SJzGr2xwT.png) ### 配置 samba 設定檔 vim /etc/samba/smb.conf => 新增圈起來的部分 ``` [test] comment = for test # 註解 path = /test_samba read only = no guest ok = yes browseable = yes ``` ![1](https://hackmd.io/_uploads/Hy2nU2eDp.jpg) 輸入testparm 後按 enter 檢查是否跟下圖一樣 => ![1](https://hackmd.io/_uploads/Hy-Hw3eDa.jpg) 接著 systemctl restart smb 檢查 systemctl status smb ![image](https://hackmd.io/_uploads/HkIkungwa.png) port 檢查 ![image](https://hackmd.io/_uploads/Hyn-OhxP6.png) windows要登入linux 需要再linux裡有該帳號 ![image](https://hackmd.io/_uploads/HkrjuheDp.png) samba 有自己的密碼存放處 可跟系統user密碼不同 使用 smbpasswd -a user 建立 SAMBA 存取密碼,並加入使用者 ![](https://hackmd.io/_uploads/HyXsEoiZ6.png) 完成後 到 windows 檔案總管 輸入 \\192.168.x.x(你的ip) 輸入剛創的名稱和密碼 (名稱跟使用者一樣,沒有該使用者無法創建,必須一對一) ![image](https://hackmd.io/_uploads/ByqT9hxDp.png) 成功如下 => ![image](https://hackmd.io/_uploads/SyA0cneD6.png) ![image](https://hackmd.io/_uploads/SJovo3xvp.png) 新增修改資料 與 windows 共享 相互同步操作 ![image](https://hackmd.io/_uploads/Bkv0s2gDp.png) 成功 => ![image](https://hackmd.io/_uploads/HJcCihxPa.png) ### 檢查使用者 和 新增 ![](https://hackmd.io/_uploads/HJItTsiWp.png) ![](https://hackmd.io/_uploads/ryxqTjj-a.png) 切換帳號 ![](https://hackmd.io/_uploads/BJK7hosW6.png) --- --- nfs linux 到 linux 資源分享 samba windows 跟 linux 資源分享 cat /etc/selinux/config 更改selinux ==>ubandu 沒有這個 mkdir -p 參數 檢查有沒有此資料夾 ls -l -d 查看權限 tr ',' | tr ':' => tr [,:] 期中可能考 echo $RAMDOM | md5sum | cut -b1-8 => 由cut裁切 隨機的8位數密碼 cat 1 2 3 > 4 => 將123合併為4 man 指令 => 查看指令使用方法 ![](https://hackmd.io/_uploads/rJyf0jjZa.png) ![](https://hackmd.io/_uploads/B17rRoibT.png) ![](https://hackmd.io/_uploads/r1rIAjiWp.png) ![](https://hackmd.io/_uploads/BkFLAsjWp.png) ![](https://hackmd.io/_uploads/SyJw0jiWp.png) ![](https://hackmd.io/_uploads/BJNwAjjZp.png) ![](https://hackmd.io/_uploads/HkhvAsoZ6.png) ![](https://hackmd.io/_uploads/ByhuAosWp.png) --- ![](https://hackmd.io/_uploads/Bkbb-3iW6.png) ![](https://hackmd.io/_uploads/BkBMX3jb6.png) ![](https://hackmd.io/_uploads/rysz73oZ6.png) ![](https://hackmd.io/_uploads/B1g7X2obp.png) ![](https://hackmd.io/_uploads/r1wUX3sWp.png) ![](https://hackmd.io/_uploads/HkraP3oZp.png) ![](https://hackmd.io/_uploads/HJ2pD2iZ6.png) ![](https://hackmd.io/_uploads/ryP09hsWT.png) --- ![](https://hackmd.io/_uploads/H1V102jba.png) ![](https://hackmd.io/_uploads/By050njb6.png) 改主機名稱 ![](https://hackmd.io/_uploads/ByVuNTiZT.png) --- ![](https://hackmd.io/_uploads/HyEFEaiZT.png) ![](https://hackmd.io/_uploads/HklOKEaoWp.png) ## 10/24 (ipv6 架站) 查看ipv6 windowa ping-6 linux ping6 ![image](https://hackmd.io/_uploads/HJdIPgww6.png) 選第一張就好 要是 bridge adaper (**需要放在第一張**) ![](https://hackmd.io/_uploads/SyE611SM6.png) ping -6 => 進行 ip 測試能不能使用 ![](https://hackmd.io/_uploads/SJ56yyrza.png) ![](https://hackmd.io/_uploads/S1NRJJHz6.png) 成功能使用 putty => ![image](https://hackmd.io/_uploads/BkAgxbvDp.png) 開始架站 yum install httpd -y 如果下載套件時,遇到 could not resolve host 解決如下 => vim /etc/resolv.conf 改成 nameserver 8.8.8.8 沒問題則繼續 cd /var/www/html echo "你的内容" > 文件名 (新增檔案且同時新增內容) ![](https://hackmd.io/_uploads/H1BiX-PD6.jpg) 記得要 systemctl start httpd 成功如下 => ![image](https://hackmd.io/_uploads/SJhP5bPDa.png) dns 到 12/12 看 成功如下 => ![1](https://hackmd.io/_uploads/H1DSjWwva.jpg) --- --- a = 5 => echo $a => 顯示 5 =>$可以取出變數內容 => 有時候不能有空白 alias 新指令="舊指令" 更改指令名稱(只能在原視窗.行程使用) 不過可以 vim .bashrc 來加入 alias指令 ==> . .bashrc 使其重新啟動 echo $$ ==> 查看目前行程的 process id 考試 ==> 單不會替換變數,雙會替換變數 ![](https://hackmd.io/_uploads/SJiYwgrGT.png) ![](https://hackmd.io/_uploads/rkRnwxSfa.jpg) su - 使用者名稱 =>切換使用者 ![image.png](https://hackmd.io/_uploads/ByBE2S8XT.png) echo $USER => 顯示當前的使用者 使用者的判斷式 ![image.png](https://hackmd.io/_uploads/HJAIArU76.png) ![image.png](https://hackmd.io/_uploads/Sk4DRrLQT.png) ![image.png](https://hackmd.io/_uploads/BkRv0B8Qa.png) ![image.png](https://hackmd.io/_uploads/Hyn_RB8XT.png) ## 10/31 (沒) echo $RAMDOM => 產生亂數 md5sun => 雜湊函數 1-10切割多少 ![](https://hackmd.io/_uploads/H1n3rMCza.png) 加大括號可以確保內容 ![](https://hackmd.io/_uploads/BJL-_f0Mp.png) 期中會考 雙引號變數會被替換 單引號是完整的字串 ![](https://hackmd.io/_uploads/B1CaufRz6.png) read 用法 ![image.png](https://hackmd.io/_uploads/H13AfP87a.png) ![image.png](https://hackmd.io/_uploads/ByXJQv876.png) 非0值代表前一個指令執行失敗 (不同錯誤會有不同值) ![](https://hackmd.io/_uploads/BkI9cf0fp.png) ![](https://hackmd.io/_uploads/S1desGRG6.png) linux c語言中 0 屬於 真 真 執行前者 假 執行後者 ![](https://hackmd.io/_uploads/r10Ohf0Mp.png) 將指令串在一起的符號 --- && =>前面一定要成功 後面才會執行 ![](https://hackmd.io/_uploads/ryavpzCMa.png) ; => 不管前面是否成功,都還是會執行 ![](https://hackmd.io/_uploads/Sk9OpGRGa.png) || => 二擇一 如前 ![](https://hackmd.io/_uploads/rkutTf0Mp.png) ![](https://hackmd.io/_uploads/SJT7b7AfT.png) -z => 測試是否是空字串 ![](https://hackmd.io/_uploads/HJZhzQ0GT.png) ![](https://hackmd.io/_uploads/BJSHmmRMT.png) 字串變數比較要有留空白(不會考) 會執行前者 ![](https://hackmd.io/_uploads/S1HnXXAG6.png) 且加上雙引號 ![](https://hackmd.io/_uploads/SkbgE7Azp.png) ![](https://hackmd.io/_uploads/B1D6N70Ga.png) 數字比較不要用=,>=,<=,等符號 用上圖 ![](https://hackmd.io/_uploads/r1Y_HQAfp.png) 期中可能考 寫腳本 ./檔名 => 執行腳本 ![](https://hackmd.io/_uploads/B12RUQRfT.png) vim test.sh 改下圖指令 ![](https://hackmd.io/_uploads/HJ4yP7CGp.png) ![](https://hackmd.io/_uploads/S1n1mVAfp.png) --- ![image.png](https://hackmd.io/_uploads/H1TBswU7T.png) --- ‵ ‵ 和 () 同等 代表優先執行 ![](https://hackmd.io/_uploads/rJW7wV0fp.png) ![](https://hackmd.io/_uploads/HyzbEVCfT.png) 找出非 d 開頭的 awk '{print $9}' 取第9項 ![](https://hackmd.io/_uploads/S1KRH4AG6.png) [ ] 與 test 同等功能 ![](https://hackmd.io/_uploads/BJkJdEAMa.png) -a => and ![image.png](https://hackmd.io/_uploads/B1MGkOIXa.png) https://blog.csdn.net/new_delete_/article/details/121160836 https://blog.csdn.net/jiushiggg/article/details/123166505 ## 11/14(vpn) vpn server (virtual private network) = 1.site to site 2.point to site 參考網頁 https://help.aliyun.com/zh/ecs/how-do-i-configure-a-connection-between-a-pptp-vpn-server-and-a-pptp-vpn-client-on-a-centos-7-instance 學長筆記 https://github.com/stereomp3/note/blob/main/linux/111semester01/7-VPN.md#pptpd 網路卡設定 1.nat 2.hostonly 3.internet (第三張名子自己取 跟另一台主機一樣就好) 網路卡作用 => 1.192.168開頭(nat) 用來連internet 2. host-only 跟 windows連 3.跟另一台主機產生內部網路(internet) 第一台 ![image](https://hackmd.io/_uploads/rkKzA9xVT.png) 另一台主機(第二台) ![image](https://hackmd.io/_uploads/BkbxyjxV6.png) ### 設定 internet網路卡 ip (第一台) ![1](https://hackmd.io/_uploads/SJSeOGDwT.jpg) ![2](https://hackmd.io/_uploads/rylW_MPDp.jpg) 這裡圖有誤 (ip 為 192.168.10.1) ![image](https://hackmd.io/_uploads/S1h7uMwPT.png) **改完記得 turn off 再 turn on !!** ![3](https://hackmd.io/_uploads/ByOWOzwPT.jpg) ### 設定 internet網路卡 ip (第二台) ![image](https://hackmd.io/_uploads/S1h7uMwPT.png) **改完記得 turn off 再 turn on !!** ![1](https://hackmd.io/_uploads/SkmZ5Gvv6.jpg) 測試可不可以互通(形成內部網路) 成功如下=> ![1](https://hackmd.io/_uploads/H1595fDPp.jpg) 接著回到第一台 yum install epel-release yum install pptpd vim /etc/pptpd.conf 到最下面新增兩行 => localip 192.168.10.1(此主機ip) remoteip 192.168.10.100-150(客戶端連上來的範圍) ![image](https://hackmd.io/_uploads/By9T-mDv6.png) 接著設定帳號密碼 vim /etc/ppp/chap-secrets => 依序是 帳號 server 密碼 *代表任何地方都可連 ![1](https://hackmd.io/_uploads/SJMEEmDv6.jpg) vim /etc/ppp/ip-up => 新增 ifconfig ppp0 mtu 1472 (圖有誤 1472才對) ![1](https://hackmd.io/_uploads/HyYSHmwD6.jpg) 啟動為路由器 vim /etc/sysctl.conf => 新增 net.ipv4.ip_forward = 1 ![1](https://hackmd.io/_uploads/Hk7oUQPvT.jpg) 接著輸入以下 => ![1](https://hackmd.io/_uploads/HkBMv7PPT.jpg) 要可進可出輸入 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE 然後 systemctl restart pptpd windows vpn 連線 => 如果適用vmware, ip填的是centos7 第一張網卡的ip 如果適用virtual box,ip填寫的是centos7 第二張網卡host only ip ![](https://hackmd.io/_uploads/Bkr-67wva.jpg) 連線名稱自訂,使用者名稱 密碼 前面有設置 ![image](https://hackmd.io/_uploads/BJeJ-8wva.png) 成功 => (可 ping 192.168.10.1) ![image](https://hackmd.io/_uploads/SkAwa7Dva.png) ![image](https://hackmd.io/_uploads/BJDuT7vDp.png) ![image](https://hackmd.io/_uploads/B195CXvwT.png) ## 11/21(完成 network 和 network manager轉換) bash script (linux 工作必備) https://medium.com/vswe/bash-shell-script-cheat-sheet-15ce3cb1b2c7 ![image](https://hackmd.io/_uploads/HyaZBaYVp.png) 統計個數 ![image](https://hackmd.io/_uploads/Bkj_SatNp.png) ![image](https://hackmd.io/_uploads/H1pQITtVa.png) 印出 1 3 5 ``` for i in {1..10}; do if ((i%2==0)); then continue fi if ((i==7)); then break fi echo "${i}" # print 1, 3, 5 done ``` ![image](https://hackmd.io/_uploads/SyDmqTtNa.png) network 和 network manager 要則一 ![image](https://hackmd.io/_uploads/Hk0vOCYVa.png) 清除網路設定 ![image](https://hackmd.io/_uploads/SyIOtAYVT.png) mtu => max transmission unit ![image](https://hackmd.io/_uploads/rJO1oAYEa.png) ![image](https://hackmd.io/_uploads/HJ4OoCYV6.png) 複製ip位址 複製網路介面卡 ![image](https://hackmd.io/_uploads/HJZS1OoBa.png) 盡量使用 ![image](https://hackmd.io/_uploads/r1CjJuoHT.png) network 和 network manager轉換也有10分(第三節) ifconfig 查看網路卡ip netmask (看enp0s8) ![擷取1](https://hackmd.io/_uploads/SyZNMFsBp.jpg) enp0s8對應的gateway是0.0.0.0 ![擷取2](https://hackmd.io/_uploads/rJ6AXFsS6.jpg) 接著 cd 到/etc/sysconfig/network-scripts 接著 gedit ifcfg-enp0s8 (- 後為網卡名字) 裡面編輯內容如下(**名字千萬別打錯!!!!**) => ![擷取3](https://hackmd.io/_uploads/rklUUmKjHa.jpg) ls後檢查有沒有其他設定檔 (只留下**自己gedit的檔案和ifcfg-lo** ) ![擷取1](https://hackmd.io/_uploads/Hkk0mYjSa.jpg) 接著 systemctl stop NetworkManager 接著 systemctl start network (如果不行就systemctl restart network ) 最後 systemctl status network 成果如下 ![擷取1](https://hackmd.io/_uploads/BkTLBKira.jpg) 成功的話 **ping 8.8.8.8** 也能成功 ![擷取2](https://hackmd.io/_uploads/B1qDHFoS6.jpg) ## 11/28(完成 telnet) 重要 ( **linux 的 dns設置擋** ) ![image](https://hackmd.io/_uploads/H1J_al7r6.png) 查看伺服器有沒有被啟動 ![image](https://hackmd.io/_uploads/H1d-ybQH6.png) **第一個行程是 systemd (linux系統中process id =1,這隻行程叫做systemd)** ![image](https://hackmd.io/_uploads/B1EBfWQra.png) ![image](https://hackmd.io/_uploads/HyqII-7rT.png) (https://blog.gtwang.org/linux/linux-create-systemd-service-unit-for-python-echo-server-tutorial-examples/) (期中10分) 下載 yum install pyton3 cd /opt 接著 gedit echo_server.py 輸入以下 ``` #!/usr/bin/env python3 import socket # 建立 socket serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 綁定所有網路介面的 9000 連接埠 serv.bind(('0.0.0.0', 9000)) # 開始接受 client 連線 serv.listen() while True: # 接受 client 連線 conn, addr = serv.accept() print('Client from', addr) while True: # 接收資料 data = conn.recv(1024) # 若無資料則離開 if not data: break # 傳送資料 conn.send(data) conn.close() print('Client disconnected') ``` chmod +x /opt/echo_server.py python3 ./echo_server.py => 執行檔案 接著要 建立一個新的 Systemd 服務單位設定檔 cd 到 /etc/systemd/system 使用 vim echo_server.service 編輯內容如下 ``` [Unit] Description=Echo Server [Service] Type=simple ExecStart=/usr/bin/python3 /opt/myserver/echo_server.py Restart=always [Install] WantedBy=multi-user.target ``` `chmod 644 /etc/systemd/system/echo_server.service` =>設定權限 **重啟伺服器** ``` systemctl daemon-reload systemctl restart echo_server ``` **查看狀態** `systemctl status echo_server` 打開如下 ![截圖1](https://hackmd.io/_uploads/ByWhKz7Sa.jpg) 測試 => yum install nc => nc localhost 9000 如下 ![1](https://hackmd.io/_uploads/r1wZX7XBp.jpg) https://cloud.tencent.com/developer/article/2274078 telnet 教學(第三節) (期末10分) ``` yum install telnet-server yum install telnet yum install xinetd ``` ``` systemctl enable xinetd.service systemctl enable telnet.socket ``` **順序要對 !!!!!** ``` systemctl start telnet.socket systemctl start xinetd ``` **putty測試如下** ![3](https://hackmd.io/_uploads/SJ_H7Q7Sa.jpg) **成功如下** ![2](https://hackmd.io/_uploads/rkYeQQmH6.jpg) ![image](https://hackmd.io/_uploads/SydR2f7ra.png) ![image](https://hackmd.io/_uploads/rJe16MmH6.png) ![image](https://hackmd.io/_uploads/B1P1TMmSa.png) ![image](https://hackmd.io/_uploads/SyRkTM7Sp.png) ## 12/5 (完成 LAMP) **LAMP**(之後會常用到 linux apache mysql php)(期末這些超重要一定要會) 學長筆記 https://github.com/stereomp3/note/blob/main/linux/111semester01/13-.md ### apache `yum install httpd` 接著啟動 `systemctl start httpd` 記得關閉防火牆 => `systemctl stop firewalld` 接著跑看看 http://your_server_IP_address/ => ![擷取2](https://hackmd.io/_uploads/HyfMT4hrT.jpg) **mysql(這裡使用mariadb)** `yum install mariadb-server mariadb` =>下載資料庫 接著啟動 => `systemctl start mariadb` 查看 => `systemctl status mariadb` `systemctl enable mariadb.service` => 設定開機啟動MariaDB `mysql_secure_installation` =>設定root密碼,除了設定root外,其他選項Disallow root和Remove test選n,其他都Enter跳過 接著打開資料庫 `mysql -u root -p` `create database testdb;` => 創建 database ![擷取2](https://hackmd.io/_uploads/Hkn1xBnBT.jpg) 接著使用 => `use testdb;` 創建 `table => MariaDB [testdb]> create table addrbook(name varchar(50) not null, phone char(10));` 可以show來看看 => ![擷取3](https://hackmd.io/_uploads/SkxqgB2HT.jpg) 接著可以插入資料 => ``` insert into addrbook(name, phone) values ("mary", "0912123567"); insert into addrbook(name, phone) values ("tom", "0912123456"); ``` 查看 => ![擷取3](https://hackmd.io/_uploads/Syc7ZBnST.jpg) 要離開就打 => quit php ` yum install php php-mysql php-fpm` =>下載 `systemctl restart httpd.service` => 重新啟動Apache,讓PHP運作 接著 cd /var/www/html vim test.php 內容如下 => `<?php phpinfo(); ?>` ![擷取3](https://hackmd.io/_uploads/HJ4xfS2rT.jpg) 測試 => http://your_server_IP_address/test.php 成功如下 => ![image](https://hackmd.io/_uploads/HkCrfr3Hp.png) 最後連接 cd 到 /var/www/html 後 (記得放在這) gedit testdb.php 內容如下(別打錯) => ``` <?php $servername="127.0.0.1(固定)"; $username="root"; $password="當初設的資料庫密碼(user)"; $dbname="testdb"; $conn = new mysqli($servername, $username, $password, $dbname); if($conn->connect_error){ die("connection failed: " . $conn->connect_error); } else{ echo "connect OK!" . "<br>"; } $sql="select name,phone from addrbook"; $result=$conn->query($sql); if($result->num_rows>0){ while($row=$result->fetch_assoc()){ echo "name: " . $row["name"] . "\tphone: " . $row["phone"] . "<br>"; } } else { echo "0 record"; } ?> ``` ![擷取2](https://hackmd.io/_uploads/BkxuaHnB6.jpg) 刪除(看你要不要) => rm test.php(前面創建的測試網站) 接著 `systemctl restart httpd.service` 查看結果 => http://192.168.56.107/testdb.php => ![image](https://hackmd.io/_uploads/BkDI0Hhra.png) ## 12/12 1.要有橋接網路 2.ipv6 要 2001開頭 3.到 dynv6 輸入 ip 即可 ## 12/19 (完成) 期中 可加分 ### 資料夾限制ip存取 cd /var/www/html 新增 資料夾 b 在b裡 vim hello.txt 內容隨意 之後 vim /etc/httpd/conf/httpd.conf (Allow from 後面是 windows ip ,讓windows ip 可以有權限, 盡量使用乙太網路ipv4 ,離開使用 **:wq!**)更改內容如下 => ![1](https://hackmd.io/_uploads/r1WNb0CI6.jpg) 然後 systemctl restart httpd 成功如下 (**兩者ip都一樣 !!**) ![擷取1](https://hackmd.io/_uploads/Hyx_-0R86.jpg) windows 出現這個也行 ![1](https://hackmd.io/_uploads/ry91MR0LT.jpg) ### 密碼登錄下載檔案 cd 到 /var/www/html => mkdir 資料夾(files) 接著一樣 vim 到 /etc/httpd/conf/httpd.conf => 新增內容如下 => ![1](https://hackmd.io/_uploads/H1TIgfJwT.jpg) systemctl restart httpd cd到 files => htpasswd -c .htpasswd 使用者(user or tom) ![image](https://hackmd.io/_uploads/rkWgWfkPp.png) 接著 vim .htaccess 內容如下 => ![image](https://hackmd.io/_uploads/By1HWzJPa.png) ![image](https://hackmd.io/_uploads/ryOSWfJva.png) 成功如下 => ![擷取1](https://hackmd.io/_uploads/B1y5ZGJPp.jpg) ![擷取2](https://hackmd.io/_uploads/rk-iZM1D6.jpg) ### FTP server (vsftpd) yum install vsftpd 檢查是否安裝成功 systemctl start vsftpd systemctl status vsftpd => ![image](https://hackmd.io/_uploads/H1l_BGJv6.png) 檢查port ![image](https://hackmd.io/_uploads/ryZ2Hf1v6.png) 接著到 winscp => ![1](https://hackmd.io/_uploads/HkyeIfyP6.jpg) 成功如下 => ![擷取4](https://hackmd.io/_uploads/Sk-r8MkwT.jpg) 也可以用 user 登入 ![image](https://hackmd.io/_uploads/r1Y0IG1va.png) **下星期期末考可以做的內容: 1.安裝linux 2.使用network設定網路 3. ssh server (無密碼登錄,sftp) 4.ipv6架站 5.https架站 6. NFS 7. samba 8 ngrok. 9 httpd + php + mysql 10. httpd(資料夾限制ip存取, 密碼登錄下載檔案) 11.VPN (pptpd) 12. FTP server (vsftpd) At least complete 6 items, and then you can pass this subject.**