Linux 入門
1.Linux 前身 Unix。
- 1968年,Multics 項目。MIT、Bell 實驗室、美國通用電氣有限公司一起開發 Multics 項目,后期開發進度不是很好,MIT和Bell實驗室離開了項目的開發,最終項目擱淺。
- 1970年,Unix 誕生。在 Multics 項目時,一個開發成員開發了一款游戲(trabel space 遨游太空),因為兩個實驗室離開,導致這名開發人員沒發玩游戲。后來他提議組織人員重新開始該項目,也就出現了1970年的Unix。當時的Unix操作系統是使用匯編語言開發的。時間戳 150000000 1970-1-1 00:00:00
- 1973年,用 C 語言重寫 Unix。
- 1975 年,Bell 實驗室允許大學使用 Unix。
- 1975 年,Bell 實驗室允許大學使用 Unix 操作系統用於教學作用,而不允許用於商業用途。
2.Linux 誕生
Linus,李納斯·托瓦茲,當時是荷蘭在校大學生。1991年 0.0.1版本,使用Unix操作系統,然后對其系統的底層進行修改,放到學校的網站上,原先命名 Linus's Unix,后覺得名字不好改名 Linux。1992年0.0.2版本,1994年1.0版本,2003年2.6版本,版本是內核版本,不是分支版本。
操作系統其實就是核心與其提供的接口工具,核心就是 Kernel。Kernel 為了達成使用者所需要的正確運算結果,必須要管理的事項有:系統呼叫接口;行程管理;內存管理;檔案系統管理;裝置的驅動。
3.開源
斯特曼 Stallman,開源文化倡導人,1983年 GNU計划,1985年 FSF基金會,1990年 Emacs、GCC(c語言的編譯器)、程序庫,1991年 他找 Linus 商談 Linux 開源,1992年 GNU/Linux。
4.Linux 系統特點:開放性、多用戶、多任務、穩定性
5.Linux 分支:著名的有 ubuntu、debian、centos、redhat、suse等
6.Linux 安裝:真機安裝;虛擬機安裝。虛擬機,模擬真實的電腦環境,比較有名的虛擬機,vmware和virtual box(輕量級)。vmware下載 virtual box下載
7.Linux 文件:Linux 一切皆文件。
Linux 指令
在 Linux 終端(命令行)中輸入的就是指令,指令的通用格式:#指令主體 [選項] [操作對象]。一個指令包含多個選項,操作對象也可以是多個。以下部分只統計了部分常用指令。
基礎指令
- #ls :查看當前工作目錄下的所有文件/文件夾
- #ls 路徑名,查看指定目錄下文件/文件夾,#ls ../../root
- #ls -lha [路徑],-l 表示以詳細列表顯示,-a顯示隱藏文件,-h以可讀性更高的方式顯示
2.pwd , #pwd ,打印當前工作路徑
3.cd , #cd 路徑,切換當前工作目錄,cd ~ 切換到家目錄
4.mkdir
- #mkdir 路徑,創建目錄,這個目錄可以是文件夾名稱
- #mkdir -p 路徑,一次性創建多層文件夾
- #mkdir 路徑1 路徑2...
5.touch
- #touch 路徑,路徑可以是文件名
- #touch 路徑1 路徑2,創建多個文件
6.cp
- #cp 被復制的文檔路徑 被復制到的路徑,cp a.txt /home/c/a.txt
- cp a.txt /home/c/a1.txt ,復制過程中並重命名
- #cp -r 被復制路徑 目的地,-r表示遞歸復制
- #mv 需要移動的文檔路徑 需保存的路徑,移動后原始文件不在原來位置
- 重命名可以用移動使用
8.rm
- #rm 選項 需要移除的文檔路徑
- -f :強制刪除,不會有提示
- -r :遞歸刪除
- #rm -rf 文檔路徑1 文檔路徑2...,批量刪除多個
- #rm -rf linux*,刪除以linux開頭的文檔,*表示通配符
9.vim
- #vim 文件路徑,文本編輯
10.輸出重定向,#正常執行的指令 {>|>>} 文件路徑,文件不存在就創建
-
:覆蓋輸出,會覆蓋原先的文件內容
-
:追加輸出,不會覆蓋原始文件內容,在原始內容末尾添加
11.cat
- #cat 文件的路徑,直接打開文件,類似vim
- #cat 文件路徑1 文件路徑2... > 文件路徑,合並文件名到文件路徑
12.clear | ctrl +L,#clear | Ctrl + L,清屏
文檔類指令
1.df
- #df -h :以可讀性更高的方式查看磁盤空間
2.free
- #free -m :查看內存的使用情況,-m表示兆M,-g表示G
3.head
- #head -n 文件路徑,查看文件的前n行,n是數字
4.tail
- #tail -n 文件路徑,查看文件的后n行,n表示數字
- #tail -f 文件路徑,查看文件的動態變化,變化的內容不是用戶手動添加的
- #tail -f text.txt,ls -lh > text.txt,一般用於查看系統的日志
5.less
- #less 文件路徑,以較少的內容進行輸出,查看文件,可以使用輔助鍵查看
- 數字+回車、空格鍵,按q退出
6.wc
- #wc -lwc 文件路徑,統計文件內容信息(包含行數、單詞數、字節數)
- -l :表示行數,-w :表示單詞數,-c :表示字節數
7.date
- #date ,查看、設置時間日期,CST當地時間
- #date +%F ,等價於 #date "%Y-%m-%d" ,輸出形式2019-05-12
- #date +"%F %T" ,等價於 #date +"%Y-%m-%d %H:%M:%S" 引號讓年月日和時分秒成為一個整體,2019-05-12 16:01:00
- #date -d "-1 day age" +"%Y-%m-%d %H:%M:%S",獲取之前或之后的日期時間,-1之前,+1之后,day天,month月,year年
8.cal
- #cal ,等價於 #cal -1 ,直接輸出當前月份的日歷,
- #cal -3,輸出本月上月下月日歷,
- #cal -y 年份,輸出某一年份的日歷
9.管道 |,不能單獨使用
- 過濾,如 #ls / | grep y,查詢根目錄下包含y的文檔
- 擴展處理,統計某個目錄下的文檔的總個數,比如 #ls / | wc -l
其他指令
1.hostname,讀取、設置主機名,設置的主機名是臨時的
- #hostname,輸出完整主機名localhost.hostname
- #hostname -f,輸出主機名中的FQDN全限定主域名localhost
2.id,查看一個用戶的一些基本信息
- #id ,uid用戶id,gid組id,組表示附加組
- #id 用戶名,顯示指定用戶的基本信息
- 驗證用戶信息通過文件 /etc/passwd ,驗證用戶組信息 /etc/group
3.whoami ,顯示當前登錄的用戶名
- #whoami ,一般用於 shell 腳本,獲取當前操作的用戶名方便記錄日志
4.ps ,查看服務器的進程信息
- #ps -ef ,UID用戶id,PID進程id,PPID父級進程id,C表示CPU占用率,STIME啟動時間,TTY終端設備(?表示不是終端發起),TIME進程執行時間,CMD進程名稱或路徑
- -e ,等價於 -A,表示列出全部的進程
- -f ,顯示全部的列(顯示全字段)
- #ps -ef | grep 進程名稱,查看指定進程
5.top ,查看服務器的進程占的資源
- #top ,動態顯示進程占用資源,按q退出,
- PR權重,VIRT虛擬內存,RES常駐內存,SHR共享內存,S進行狀態S表示睡眠R表示運行,TIME執行的呃時間,COMMAND進程名稱或路徑
6.du ,查看目錄的真實大小
- #du -sh 目錄路徑,目錄里面的文檔大小
- -s ,顯示匯總的大小;-h 以高可讀性的形式進行顯示
7.find ,用於查看文件
- #find 路徑范圍 選項 選項的值,
- -name,按照文檔名稱搜索(支持模糊搜索)
- -type,按文檔的類型進行搜索,文檔類型:-表示文件find中用f表示,d表示文件夾
- 比如 #find /etc -name *.conf | wc -l ,#find /etc -type f | wc -l
8.service ,用於控制一些軟件的服務啟動、停止、重啟
- #service 服務名 start|stop|restart ,比如#service httpd start ,啟動之后可以使用 #ps -ef | grep httpd 查看進程
9.kill ,關閉進程或者服務
- #kill 進程PID ,如果沒有對應的PID會有相應提示
- #killall 進程名稱 ,不需要使用ps查看PID,#killall httpd
10.ifconfig ,操作網卡
- #ifconfig ,獲取網卡信息,ipv4地址是在inet addr后面
11.reboot ,重啟計算機
- #reboot ,重啟;#reboot -w ,模擬重啟但不重啟,只寫關機和開機的日志
12.shutdown ,關機
- #shutdown -h now ["關機提示"]或 #shutdown -h 15:25 ["關機提示"],立即關機和定時關機
- Ctrl + c ,或者 #shutdown -c ,(centos7.X之后)取消關機計划
- #init 0 ,#hait ,#poweroff ,其他關機方式
13.uptime ,輸出計算機的持續在線時間,開機到現在運行的時間
- #uptime ,其中15:58表示15小時,users連接數,load average負載,windows中可以使用systeminfo
14.uname ,獲取計算機操作系統相關信息
- #uname ,獲取操作系統的類型
- #uname -a ,操作系統完整信息,內核版本,發布時間
15.netstat ,查看網絡連接狀態
- #netstat -tnlp ,查看網絡連接狀態
- -t 列出tcp協議的連接,
- -n 將地址從字母轉為ip地址,將協議轉換為端口號來顯示
- -l 過濾出“stat(狀態)”列出其值為LISTEN(監聽)的連接
- -p 顯示發起連接的進程pid和進程名稱
16.man ,manual 手冊
- #man 指令 ,查看指令的信息,按q退出
17.其他一些
- 刪除光標前或后的內容,ctrl+u刪除前面的,ctrl+k刪除后面的
- 刪除/tmp下所有A開頭的文件,#rm -f /tmp/A*
- 把/etc/passwd備份到/tmp目錄下,#cp /etc/passwd /tmp/
- 查看最后創建的3個用戶,#tail -3 /etc/passwd
- 統計當前系統總的用戶數,#wc -l /etc/passwd ,或 #cat /etc/passwd | wc -l
- 創建/tmp/test.conf文件,#touch /tmp/test.conf
- 用vim打開/tmp/test.conf,#vim /tmp/test.conf
- 查看/etc/passwd的頭3行和尾3行,#head -3 /etc/passwd ,#tail -3 /etc/passwd
- 一次性創建目錄/test/1/2/3/4,#mkdir -p /test/1/2/3/4
- 返回當前賬戶家目錄,#cd ,#cd ~
- 查看/etc所占磁盤空間,#du -sh /etc
- 刪除/tmp下所有文件,#rm -rf /tmp/*
- 啟動Apache服務,並檢查是否啟動成功,#service httpd start ,#ps -ef | grep httpd
- 殺死Apache的進程,#killall httpd ,#kill apache進程PID
vim 編輯器
vi 編輯器是系統自帶的編輯器,類似windows系統中的記事本。vim編輯器是vi的升級版。
vim有三種模式:
- 命令模式:打開文件后默認進入的模式,不能直接對文件編輯,可以輸入快捷鍵進行一些操作(刪除行,復制行,移動光標,粘貼等等)。
- 編輯模式(輸入模式):對文件的內容進行編輯。
- 末行模式(尾行模式):可以在末行輸入命令來對文件進行操作(搜索、替換、保存、退出、撤銷、高亮等等)。
vim打開文件的方式:
- #vim 文件路徑,打開指定的文件
- #vim +數字 文件的路徑,打開指定的文件,並且光標移動到指定行
- #vim +/關鍵詞 文件的路徑,打開指定的文件,並且高亮顯示關鍵詞
- #vim 文件路徑1 文件路徑2 ...,同時打開多個文件
模式切換:
命令模式
1.光標移動
- 光標移動到行首:shift + 6 或 ^
- 光標移動到行尾:shfit + 4 或 $
- 光標移動到首行:gg
- 光標移動到末行:G 或 shift + g
- 翻屛:向上ctrl+b ,向下ctrl+f
- 光標快速移動:
- 移動到指定的行:數字G,10G移動到10行
- 向上/向下移動n行:向上數字+↑,向下數字+↓
- 向左/向右移動n個字符:向左數字+←,向右數字+→
2.復制
- 復制光標所在行:yy
- 粘貼:p
- 復制光標及以下行:數字yy,3yy表示復制3行
- 可視化復制:ctrl+v ,然后選擇復制區域,並按下 yy 復制
3、剪切/刪除
- 剪切/刪除光標所在行:dd ,剪切了不粘貼就是刪除
- 剪切/刪除當前行及下行:數字dd,3dd剪切3行
- 剪切/刪除當前行,刪除行光標不上移動:D 或 shift d
4.撤銷/恢復
- 撤銷上一步:u 或者 :u
- 恢復:ctrl + r ,取消之前的撤銷
末行模式
末行模式由命令模式進入,按 “:” 或者 “/” 進入,“/”表示查找。
1.保存和退出
- 保存文件:":w"
- 另存文件:“:w 路徑”,:w 2.txt 另存為2.txt,源文件保存
- 退出文件:“:q”
- 保存並退出:“:wq”
2.強制
- 強制退出:“:q!” ,之前修改的操作不保存
- 調用外部命令,文件暫時隱藏:":! 指令",:! ls -lah,查看文檔
3.搜索和替換
- 搜索查找:“/關鍵詞”,/login 搜索login,前面沒有“:”。
- 在搜索結果中向上/向下查看結果:上N ,下n
- 取消高亮:“:nohl”,查找之后會一直高亮,取消之后才會沒有
- 替換搜索到的內容:
- “:s/要搜索的關鍵詞/新的內容” ,只替換光標所在行第一處符合條件的內容
- “:s/要搜索的關鍵詞/新的內容/g” ,替換光標所在行的內容
- “:%s/要搜索的關鍵詞/新的內容” ,替換整個文檔中每行中第一處符合條件的內容
- “:%s/要搜索的關鍵詞/新的內容/g” ,替換所有匹配到的內容
- %表示整個文檔,g 表示全局
4.其他
- 顯示行號:“set nu”,取消行號:“set nonu”,設置的只是暫時的
- 同時打開多個文件:vim 文件名1 文件名2 文件名3 ...
- 查看當前打開的文件名:":files"
- %a表示當前活躍(active)的文件,#表示上一個打開的文件
- 切換文件:
- 指定文件名稱:“:open 文件名稱”
- 切換上一個/下一個文件:下一個":bn",上一個":bp"
- 查看當前打開的文件名:":files"
編輯模式
在命令模式下輸入i、a、o、I、A、O、S等進入編輯模式。
- i :在光標所在字符前插入
- a :在光標所在字符后插入
- o :在光標所在行的下面另起一新行插入
- I :在光標所在行的行首開始插入,如果行首有空格則在空格之后插入
- A :在光標所在行的行尾開始插入
- O :在光標所在行的上面另起一行開始插入
- S :刪除光標所在行並開始插入
其他
1.代碼着色:控制代碼的顏色。
- 開啟和關閉代碼着色:“:syntax on”開啟,“:syntax off”關閉
2.vim中的計算器的使用
- 按下按鍵“ctrl + r”,會出現引號",然后輸入等到“=”,光標跳到最后一行,輸入要計算的算數
3.vim 的配置,一般包含三種情況
- 在文件打開的時候在末行模式下輸入的配置是臨時的;
- 個人配置文件(~/.vimrc),如果沒有則可新建
- 全局配置文件(vim自帶的,/etc/vimrc),配置沖突時以個人配置為准
- 在.vimrc中設置,比如顯示行號set nu ,比如着色syntax on
4.異常退出
- 在編輯文件之后並沒有正常退出wq,而是遇到突然關閉終端或斷電的情況,就會出現異常退出。
- 把出現的交換文件(在編輯過程中產生的臨時文件,'.文件名.swp')刪除掉
5.別名機制
- 相當於創建屬於自己的自定義命令,別名機制依靠一個別名映射文件"~/.bashrc"。
- 使用vim打開文件,添加別名比如alias cls='clear',添加之后需要重新登錄
6.退出方式
- vim除了“:q”或者":wq"退出登錄,還可以使用“:x”保存退出
- 使用 wq 退出時會修改時間,使用 :x 退出時不會修改時間,編譯會修改時間
- 大寫的 :X 是對文件進行加密
linux 自由服務
自由服務,即不需要用戶獨立去安裝的軟件的服務,而是當系統安裝好之后就可以直接使用的服務(內置的)。
運行模式
運行模式也稱為運行級別。
在 linux 中存在一個進程:init ,進程id是 1。查看 #ps -ef | grep init
該進程存在一個對應的配置文件:inittab (系統運行級別配置文件,位置 /etc/inittab)。在 Centos6.5 中存在 7 種運行級別。
id: 5: initdefault:
- 0 --- 表示關機級別(不要將默認的運行級別設置成0)
- 1 --- 單用戶模式
- 2 --- 多用戶模式,不帶 NFS (Network File System),沒有網
- 3 --- 多用戶模式,完全的多用戶模式,multi-user.target: analogous to runlevel 3
- 4 --- 沒有內使用的模式(被保留模式)
- 5 --- X11,完整的圖形化界面模式,graphical.target: analogous to runlevel 5
- 6 --- 表示重啟級別(不要將默認的運行界別設置成6,設置后重啟)
與運行級別相關命令,該命令調用 init 進程,將運行級別傳遞給進程,init 指令需要超級管理員權限:
- #init 0 --- 關機
- #init 3 --- 切換到不帶桌面的模式,臨時切換
- #init 5 --- 切換到圖形界面
- #init 6 --- 重啟電腦
用戶與用戶組管理
linux 系統是一個多用戶多任務的操作系統,任何一個要使用系統資源的用戶,都需要首先向系統管理員申請一個賬號,然后以這個賬號的身份進入系統。
用戶的賬號一方面可以幫助系統管理員對使用系統的用戶進行追蹤,並控制他們對系統資源的訪問;另一方面也可以幫助用戶組織文件,並為用戶提供安全性保護。
要實現用戶賬號的管理,需要完成:
- 用戶賬號的添加、刪除、修改以及用戶密碼的管理
- 用戶組的管理
用戶管理涉及到三個文件:
- /etc/passwd :存儲用戶的關鍵信息
- /etc/group : 存儲用戶組的關鍵信息
- /etc/shadow : 存儲用戶的密碼信息
用戶管理
1.添加用戶
- #useradd 選項 用戶名
- -g :表示指定用戶組,值可以是用戶組的id,也可以是組名 ;
- -G :表示用戶的用戶附加組
- -u :uid,用戶的id(用戶的標識符),不設置系統默認分配
- -c :添加注釋,如 #useradd -g 501 -G 500 -u 666 lisi
- 添加后查看:#tail -1 /etc/passwd,顯示test1:x:1001::/home/test1:/bin/bash
- 用戶名:密碼:用戶ID:用戶組ID:注釋:家目錄:解釋器shell , 如果用戶組已存在是不會顯示的,需查看/etc/group
- 不添加選項是,執行useradd會 創建同名的家目錄;創建同名的用戶組
2.修改用戶
- #usermod 選項 用戶名
- -g 用戶主組;-G 用戶附加組;-u 用戶id;-l 修改用戶名
- #usermod -g 500 -G 501 -l test1 zhangsan
- -s 修改用戶shell,#usermod -s /sbin/nologin test ,test 不能登錄系統
- -g 用戶主組;-G 用戶附加組;-u 用戶id;-l 修改用戶名
3.設置密碼
- #passwd 用戶名
- #passwd zhangsan
- 切換用戶命令: #su [用戶名] ,不指定用戶名表示切換到 root 用戶
4.刪除用戶
- #userdel 選項 用戶名
- -r :刪除用戶的同時,刪除家目錄;
- 已經登錄的用戶不能刪除,可以 #ps -ef | grep zhangsan 查看 pid ,然后 #kill pid 殺掉進程,再進行刪除
- 刪除用戶的權限只有 root 用戶
- -r :刪除用戶的同時,刪除家目錄;
用戶組管理
查看用戶組 #tail -1 /etc/group ,文件結構是 用戶組名:密碼:用戶組ID:組內用戶名 ,一般情況下不設置用戶組密碼,組內用戶名表示附加組是該組的用戶名稱
1.用戶組添加
- #groupadd 選項 用戶組名
- -g :類似用戶管理里的 -u ,表示設置一個用戶組ID
- #groupadd Administrators
- -g :類似用戶管理里的 -u ,表示設置一個用戶組ID
2.用戶組修改
- #groupmod 選項 用戶組名
- -g :類似 -u,用戶組 ID,#groupadd -g 1000 Administrators
- -n :類似用戶管理里的 -l ,修改用戶組名 #groupmod -n admins Administrators
3.用戶組刪除
- #groupdel 用戶組名,#groupdel admins
- 如果刪除的組是某用戶的主組時,不允許刪除;可以先從組內移除所有用戶
#usermod -g 0 admin
- 如果刪除的組是某用戶的主組時,不允許刪除;可以先從組內移除所有用戶
網絡設置
網卡配置文件位置:/etc/sysconfig/network-scripts
在目錄中網絡的配置文件命名格式:ifcfg-網卡名稱 ,其中 ONBOOT 表示是否開機啟動,BOOTPROTO 表示 ip 地址分配方式、DHCP 表示動態主機分配協議,HWADDR 表示硬件地址
重啟網卡:#service network restart ,有的版本不支持,但有一個共性的目錄:/etc/init.d 放着對服務的快捷方式。
- /etc/init.d/network restart
創建快捷方式:
- 軟鏈接:#ln -s 原始文件的路徑 快捷方式的路徑,#ls -l 查看到的lrw..中的l表示連接
重啟單個網卡:
- 停止某個網卡:#ifdown 網卡名,#ifdown eth0
- 開啟某個網卡: #ifup 網卡名,#ifup eth0
ssh 服務
ssh(secure shell,安全外殼協議),作用:遠程連接協議和遠程文件傳輸協議。默認端口22。配置文件位置:/etc/ssh/ssh_config
端口號修改注意:單口范圍 0-65535;不能使用已占用的端口。
服務啟動/停止/重啟:
- service sshd start/stop/restart
- /etc/init.d/sshd start/stop/restart
1.遠程終端
終端工具常用的:Xshell、secureCRT、Putty
2.SSH 服務文件傳輸工具:FileZilla 。新建站點的時候協議需要選擇:SFTP-SSH...
3.設置主機名
- 獲取主機名:#hostname , #hostname -f (FQDN全限定域名)
- 臨時設置主機名:#hostname 設置的主機名,設置之后需要切換用戶生效 #su
- 永久設置主機名(需重啟),主機名配置文件位置,/etc/sysconfig/network
- 設置主機名為臨時主機名就成為永久的:NETWORKING=yes HOSTNAME=localhost
- 修改linux服務器的 hosts 文件,將修改的主機名指向本地(設置FQDN) hosts 文件的位置 /etc/hosts:直接在該文件添加主機名
- 不設置 FQDN 有的軟件不能啟動;影響本地域名解析
chkconfig
相當於 windows 下安全輔助工具提供開機啟動項的管理服務。在 linux 下不是所有的軟件安裝完成后都有開機啟動服務,有的需要自己添加。
1.開機啟動服務查詢:#chkconfig --list
- 其中0-6表示各個啟動級別,比如 httpd ,其 3 級別關閉,表示其在 3 啟動形式下默認開機不啟動;5 關閉表示桌面環境下也不啟動
2.刪除服務:#chkconfig --del 服務名 ,#chkconfig --del httpd
3.添加開機啟動服務:#chkconfig --add 服務名 ,有的軟件沒有服務名,沒有服務名的不能運行 service 命令,添加無意義
4.設置服務在某個級別下開機啟動/不啟動:
- #chkconfig --level 連在一起的啟動級別 服務名 on/off ,#chkconfig --level 35 httpd on,#chkconfig --level 5 httpd off
ntp 服務
ntp 主要用於對計算機的時間進行同步管理的操作。
同步服務器時間方式有兩種:一次性同步(手動同步)和通過服務自動同步。時間上游同步。
1.一次性同步:#netdate 時間服務器的域名或ip地址,#netdate 120.25.108.11
2.設置同步時間服務,服務名 ntpd
- 啟動服務:#service ntpd start 或 /etc/init.d/ntpd start
- 設置開機啟動服務:#chkconfig --level 35 ntpd on
防火牆服務
防范一些網絡攻擊。在 centos 中防火牆有一個名稱:iptables,7.x 中默認使用的是 firewalld。
1.查看 iptables 是否開機啟動:
- 方法1:#ps -ef | grep iptables
- 方法2:#chkconfig --list | grep iptables
2.iptables 服務啟動/重啟/關閉
- service iptables start/restart/stop
- /etc/init.d/iptables start/stop/restart 或 /bin/systemctl stop firewalld
3.查看 iptables 的狀態
- #service iptables status
4.查看規則的命令
- #iptables -L -n ,-L表示列出隊則,-n表示將單詞表達形式改成數字形式顯示
5.簡單設置防火牆規則
- iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允許訪問80端口
- iptables -A INPUT -p tvp --dport 20 -j ACCEPT #運行FTP服務的20端口
- iptables -A INPUT -j reject #禁止其他為允許的規則訪問
- iptables 主命令;-A 添加規則,-p 制定協議;--dport 制定端口;INPUT 進站請求;-j 制定行為結果ACCEPT(允許)/禁止(reject)
- 添加完成之后需要保存操作:/etc/init.d/iptables save
rpm 管理
類似與 windows 中的軟件管理,對 linux 服務器上的軟件包進行對應管理:查詢、卸載、安裝。
1.查詢軟件是否安裝
- #rpm -qa | grep 關鍵詞
- -q 查詢,-a 全部;#rpm -qa | grep firefox
2.卸載軟件
- #rpm -e 軟件關鍵詞;卸載火狐 #rpm -e firefox
- 當被卸載軟件存在以來關系時不能卸載,可以使用以下命令忽略依賴關系:#rpm -e httpd --nodeps
3.軟件安裝
- 軟件安裝需要先獲得軟件包:a.去官網下載;b.從光盤或鏡像文件中讀取 #lsblk,查看光盤/U盤等
- 光盤的掛載和解掛
- 解掛:#umount 當前設備的掛載點(路徑),相當去移除U盤
- 掛載:#mount 設備原始地址 要掛載的位置路徑
- 設備原始地址同意在/dev下,然后根據大小確定name,拼湊在一起例如:"/dev/sr0"
- 要掛載的位置路徑:統一掛載在mnt下,如”/mnt/dvd“,沒有就創建
- 安裝軟件的命令:#rpm -ivh 軟件包完整名稱
- -i 安裝,-v 顯示進度條,-h 以#顯示進度條
cron / crontab 計划任務
在指定的時間點去執行任務。
語法:#crontab 選項
- 常用選項:
- -l :list,列出指定用戶的計划任務列表
- -e :edit ,編輯指定用戶的計划任務列表
- -u :user ,指定的用戶名,如果不指定,則是當前用戶
- -r :remove ,刪除指定用戶的計划任務列表
- 編輯計划任務:計划任務語法格式以行為單位,一行為一個計划
- 分 時 日 月 周 需要指定的命令,周0(星期天)~6
-
- : 表示取值范圍內每一個數字
-
- : 做連續區間表達式的,想要表示1~7,則寫成:1-7
- / : 表示每多少個,例如每10分鍾一次,*/10
- , : 表示多個不連續取值,例如1點2點6點,1,2,6
-
- 每月1、10、22日的4:45重啟network服務: 45 4 1,10,22 * * service neteork restart
- 每周六、周日的1:10重啟netwrok服務:10 1 * * 6,0 service network restart
- 每天18:00至23:00每隔30分鍾重啟network服務:*/30 18-23 * * * service network restart
- 每隔兩天的上午8點到11點的第3和第15分鍾執行一次重啟:3,15 8-11 */2 * * reboot
- 分 時 日 月 周 需要指定的命令,周0(星期天)~6
crontab 權限問題,配置文件在:/etc/cron.deny ,在該文件內添加用戶名,就能不允許該用戶配置。在 /etc/cron 創建 cron.allow 文件,添加用戶名該用戶為白名單用戶,白名單用戶級別高於黑名單。
權限管理
linux 的權限操作與用戶、用戶組有關。在多用戶(可以不同時)計算機系統的管理中,權限是指某個特定的用戶具有特定的系統資源使用權力。linux 系統一般將文件可存/取訪問的身份分為3個類別:owner、group、others,且3中身份各有read、write、execute等權限。
owner (文件所有者,默認為文檔的創建者),group (與文件所有者同組的用戶),others (其他人,相對於所有者)。在 linux 中,可以使用 #ls -l 查看文件的屬性。
drwxr-x---其中的 d 表示文件類型文件夾,rwx 表示文件所有者的權限且位置順序不會變,r-x 表示文件所屬用戶組權限,--- 表示其他人對這個文檔的權限。r 表示可讀,w 可寫,x 可執行,- 沒有對應權限或表示文件,l 表示軟連接。
權限設置
語法:#chmod 選項 權限模式 文檔
常用選項,要給文檔設置權限,操作者要么是 root 用戶,要么是文檔所有者:
- -R :遞歸設置權限(當文檔類型為文件夾的時候設置)
- 權限模式:需要設置的權限信息
- 文檔:文件或文件夾。路徑可以是相對路徑和絕對路徑
1.字母形式設置權限:
- 給誰設置:u 表示所有者身份,g 表示所有者同組用戶,o 給其他用戶設置,a 給所有人設置權限。默認是 a
- 權限字符:r、w、x
- 權限分配方式:+ 表示給具體用戶新增權限,- 刪除權限,= 將權限設置成具體的值
給 tt.txt 文件(-rw-------)設置所有者擁有全部權限,同組用戶擁有讀和執行權限,其他用戶只讀權限。 - #chmod u+x,g+rx,o+r tt.txt 或 #chmod u=rwx,g=rx,o=r tt.txt
2.數字形式
#chmod 777 tt.txt,r 等於 4,w 等於 2,x 等於 1 ,- 等於 0.
不能設置只能寫不能讀的權限,不能設置為 2 或者 3 .
3.注意事項:在 linux 中如果要刪除一個文件,不是看文件有沒有對應的權限,而是看文件所在的目錄是否有寫權限,如果有才可以刪除。
屬主與屬組設置
屬主:所屬的用戶(文檔的主人);屬組:所屬的用戶組。
2 root root 0前一個 root 表示屬主,后一個表示屬組。在文檔創建的時候會使用創建者的信息(用戶名、用戶所屬的主組名稱)
1.chown :更改文檔的所屬用戶
- 語法: #chown [-R] username 文檔路徑
- 將 root 用戶創建的 oo 目錄,所有者更改為 test:#chown test oo/
2.chgrp ,更改文檔的所屬用戶組
- 語法: #chgrp [-R] groupname 文檔路徑
- 將 root 創建的 oo 目錄所有者改為 test,並將所屬用戶組也改為 test: #chgrp test oo/
3.chown 還可以同時修改所屬用戶和所屬用戶組
- 語法: #chown [-R] username:groupname 文檔路徑
- 將 oo 目錄的所屬用戶和用戶組改回成 root ,並且包含其子目錄:#chown -R root:root oo/
其他
reboot、shutdown、init、halt、user管理,在普通用戶身份都是操作不了,但是有時又需要有執行權限,並且不可能讓 root 用戶把自己的密碼告訴普通用戶。可以使用sudo命令來進行權限設置,sudo 可以讓管理員(root)事先定義某些特殊指令誰可以執行。
默認 sudo 中時沒有除 root 之外用戶的規則,要想使用則需要先配置 sudo,sudo配置文件位置:/etc/sudoers 。
- 配置 sudo 文件需使用“#visudo”打開配置文件,使用方式與vim一致
- 配置普通用戶的權限,找到配置文件中的:root ALL=(ALL) ALL
- root 表示用戶名;ALL 表示允許登錄的主機(地址白名單);(ALL)表示以誰的身份執行,ALL表示 root 身份;ALL 表示當前用過戶可以執行的命令,多個命令可以使用“,”分割。
- 本身 test 用戶不能添加用戶,使用 sudo 配置將其配置為能以 root 身份進行添加用戶和設置密碼(但不能修改 root 用戶密碼)
- #visudo ,打開配置文件;在 sudo 規則的時候不建議寫直接形式的命令,而是寫命令的完整路徑。路徑可以使用 which 命令來查看,#which 指令名稱,如#which useradd
- 在配置文件中添加,禁止修改 root 密碼的配置: test ALL=(ALL) /usr/sbin/useradd, /usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
- 在添加好對應的規則后就可以切換用戶,切換到普通用戶 test 再去執行:#sudo 需要執行的指令,#sudo useradd aop
- 普通用戶查看自己的權限:#sudo -l
:!which useradd ==>> /sbin/useradd
:!which passwd ==>> /bin/passwd
linux 中的計算機網絡
網絡概述
1969年ARPANET(美國成立的國防部高級研究計划署)開始聯機,該年被成為 Internet 元年。網絡分類:局域網(LAN)、城域網(MAN)、廣域網(WAN)。網絡按照所有者划分為公網和私網。
1、IP 地址
IP 地址,ip即 internet protocol 網絡之間互聯的協議。IP 地址按類型分為:公有地址和私有地址。
公有地址(public address)由 Inter NIC(因特網信息中心)負責,將 IP 地址分配給注冊並向 Inter NIC 提出申請的組織機構,通過它直接訪問因特網。
私有地址(private address)屬於非注冊地址,專門為組織機構內部使用。以下時留用的內部私有地址分類:
- A 類 :10.0.0.0 -- 10.255.255.255
- B 類 :172.16.0.0 -- 172.31.255.255
- C 類 :192.168.0.0 -- 192.168.255.255
IP 地址按類型分為三類:
| 類別 | 最大網絡數 | IP 地址范圍 | 最大主機數 | 私有 IP地址分配 |
|---|---|---|---|---|
| A | 126(2^7 - 2) | 1.0.0.0 -- 127.255.255.255 | 16777214 | 10.0.0.0 -- 10.255.255.255 |
| B | 16384(2^14) | 128.0.0.0 -- 191.255.255.255 | 65534 | 172.16.0.0 -- 172.31.255.255 |
| C | 2097152(2^21) | 192.0.0.0 -- 223.255.255.255 | 254 | 192.168.0.0 -- 192.168.255.255 |
2、網卡
網卡時一個網絡組件,主要負責計算機之間數據的封裝和解封。MAC 地址:網卡的物理地址,網卡設備的編號,默認情況是全球唯一的(16進制的)。與 IP 地址的區別:長度不同,IP 地址為 32 位,MAC 地址為 48 位;分配依據不同;網絡尋址方式不同,OSI 參考模型中 IP 地址是在網絡層,MAC 地址是在數據鏈路層。
3、網線,在局域網中常見的網線主要有雙絞線(RJ45 接口)、同軸電纜、光纜三種。
4、交換機,是一種用於光電信號轉發的網絡設備,可以位接入交換機的任意兩個網絡節點提供獨享的電信號通路。集線器是共享帶寬的平分。常見交換機品牌華為、華三、思科、銳捷。
5、路由器,又稱網關設備(Gateway),用於連接多個邏輯上分開、相對獨立的網絡。
6、拓撲結構圖,拓撲就是把實體抽象成其大小、形狀無關的點,而把連接實體的線路抽象成線,進而以圖的形式來表示這些點與線之間關系的方法,目的在於研究點、線之間的相連關系。表示點和線之間關系的圖被稱為拓撲結構圖。常見的拓撲結構圖有:星型拓撲結構、總線型拓撲結構、環形拓撲結構、樹形拓撲結構、網狀拓撲結構、混合型拓撲結構、蜂窩網絡結構。
網絡相關命令
1、ping,檢測當前主機與目標主機之間的連通性
語法:#ping 主機地址(ip 地址、主機名、域名等),如 #ping www.baidu.com
2、netstat,查看網絡的連接信息
語法:
- #netstat -tnlp,-t tcp協議,-n 將字母轉換成數字,-l 列出狀態為監聽的,-p 顯示進程相關信息
- #netstat -an,-a 表示全部,-n 將字母轉化成數字
3、traceroute,查找目前主機與目標主機之間所有的網關(路由器,會給沿途各個路由器發送 icmp 數據包,路由器可能會不給響應)。該命令不是內置命令,需安裝。
語法:#traceroute 主機地址
4、arp,地址解析協議ARP,是根據 IP 地址獲取(MAC)物理地址的協議。
語法:
- #arp -a,查看本地緩存 MAC 表
- #arp -d 主機地址,刪除指定的緩存記錄
5、tcpdump,抓包,抓取數據包
語法:
- #tcpdump 協議 port 端口,#tcpdump port 22
- #tcpdump 協議 port 端口 host 地址
- #tcpdump -i 網卡設備名
上線流程
1、服務器選配
項目上線服務器必須是外網服務器,一般服務器有2中情況,購買真實服務器(成本高)、購買雲服務器(主流)。雲服務的廠商,阿里雲、騰訊雲、知道創宇(加速樂)、華為雲、盛大雲、新浪雲、亞馬遜雲等等。
步驟:
- 打開阿里雲官網,阿里雲,選擇產品中的“雲服務器 ECS”,點擊立即購買。
- 選擇具體配置:地域、IO等然后購買
- 進入后台查看信息,更多里面選擇“重置密碼”,然后重啟服務器,通過遠程終端工具就能連接了。
2、域名購買
步驟:
- 在產品中選擇域名購買,輸入想要注冊的域名,查看是否可以注冊
- 選擇需要的域名,點擊結算
- 購買成功在后台域名中查看信息
3、域名備案,當申請域名的人想要在國內使用域名,則需要向當地的通信管理局(省級)去申請報備。備案前提:需要使用境內服務器,必須備案。
在管理后台點擊備案---ICP備案系統,點擊新增主體備案,填寫完信息后點擊增加網站,其中的備案服務號需要在備案--備案服務號申請中申請;申請到備案號之后,會讓用戶下載一個圖片--網站真實性核驗單,下載打印填寫好上傳到阿里雲備案系統中,后面等待初審,初審通過后繼續下一步,需要拍照,上傳照片等待管局審核,通過后會收到工信部發送的短信與郵件通知,里面有備案號和備案密碼(用於注銷備案)。
4、域名解析,將域名綁定到一個服務器地址的操作,后台中點擊解析。當在瀏覽器中輸入一個域名,會向發送請求到 DNS Server,將域名轉換成 IP 地址的服務器。點擊添加解析,記錄類型中A-將域名指向一個IPV4地址,CNAME-將域名指向另一個域名,MX-將域名指向郵件服務器地址;記錄值是服務器的 IP 外網地址。
5、配置生產環境
6、上傳代碼,需要用到上傳工具。
Shell 基礎
Shell(外殼)是一個用 C 語言編寫的程序,它是用戶使用 linux 的橋梁,既是一種命令語言,又是一種程序設計語言。shell 是指一種應用程序,這個應用程序提供一個界面,用戶通過這個界面訪問操作系統內核的服務。
腳本就是一條條的文字命令,這些文字命令是可以看到的。常見的腳本:javascript、vbscript、asp、jsp、php、sql、perl、shell、python、ruby、javafx、lua等。
shell 是內置的腳本,程序開發的效率高。(批處理)語法簡單易學。linux 中默認的 shell 是 /bin/bash,流行的 shell 有 ash、bash、ksh、csh、zsh等。 bash 可以使用 #help 查看幫助。
shell 腳本分為簡單的寫法(命令的堆積)和復雜的寫法(程序設計)。
shell 規范
1.編寫規范:
# 代碼規范
#!/bin/bash [指定告知系統當前這個腳本要使用的 shell 解釋器]
shell 相關命令
# 命名規范
文件名.sh .sh 是 linux 下 bash shell 的默認后綴
2.使用流程:創建 .sh 文件 -->> 編寫 shell 代碼 -->> 執行 shell 腳本,必須要有執行權限 #chmod +x test.sh。運行的時候需要寫成 #./test.sh 或 #/root/test.sh 或 /bin/bash test.sh,linux 系統中的 PATH 環境變量存在路徑是 /bin,/sbin,/usr/bin,/usr/sbin 等。
#!/bin/bash
echo 'hello world!'
變量
1.變量的定義和使用
- 變量的定義(字母、下划線和數字): class_name=“hello world”
- 變量的使用: echo $class_name
- echo "$class_name" 與 echo '$class_name'
- 雙引號能識別變量,實現轉義;單引號不能識別變量,原樣輸出
- 變量的值是命令需要使用反引號:dt=
date +'%F %T'
2.只讀變量
語法:readonly 變量名;a=10 readonly a a=20 echo a -->> 10
3.接受用戶輸入
語法:read -p 提示信息 變量名,變量名用於保存輸入
#!/bin/bash
## 提示用戶輸入文件的名稱,自動創建文件
read -p '請輸入需要創建的文件路徑:' filepath
touch $filepath
echo '文件創建成功'
ls -l $filepath
4.刪除變量
語法:unset 變量名,b=20; echo b; unset b; echo b; -->> 20
條件判斷
## 語法1:if...then
if [ condition ]
then
command1
command2
...
fi
## 單行寫法,一般在命令行中執行
if [ condition ];then command;fi
## 語法2:if...then...else
if [ condition ]
then
command1
command2
...
else
command
fi
## 語法3:if...then...elif...then...fi
if [ condition1 ]
then
command
elif [ condition2 ]
then
command
else
command
fi
運算符
在 shell 中除了常見的算數運算符、關系運算符、邏輯運算符、字符運算符,還有文件測試運算符等。
原生 bash 不支持簡單的數學運算,但可以使用命令來實現,例如 awk 和 expr 。
關系運算符只支持數字,不支持字符串,除非字符串的值是數字。
文件測試運算符用於檢測 Unix/Linux 文件的各種屬性。
| 運算符 | 說明 | 舉例 |
|---|---|---|
| 算數運算符 | ||
| + | 加法 | expr $a + $b,表達式和運算符之間要有空格,完整的表達式要被 反引號包含 |
| - | 減法 | expr $a - $b |
| * | 乘法 | expr $a \* $b |
| / | 除法 | expr $a / $b |
| % | 取余 | expr $a % $b |
| = | 賦值 | a=$b |
| == | 相等,用於比較兩個數字,相同為 true | [$a == $b] ,條件判斷要放在方括號中,並且有空格 |
| != | 不想等,用於比較兩個數字,不相同為 true | [$a != $b] |
| 邏輯運算符 | ||
| -eq | 檢測兩個數是否相等,相等為 true | [ $a -q $b ] |
| -ne | 檢測兩個數是否相等,不想等為 true | [ $a -ne $b ] |
| -gt | 檢測左邊的數是否大於右邊的,大於為 true | [ $a -gt $b ] |
| -lt | 檢測左邊的數是否小於右邊的,小於為 true | [ $a -lt $b ] |
| -ge | 檢測左邊的數是否大於等於右邊的,是為 true | [ $a -ge $b ] |
| -le | 檢測左邊的數是否小於等於右邊的,是為 true | [ $a -le $b ] |
| ! | 非運算,表達式為 true 返回 false | [ !false ] 返回 true |
| -o | 或運算,有一個表達式為 true 則返回 true | [ $a -lt 20 -o $b -gt 100 ] |
| -a | 與運算,兩個表達式都為 true 才返回 true | [ $a -lt 20 -a $b -gt 100 ] |
| 字符串運算符 | ||
| = | 檢測字符串是否相等,相等返回 true | [ $a = $b ] |
| != | 檢測兩個字符串是否相等,不想等返回 true | [ $a != $b ] |
| -z | 檢測字符串長度是否為 0,為 0 返回 true | [ -z $a ] ,a 是數值會返回 true |
| -n | 檢測字符串長度是否為0,不為 0 返回 true | [ -n $a ] |
| str | 檢測字符串是否為空,不為空返回 true | [ $a ] |
| 文件測試運算符 | ||
| -b file | 檢測文件是否是塊設備,如果是返回 true | [ -b $file ],塊設備像 U盤、光盤這些 |
| -c file | 檢測文件是否是字符設備文件,如果是返回 true | [ -c $file ] |
| -d file | 檢測文件是否是目錄,如果是返回 true | [ -d $file] |
| -f file | 檢測文件是否是普通文件(既不是目錄也不是設備文件),如果是返回 true | [ -f $file ] |
| -q file | 檢測文件是否設置了 SGID 位,如果是返回 true | [ -q $file ] |
| -k file | 檢測文件是否設hi在了粘着位(Sticky Bit),如果是返回 true | [ -k $file ] |
| -p file | 檢測文件是否是有名管道,如果是返回 true | [ -p $file ] |
| -u file | 檢測文件是否設置了 SUID 位,如果是返回 true | [ -u $file ] |
| -r file | 檢測文件是否可讀,如果是返回 true | [ -r $file ] |
| -w file | 檢測文件是否可寫,如果是返回 true | [ -w $file ] |
| -x file | 檢測文件是否可執行,如果是返回 true | [ -x $file ] |
| -s file | 檢測文件是否為空(文件大小是否小於0),不為空返回 true | [ -s $file ] |
| -e file | 檢測文件(包括目錄)是否存在,如果是返回 true | [ -e $file ] |
shell 腳本附帶選項
在 shell 中如果處理 tail -10 /etc/passwd 這樣的命令行:
步驟:先調用 tail 指令;然后系統把后續選項傳遞給 tail;tail 先去打開指定的文件;最后取出最后 10 行。
自定義 shell 像內置命令一樣值傳遞,傳遞方式與上述一樣,需要定義接受參數。
傳遞:#./test.sh a b c
接收:在腳本中可以用”$1“表示 a,“$2”表示 b,“$3”表示 c,以此類推。即可以用“$”加上選項對應的序號進行接收,"$0"表示文件自身./test.sh。
#!/bin/bash
# 自定義指令'user',可以使用#user -add 用戶名,添加用戶;#user -del 用戶名,刪除用戶及其家目錄
if [ $1 = '-add' ];then
useradd $2
else
userdel -r $2
fi
-->>然后在控制台添加:#./test.sh -add aaa,刪除:#./test.sh -del aaa
--->>可以配置別名文件 vim ~/.bashrc,添加 alias user='/root/test.sh',切換用戶#su生效
--->>就可以使用#user -add aaa進行添加用戶了
linux 下的 MySQL
1.安裝方式
a. 源碼包形式,使用源碼編譯安裝方式安裝 ncurses (一種常用的終端庫)
解包常用語法:
#tar -zxvf *.tar.gz
#tar -jxvf *.tar.bz2
選項含義:
-z 或 --ungzip :通過 gzip 指令處理文件
-x 或 --extract 或 --get :從文件中還原文件
-v :顯示操作過程
-f 或 --file :指定一個文件
-j :支持 bzip2 解壓文件
步驟:
- 上傳壓縮包到服務器指定路徑,比如 /usr/local/src
- 解壓源碼包: #tar -zxvf ncurses-6.1.tar.gz
- 進入到解壓的文件夾,進行后續配置等操作
- 配置(配置文件名常為 config | configure | bootstrap)-> 編譯(make | bootstrap)-> 安裝(make install | bootstrap install)
- 配置需指定軟件的安裝目錄、需要依賴的位置、指定不需要可選以來、配置文件路徑、通用數據庫存儲位置等等
- 指定安裝的路徑:--prefix=路徑,如#./configure --prefix=/usr/local/ncurses
- 需要依賴的路徑: --with-PACKAGE 名=包所在的路徑
- 不需要依賴:--without-PACKAGE 名
- 編譯:#make
- 安裝:#make install
b. 二進制包形式(rpm)
指令:
- #rpm -qa | grep 關鍵詞 ,查詢安裝的情況
- #rpm -e 關鍵詞 [--nodeps] ,卸載安裝[是否忽略依賴關系]
- #rpm -ivh 完整名稱,安裝軟件需要完整的包名
- #rpm -Uvh 完整名稱,完整名稱可以是http路徑,升級軟件包
- #rpm -qf 文件路徑 ,查詢指定文件屬於哪個包,#rpm -qf /etc/httpd/conf/httpd.conf
使用二進制包安裝 lynx(一款純命令行的瀏覽器),安裝包的文件后綴名是 .rpm 的。#lynx --dump www.baidu.com,訪問百度。
c. yum 等傻瓜式安裝,不更改來源的情況下默認需要聯網的。
常用 yum 指令:
- #yum list ,列出本機已經裝的和可以裝的軟件
- #yum search 名,搜索是否有可用安裝包
- #yum [-y] install 包名,-y 可以避免安裝的時候提示是否確認安裝
- #yum [-y] update [包名],更新指定的包,不指定就更新全部的包
- #yum [-y] remove 包名,卸載指定的包
2.安裝 mysql
在安裝包之前可以先更新以下#yum update,然后添加 EPEL 源,這個為“紅帽系”的操作系統提供額外的軟件包。比如:
- rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm ,安裝epel-release
- rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm ,安裝PHP7的rpm源
- rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm ,安裝mysql源
- #yum install mysql-server,是安裝服務端的包,不是安裝客戶端的
- #yum install mysql-community-server.x86_64,安裝 mysql5.6
3.mysql 初始化
- #service mysqld start ,開啟mysql服務
- #netstat -tnlp ,查看端口號,mysql 默認端口號 3306
- #mysql_secure_installation
- Enter current password for root (enter for none): 第一次設置直接 enter 設置密碼
- Remove anonymous users? [Y/n] 是否移除匿名用戶,選擇Y
- Disallow root login remotely? [Y/n] 不允許 root 遠程登陸,n
- Remove test database and access to it? [Y/n] 是否移除測試數據庫,n
- Reload privilege tables now? [Y/n] 是否重新加載權限表,當更改了mysql用戶相關信息是 Y
設置了能遠程登陸可能存在不能遠程登陸的情況,需要修改用戶表里的數據:
- mysql> SELECT host,user FROM user; # 查詢所有用戶情況
- mysql> UPDATE user SET host='%' WHERE host='localhost.localdomain'
- 最后刷新權限表或者重啟 mysql
- mysql> flush privileges;
4.mysql 啟動:#service mysqld start | stop | retart
- 進入 mysql 的方式: #mysql -u 用戶名 -p
5.mysql 默認目錄/文件位置
數據庫存儲目錄:/var/lib/mysql
配置文件:/etc/my.cnf
6.備份與還原
a. 備份
全量備份(數據和結構):#mysqldump -u root -p 密碼 -A > 備份文件路徑.sql
指定庫備份(數據和結構):#mysqldump -u root -p 密碼 庫名 > 備份文件路徑.sql
多個庫備份(數據和結構):#mysqldump -u root -p 密碼 --databases db1 db2 >備份文件路徑.sql
# 計划任務,比如每隔 1 分鍾備份一次數據庫
#!/bin/bash
filename="test"`date +'%Y$m%d%H%M%S'`".sql"
mysqldump -uroot -padmin@123 -A > /root/$filename
#corntab -e
# 分 時 日 月 周 命令
* * * * * /root/test.sh
b. 還原
還原部分分為:mysql 命令行 source 方法和系統命令方法
1.還原全部數據庫:
(1)mysql 命令行:mysql> source 備份文件路徑
(2)系統命令行:#mysql -uroot -padmin@123 < 備份文件路徑
2.還原單個數據庫(需指定數據庫)
(1)mysql> use 庫名
mysql> source 備份文件路徑
(2)mysql -uroot -padmin@123 庫名 < 備份文件路徑
設置臨時 mysql 連接字符集:mysql>SET NAMES utf8;
7.mysql 的遠程管理工具
分為兩大類:B/S 架構 和 C/S 架構。在 B/S 中有 PMA(phpMyAdmin); C/S 中有 navicat 等。
網站運維
編譯安裝與卸載 Nginx
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。類似與 apache,其特點是占有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。
1.安裝 nginx,官網
(1)使用在服務器端下載的方式進行下載:
- #wget 地址
- 例如要下載 nginx 到 “/usr/local/src”,右鍵復制官網 tar 包鏈接地址
- #wget -P /usr/local/src http://nginx.org/download/nginx-1.15.12.tar.gz
(2)解壓 nginx 安裝包
- #tar -zxvf nginx-1.15.12.tar.gz
(3)進入解壓目錄,配置、編譯、安裝 - #./configure --prefix=/usr/local/nginx ,指定安裝路徑
- 如果配置時報錯沒有 PCRE 庫,#yum install pcre-devel,然后 #./configure --prefix=/usr/local/src --with-pcre
- 如果報錯缺少 zlib 庫,#yum install zlib-devel ,然后 #./configure --prefix=/usr/local/src --with-pcre --with-zlib=/usr/local/src/包名
- #make ,編譯
- #make install ,安裝
2.運行 nginx,因為 apache 默認占用端口是 80,nginx 占用的也是 80,所以直接啟動 nginx 是啟動不起來的,需關閉 apache,#service stop httpd
- 開啟 nginx 服務:#/usr/local/nginx/sbin/nginx
- 重啟/重載配置文件:#/usr/local/nginx/sbin/nginx -s reload
3.卸載編譯安裝的軟件
- #rm -rf 軟件的安裝路徑,卸載一個編譯安裝的軟件的時候必須先停止。
關於 LAMP
LAMP = Linux + Apache + MySQL +PHP
LNMP = Linux + Nginx + MySQL + PHP-fpm
LNMAP = Linux + Nginx + MySQL + PHP + Apache
登錄阿里雲控制台獲取需要連接的主機 ip 地址,用於遠程登錄。
1.PHP 與 Apache 的安裝
- 先裝 PHP 在安裝的時候會順帶安裝 Apache:#yum install php
- 如果啟動 apache 警告無法確定 FQDN 需要修改 apache 配置文件(/etc/httpd/conf/httpd.conf):#vim /etc/httpd/conf/httpd.conf
- 搜索 /ServerName,去掉 ServerName www.example.com:80 注釋,重啟就可以了
- 如果啟動 apache 警告無法確定 FQDN 需要修改 apache 配置文件(/etc/httpd/conf/httpd.conf):#vim /etc/httpd/conf/httpd.conf
測試 apache 在瀏覽器中輸入 ip 地址能運行 apache 測試頁面就可以了。
測試 PHP (默認的 apache 站點目錄:/var/www/html):創建一個 test.php 文件,添加代碼
- 如果頁面刷新顯示是代碼,則需要配置 /etc/httpd/conf/httpd.conf,配置完成后需要重啟 apache 服務。
<Directory />
AllowOverride none
Require all denied --- >>> Require all granted
</Directory>
AddType application/x-gzip .gz .tgz
# 下面添加一行
AddType application/x-httpd-php .php
<IfModule dir_module>
DirectoryIndex index.html -->> DirectoryIndex index.html index.php
</IfModule>
2.安裝 mysql :#yum install mysql-server
阿里雲后台相關的端口需要打開,比如 80 ,3306
3.項目上線
上傳文件,如果配置的時候顯示不支持 mysqli_connect(),則需要 mysqli 擴展:#yum install php-mysqli
VMware
vmware為我們提供了三種網絡工作模式,它們分別是:Bridged(橋接模式)、NAT(網絡地址轉換模式)、Host-Only(僅主機模式)。
打開vmware虛擬機,我們可以在選項欄的“編輯”下的“虛擬網絡編輯器”中看到VMnet0(橋接模式)、VMnet1(僅主機模式)、VMnet8(NAT模式),那么這些都是有什么作用呢?其實,我們現在看到的VMnet0表示的是用於橋接模式下的虛擬交換機;VMnet1表示的是用於僅主機模式下的虛擬交換機;VMnet8表示的是用於NAT模式下的虛擬交換機。
同時,在主機上對應的有VMware Network Adapter VMnet1和VMware Network Adapter VMnet8兩塊虛擬網卡,它們分別作用於僅主機模式與NAT模式下。在“網絡連接”中我們可以看到這兩塊虛擬網卡,如果將這兩塊卸載了,可以在vmware的“編輯”下的“虛擬網絡編輯器”中點擊“還原默認設置”,可重新將虛擬網卡還原。
Bridged(橋接模式)
橋接模式就是將主機網卡與虛擬機虛擬的網卡利用虛擬網橋進行通信。在橋接的作用下,類似於把物理主機虛擬為一個交換機,所有橋接設置的虛擬機連接到這個交換機的一個接口上,物理主機也同樣插在這個交換機當中,所以所有橋接下的網卡與網卡都是交換模式的,相互可以訪問而不干擾。在橋接模式下,虛擬機ip地址需要與主機在同一個網段,如果需要聯網,則網關與DNS需要與主機網卡一致。其網絡結構如下圖所示:
設置虛擬機為橋接模式:
- 選擇需要編輯的虛擬機,點擊“編輯虛擬機設置”,選擇“網絡適配器”-->>“橋接模式”。
- 查看 windows 上網絡連接信息,IPv4地址:192.168.0.117,IPv4 默認網關:192.168.0.1,IPv4 DNS 服務器:192.168.0.1
- 進入系統編輯網卡配置文件,#vim /etc/sysconfig/network-scripts/ifcig-ens33
- HWADDR= 00:0c:29:92:12:b2 -->> 設置網卡物理地址,查看是 #ip addr
- IPADDR=192.168.0.120 -->> 設置與主機 ip 地址在同一網段
- NETMASK=255.255.255.0 -->> 設置子網掩碼
- GATEWAY=192.168.0.1 -->> 設置虛擬機網關,與主機相同
- DNS1=192.168.0.1 -->> 設置虛擬機DNS,與主機相同
- BOOTROTO=none -->> 修改默認設置
- 重啟網卡 #service network restart,查看是否聯網 #ping www.baidu.com
NAT(地址轉換模式)
如果你的網絡ip資源緊缺,但是你又希望你的虛擬機能夠聯網,這時候NAT模式是最好的選擇。NAT模式借助虛擬NAT設備和虛擬DHCP服務器,使得虛擬機可以聯網。其網絡結構如下圖所示:
設置虛擬機為 NAT 模式:
- 打開 VMware,點擊“編輯”下的“虛擬機網絡編輯器”,設置 NAT 參數。
- 選擇 VMnet8,先點擊“NAT 設置”設置網關 IP,再點擊“DHCP 設置”設置“起始 IP 地址”、“結束 IP 地址”、以及“租用時間”。
- 選擇虛擬機,點擊“編輯虛擬機設置”,選擇“網絡適配器”-->>“NAT 模式”。
- 進入虛擬機編輯網卡配置文件,#vim /etc/sysconfig/network-scripts/ifcig-ens33
- 注釋掉 HWADDR
- BOOTPROTO=dhcp -->> 動態獲取 ip 地址,如果設置為靜態,則配置 ip 需要在 DHCP 地址范圍內
- 不需要手動配置則注釋掉:IPADDR、NETMASK、GATEWAY、DNS1
- 重啟網卡 #service network restart,查看是否聯網 #ping www.baidu.com
Host-Only(僅主機模式)
Host-Only模式其實就是NAT模式去除了虛擬NAT設備,然后使用VMware Network Adapter VMnet1虛擬網卡連接VMnet1虛擬交換機來與虛擬機通信的,Host-Only模式將虛擬機與外網隔開,使得虛擬機成為一個獨立的系統,只與主機相互通訊。其網絡結構如下圖所示:
設置虛擬機為 Host-Only 模式:
- 編輯“虛擬機網絡編輯器”,設置 DHCP 的起始范圍。
- 點擊“虛擬機設置”,選擇“網絡適配器”-->>“僅主機模式”
- 啟動系統,設置網卡文件
- BOOTPROTO=dhcp
- IPADDR、NETMASK、GATEWAY、DNS1可以注釋
- 重啟網卡,測試連接通信。
- 主機與虛擬機通信之后,如果想要聯網,需要將網絡分享給網卡。
- 在“網絡適配器”中選擇聯網的網卡,查看屬性,點擊“共享”
- 勾選“允許其他網絡用戶通過此計算機的...”,並選擇網卡"... VMnet1"
- 設置網卡 "...VMnet1"的 ip 地址為 192.168.93.1,進入系統編輯網卡配置:
- GATEWAY=192.168.93.1
- DNS=192.168.93.1
- 重啟網卡 #service network restart,查看是否聯網
其他
遠程管理線上服務器
1、添加用戶,添加組,設置權限
- 設置密碼除了 passwd,還可以使用 #echo 123|passwd --stdin code1
- stdin :標准輸入,鍵盤上輸入的內容,0
- stdout :標准輸出,屏幕上輸出的正確的結果,1
- stderr :標准錯誤,屏幕上輸出的錯誤的結果,2
- ./1.sh >/dev/null 2>/tmp/3.log
- ./1.sh &>/tmp/4.log 等價於 ./1.sh >/tmp/5.log 2>&1
- 權限分類:普通權限(rwx)、高級權限、默認權限、ACL 控制策略
- 高級權限:
- 冒險位(set uid) -- 4000 針對一些命令,臨時擁有文件的擁有者權限
- #chmod u+s /usr/bin/vim 或 #chmod 4755 /usr/bin/vim
- 強制位(set gid) -- 2000 一般針對公共目錄,用於強制位表示任何用戶在該目錄下創建的文件的強制繼承該目錄的屬組
- #chmod g+s /share/dir 或 #chmod 2755 /share/dir
- 粘滯位(sticky bit) -- 1000 一般針對公共目錄,用於粘滯位表示除了 root 和文件的創建者可以刪除自己的文件,其他人只能管理子的的文件
- #chmod o+t /data/code 或 #chmod 1755 /data/code
- 冒險位(set uid) -- 4000 針對一些命令,臨時擁有文件的擁有者權限
- 高級權限:
-- 添加三個開發人員 code1 code2 code3
#useradd code1 #useradd code2 #useradd code3;
-- 添加密碼,以此類推
#echo 123|passwd --stdin code1
-- 添加一個 code 組,並把 code1 等添加到該組,有兩種方法
#groupadd code
#usermod -G code code1
#gpasswd -a code2 code #gpasswd -a code3 code
-- 查看用戶信息
#id code1 或者 #tail /etc/group
-- 創建一個目錄/data/code,開發人員能在這里面創建文件
#mkdir -p /data/code
#chgrp code /data/code #chmod g+w /data/code
-- 開發人員只能管理自己的文件,不能刪除其他人文件
#chmod o+t /data/code/
2、線上環境禁止 root 遠程登錄
(1)scp 命令:遠程拷貝
- #scp 需要拷貝的文件 遠程服務器,將本地文件拷貝到遠程
- #scp file1 per1@10.1.1.1:/tmp/
- #scp 遠程文件 本地路徑,將遠程文件拷貝到本地
- #scp -r per1@10.1.1.1:/tmp/dir1 /data/code,-r 遞歸拷貝
(2)cp 命令:本地拷貝
(3)ssh 客戶端工具使用:
- #scp -r per1@10.1.1.1:/tmp/dir1 /data/code,-r 遞歸拷貝
- #ssh --help ,#man ssh ,查看幫助
- #ssh 遠程連接的主機ip地址,如 #ssh 10.1.1.1,不指定用戶就是當前用戶,前提是遠程主機有對應用戶
- #ssh 用戶名@主機ip地址,如 #ssh per1@10.1.1.1
- #ssh -l per1 -p 22 10.1.1.1 , #ssh 10.1.1.1 hostname
(4)查看端口:
- #netstat -tnlp | grep 22 或者 #ss -ntlp | grep 22 或者 #lsof -i :22
(5)禁止 root 遠程登錄,查看 sshd 服務: - #rpm -qf /usr/sbin/sshd,查看安裝包
- #rpm -ql openssh-server ,查看安裝生成哪些文件
- 其中 ../init.d/sshd 是啟動腳本,./sshd_config 配置文件,../sbin/sshd 程序本身
- 禁止遠程登錄
- 修改配置文件,#man sshd_config,查看配置文件
- PermitRootLogin no,找到位置並設置,保存重啟服務
3、修改 sshd 服務默認端口為 10022(在生產服務器上修改的)
- 首先查看端口是否被占用,
- #grep 10022 /etc/services ,#lsof -i 10022,#ss -a|grep 10022 ,#netstat -a|grep 10022
- 修改 sshd 配置文件, Port 10022,重啟服務
- 跳板機上登錄: #ssh -lper1 10.1.1.1 -p10022
- 更改 ssh 客戶端配置文件不想驗證指紋,StrictHostKeyChecking yes,表示直接比對 ~/.ssh/known_hosts 文件中的公鑰
4、ssh 免密登錄,跳板機上生成一對密鑰:公鑰 和 私鑰。生成之后把 公鑰 拷貝到遠程主機的 ~/.ssh/ 目錄里。
- 生成密鑰:#ssh-keygen ,然后回車,id_rsa 私鑰,id_rsa.pub 公鑰
- 拷貝公鑰到遠程主機:#ssh-copy-id -i per1@10.1.1.1 或者 #scp id_rsa.pub per1@10.1.1.1:/home/per1/.ssh/authorized_keys
5、rsync 實現數據同步
(1)sync 同步,async 異步,rsync 遠程同步。rsync 可以保存原有的權限,owner,group,時間,軟硬鏈接,文件 acl,文件屬性信息等。
(2)本地同步:
- #rsync -av /dir1/ /dir2 ,dir1 后面的 / 會影響同步結果,前面是來源,后面是目的地
- #rsync -av --delete /dir1/ /dir2 ,傳出多余的文件
(3)遠程同步:
- #rsync -av --delete /dir1/ /dir2 ,傳出多余的文件
- 同步到遠程push: #rsync -avR /dir1/ 10.1.1.1:/backup ,R 同步 dir1 目錄及文件
- 本地同步遠程pull :#rsync -avR 10.1.1.1:/backup/app /dir1
(4)rsync 作為后台程序使用 - 創建配置文件:#vim /etc/rsyncd.conf
- 文件內容: [app_name] path=/app/project log file=/var/log/rsync.log
- #rsync --daemon ,啟動服務
- 查看是否啟動: #netstat -ntlp | grep 873
DNS
DNS(domain name system)域名管理系統,域名是由特定的格式組成,用來表示互聯網中某一台計算機或計算機組的名稱,能夠使人方便的訪問互聯網。
DNS 作用:
- 域名的正向解析:將主機域名轉化為 IP 地址。域名 -->> IP,A 記錄
- 域名的反向解析:將 IP 地址轉換成域名。IP -->> 域名,PTR 記錄
DNS 的結構: - 根域:在整個 DNS 系統的最上方一定是 .(小數點)這個服務器(稱為 root)。
- 一級域名(頂級域 | 國家域):com edu gov org cc io | cn uk us ru ja ko
- 二級域名:qq.com. baidu.com. google.com.
