這是一個關於 Linux / CentOs7 伺服器架設的筆記簡志融111010501
查詢(qa = query all)
刪除(e = earse)
系統控制(System control)
動作 : status / start / stop / reload / restrat / enabled / disabled
狀態 : active(running) / inactive(dead)
sshd.service; disabled; 開機不重啟
NAT網卡 10.0.X.X 用於與 Internet 溝通,下載東西用
Host only 網卡 192.168.X.X 用於與其他機器通訊,如其他虛擬機或本機
只需一張 NAT網卡 就可滿足上述兩種功能
RPM(Redhat) & DPKG(Ubuntu)
用 rpm 安裝有依賴性(相依其他函式庫)問題,現多用 yum
跳出SSH連線
SSH連線(Using 2222 port)
查詢安裝套件各類資訊的指令
qa = query all
qi = query information
ql = query list
qf = query find >> 找出檔案來源套件
用rpm安裝
–nodeps:不考慮相依問題,硬裝(可能跑不起來)
用scp把檔案傳至遠端
-r : recursive
遠端執行指令
wget 到網頁伺服器下載檔案(速度快)
資料庫損壞可參考 Here
在 RPM 出現前,安裝軟體大多由原始碼編譯
yum
install / remove / update / list /search
wget 指定位置下載
時時更新行程
磁碟使用狀況(-h:以容量單位顯示)
NFS (Network File System) : 在網路上提供本地檔案存取 (參考資料)
yum install nfs-utils
mkdir /data
、chmod 755 /data
vim /etc/exports
/data/ 192.168.56.0/24(rw,sync,no_root_squash,no_all_squash)
systemctl restart nfs
yum install nfs-utils
systemctl enable rpcbind
systemctl start rpcbind
mkdir /data
sudo mount -t nfs 192.168.56.106:/data /data
dd:原本檔案複製,現用來產生任意大小的檔案
產生100MB的虛擬檔案
if : input file
of : 檔名
wc(word count)
5行 8詞 42letters
-l -w -c 分別對應
cat
-T : tab改以^顯示
-E : 每行末加上$
tr
-d : delete
-c : 除捕集的內容外
"0-9 \n" : 0-9、空白、換行
seq
-s "" : 用""裡的元素取代 \r\n
SAMBA server 可讓 Linux 共享 Windows 資料夾
shadow檔 存放系統使用者密碼,而 SAMBA 是另外設置儲存
嘗試用 Windows ping Linux
安裝 SAMBA
建立測試資料夾
更改擁有者及權限 : 設成無擁有者並將權限全開,再查看權限
修改配置檔
在最下方加入
測試設定的參數
啟動並檢查 SAMBA 的 Port
設定 SAMBA 密碼
在 Windows 輸入 \\192.168.56.100 連入 Linux
(參考:note/linux/111semester01/3-SAMBA.md)
sort : 用來為文字檔案內的每一列排序
-r : reverse
-g : general numery,按數字大小比較
-k : key,選擇 colum 做排序
-t : 分割符
uniq : 將檔案中相鄰且重覆的多行資料合併為一行
cut : 從存取檔案部分內容
-f : 選擇 colum 顯示 (不可改變順序 eg.1,3,2)
-d : 分割符
-b : byte,一個字元
split : 分割檔案
-b X : 以 X 大小分割檔案
找出檔案差別
Shell 的功能
bash 提供許多預設的變數,變數大部份以全大寫命名
寫腳本時,經常需要判斷使用者的身份([[ $USER == "root" ]] 空白很重要)
echo $變數名稱,可以呼叫內容
a = 5 ; a =5 ; a= 5 都不行
變數可以底線開頭,但特殊符號和數字不行 eg. _a (O)、5a (X)、+a (X)
可用 {} 區分變數
process id
o o o o o o o o o o o
o Very Imoprtant o
o o o o o o o o o o o
別名
僅限當前終端機,當前process
vim ~/.bashrc 可自行建立 alias 規則,重啟終端機生效(or source ~/.bashrc or . ~/.bashrc)
vim /etc/profile 為所有使用者建立規則( vim ~/.bashrc 只為設定者更改)
cp (copy)
\ 代表還原,用最原始的意思,沒有 -i
root UID = 0
echo $? >>> if==0 success else fail
腳本就是將一連串指令寫在一起的合輯
$() = `` (優先執行)
腳本載子行程執行,執行完變數就沒了
執行歷史指令
隨機賦予一樣長度密碼
完整環境變數 env
輸入(str型態)
清空檔案內容
test
-d : directory
-e : exist
-s : 檔案大小是否為0
-r : read
-w : write
-x : execute
-L : link
-eq : equal
-ne : not equal
-gt : greater than
-lt : less than
數字比較勿用符號,易發生錯誤
true = 1 ; false = 0
VPN(Virtual Private Network) : site to site (跨私有網路) 、 point to site (點到私有網路)
VPN server type : PPTP、IPSec、L2C
參考:如何使用CentOS 7实例配置PPTP VPN服务端到客户端的连接
製作 Lan 虛擬網路
第一台 : NAT、Host only、Internal network
第二台 : Internal network
更改兩台機器的 Internal network IP
第一台
第二台
第一台機器安裝 ppp & pptpd 伺服器
找不伺服器到可試
修改配置檔
vim /etc/pptpd.conf
vim /etc/ppp/chap-secrets
vim /etc/ppp/ip-up
vim /etc/sysctl.conf
做完執行 sysctl -p
重啟 pptpd : systemctl restart pptpd
Windows 設定 VPN 連線
設定 >> 網路和網際網路 >> VPN >> 新增VPN
名稱自訂,帳密用上面設定的 : test / 123456
連線
三大雲端供應商 : AWS、Azure、GCP
Linux網路設定運作由兩個伺服器管理,兩者互斥,只會啟動一個 :
Network Manager(盡量自動化,移動式裝置,非客製)、network(架設伺服器用,可客製) FINAL TEST
ifconfig
跟route -n
將原本的設定記住cd /etc/sysconfig/network-scripts/
vim ifcfg-enp0s8
systemctl stop NetworkManager
、systemctl start network
systemctl restart network
,ping 8.8.8.8
Bash Script
-a = and;-o = or
正則表達式
^ : 以…為開頭
$ : 以…為結尾
+ : 數目不為零
網路卡操作
down : 開
up : 關
0 : 清除網路設定
mtu : Max Transmision Unit
hw ether : 改網路卡卡號
ip 網路工具
brd : 接受廣播封包
dev : 裝置
新增ip
內地路由
DNS server : etc/resolv.conf
CH14 : systemd & crond (cron與時間有關)
- Linux 的兩種服務 :
- 隨時運行,隨時回復(占用資源)
- client連線,agent通知server,server進入服務(不佔用資源,但速度慢)
atd vs crond : atd 只執行一次;crond可週期執行
早期 Linux 使用 init 管理系統;現多用 systemd (init & systemd 為第一支行程,pid=1)
init 為何被取代? 因其啟動行程時,一個接一個,所以要啟動的行程越多,開機時間越長;而 systemd 會考慮行程的相依性,並減少啟動時間
/usr/lib/systemd/system/sshd.service
- Unit : 說明及應在何時服務後啟動
- Service : 執行環境及指令
- Install : 定義在什麼模式啟動
systemd 的 target 取代 init 的 runlevel
0:單人模式;3:文字模式;5:圖形化模式
安裝python3 yum install -y python3
vim /opt/echo_server.py
加上執行權限 chmod +x /opt/echo_server.py
啟動測試
python3 /opt/echo_server.py
nc localhost 9000
yum install -y nc
)vim /etc/systemd/system/echo_server.service
chmod 644 /etc/systemd/system/echo_server.service
systemctl daemon-reload
、systemctl start echo_server
網路測試工具
t : tcp
u : udp
n : 不解析(顯示port而非協定名)
l : linsten
p : process
systemctl
切換 UI 的模式
Apache LAMP : 主流
nginx LNMP : 效能好,迎頭趕上
Windows IIS : 資安問題
Http : 80 port ; Https: 443 port
Https 需 證書 (Certificate) 和 綁定域名 (Domain name)Http是一種沒有記憶性的通訊協定,requset 結束後,連線就斷了
架構於TCP上 >> 三向交握 & 四次揮手 >> 效能差
後有 long connection 改善效能問題,或用 section(server) 或 cookie(client) 記憶
Http status code:
- 1XX info
- 2XX success
- 3XX 跳轉
- 4XX client error
- 5XX server error
正常情況用
systemctl stop htppd
伺服器不正常用pkill -9 httpd
LAMP : Linux Apache MySQL PHP
筆記參考 : stereomp3/note/linux/111semester01/13-.md
Disallow root
和 Remove test
選n,其他都 Enter
跳過
<?php phpinfo(); ?>
info.php
,並新增 test.php
public_html
& index.html
,並更改設定
創建資料夾 & 文件
連結
在檔案最下面加入 (同意在此目錄的所有存取)
修改設定後systemctl restart httpd
-v : 反轉
^ : 以…為開頭
^$ : 空白行 (以空白開頭及結尾)
重新加載配置檔
restart = stop + start 連線會中斷
reload 重新加載而已,現存的連線可以保存 (溫和手段)
強制刪除 httpd 相關行程
先搞出 Ipv6 (橋接網卡only)
yum -y install epel-release mod_ssl certbot
certbot certonly --webroot -w /var/www/html/ -d linux217.dns.army --email alex24922665@gmail.com
FTP古老好用但不安全(內網使用相對安全)
網路上可使用SFTP,較安全但會失去一些功能
使用TCP,21Port連線永遠存在(Control & Command),20Port只在傳資料時存在
所有指令都是Server端操作,指令前加 ! 可在Client端操作
cd /var/www/html
、mkdir b
cd /b
、echo "HI JUNG">a.txt
vim /etc/httpd/conf/httpd.conf
systemctl restart httpd
cd /var/www/html
、mkdir files
cd /files
、echo "aaa">a.txt
、echo "bbbb">b.txt
、echo "ccccc">c.txt
htpasswd -c .htpasswd user
、htpasswd .httpasswd alex
vim .htaccess
vim /etc/httpd/conf/httpd.conf
systemctl restart httpd
主要設定檔 : /etc/vsftpd/vsftpd.conf
yum install vsftpd -y
、systemctl start vsftpd
期末考
- 安裝linux
- ssh server (無密碼登錄, sftp)
- ngrok(外網 Http 伺服器)
- NFS
- samba
- ipv6架站
- https架站
- VPN (pptpd)
- httpd + php + mysql (LAMP)
- httpd(資料夾限制ip存取, 密碼登錄下載檔案)
- FTP server (vsftpd)
- 使用network設定網路
Telnet、echo server