LInux 入門.md

Linux 入門

1.Linux 前身 Unix。javascript

  • 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 爲了達成使用者所須要的正確運算結果,必需要管理的事項有:系統呼叫接口;行程管理;內存管理;檔案系統管理;裝置的驅動。php

3.開源
斯特曼 Stallman,開源文化倡導人,1983年 GNU計劃,1985年 FSF基金會,1990年 Emacs、GCC(c語言的編譯器)、程序庫,1991年 他找 Linus 商談 Linux 開源,1992年 GNU/Linux。html

4.Linux 系統特色:開放性、多用戶、多任務、穩定性
5.Linux 分支:著名的有 ubuntu、debian、centos、redhat、suse等java

6.Linux 安裝:真機安裝;虛擬機安裝。虛擬機,模擬真實的電腦環境,比較有名的虛擬機,vmware和virtual box(輕量級)。vmware下載 virtual box下載node

7.Linux 文件:Linux 一切皆文件。python

Linux 指令

在 Linux 終端(命令行)中輸入的就是指令,指令的通用格式:#指令主體 [選項] [操做對象]。一個指令包含多個選項,操做對象也能夠是多個。如下部分只統計了部分經常使用指令。mysql

基礎指令

1.lslinux

  • #ls :查看當前工做目錄下的全部文件/文件夾
    • #ls 路徑名,查看指定目錄下文件/文件夾,#ls ../../root
  • #ls -lha [路徑],-l 表示以詳細列表顯示,-a顯示隱藏文件,-h以可讀性更高的方式顯示

2.pwd , #pwd ,打印當前工做路徑nginx

3.cd , #cd 路徑,切換當前工做目錄,cd ~ 切換到家目錄web

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表示遞歸複製

7.mv

  • #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 +數字 文件的路徑,打開指定的文件,而且光標移動到指定行
  • #vim +/關鍵詞 文件的路徑,打開指定的文件,而且高亮顯示關鍵詞
  • #vim 文件路徑1 文件路徑2 ...,同時打開多個文件

模式切換:

 

vim模式切換
vim模式切換

 

命令模式

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 複製

三、剪切/刪除

  • 剪切/刪除光標所在行: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"

編輯模式

在命令模式下輸入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 的配置,通常包含三種狀況

  1. 在文件打開的時候在末行模式下輸入的配置是臨時的;
  2. 我的配置文件(~/.vimrc),若是沒有則可新建
  3. 全局配置文件(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 不能登陸系統

3.設置密碼

  • #passwd 用戶名
    • #passwd zhangsan
  • 切換用戶命令: #su [用戶名] ,不指定用戶名錶示切換到 root 用戶

4.刪除用戶

  • #userdel 選項 用戶名
    • -r :刪除用戶的同時,刪除家目錄;
      • 已經登陸的用戶不能刪除,能夠 #ps -ef | grep zhangsan 查看 pid ,而後 #kill pid 殺掉進程,再進行刪除
    • 刪除用戶的權限只有 root 用戶

用戶組管理

查看用戶組 #tail -1 /etc/group ,文件結構是 用戶組名:密碼:用戶組ID:組內用戶名 ,通常狀況下不設置用戶組密碼,組內用戶名錶示附加組是該組的用戶名稱

1.用戶組添加

  • #groupadd 選項 用戶組名
    • -g :相似用戶管理裏的 -u ,表示設置一個用戶組ID
      • #groupadd Administrators

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
    • 每個月一、十、22日的4:45重啓network服務: 45 4 1,10,22 * * service neteork restart
    • 每週6、週日的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

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)。網絡按照全部者劃分爲公網和私網。

一、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

二、網卡
網卡時一個網絡組件,主要負責計算機之間數據的封裝和解封。MAC 地址:網卡的物理地址,網卡設備的編號,默認狀況是全球惟一的(16進制的)。與 IP 地址的區別:長度不一樣,IP 地址爲 32 位,MAC 地址爲 48 位;分配依據不一樣;網絡尋址方式不一樣,OSI 參考模型中 IP 地址是在網絡層,MAC 地址是在數據鏈路層。

三、網線,在局域網中常見的網線主要有雙絞線(RJ45 接口)、同軸電纜、光纜三種。

四、交換機,是一種用於光電信號轉發的網絡設備,能夠位接入交換機的任意兩個網絡節點提供獨享的電信號通路。集線器是共享帶寬的平分。常見交換機品牌華爲、華3、思科、銳捷。

五、路由器,又稱網關設備(Gateway),用於鏈接多個邏輯上分開、相對獨立的網絡。

六、拓撲結構圖,拓撲就是把實體抽象成其大小、形狀無關的點,而把鏈接實體的線路抽象成線,進而以圖的形式來表示這些點與線之間關係的方法,目的在於研究點、線之間的相連關係。表示點和線之間關係的圖被稱爲拓撲結構圖。常見的拓撲結構圖有:星型拓撲結構、總線型拓撲結構、環形拓撲結構、樹形拓撲結構、網狀拓撲結構、混合型拓撲結構、蜂窩網絡結構。

網絡相關命令

一、ping,檢測當前主機與目標主機之間的連通性
語法:#ping 主機地址(ip 地址、主機名、域名等),如 #ping www.baidu.com

二、netstat,查看網絡的鏈接信息
語法:

  • #netstat -tnlp,-t tcp協議,-n 將字母轉換成數字,-l 列出狀態爲監聽的,-p 顯示進程相關信息
  • #netstat -an,-a 表示所有,-n 將字母轉化成數字

三、traceroute,查找目前主機與目標主機之間全部的網關(路由器,會給沿途各個路由器發送 icmp 數據包,路由器可能會不給響應)。該命令不是內置命令,需安裝。
語法:#traceroute 主機地址

四、arp,地址解析協議ARP,是根據 IP 地址獲取(MAC)物理地址的協議。
語法:

  • #arp -a,查看本地緩存 MAC 表
  • #arp -d 主機地址,刪除指定的緩存記錄

五、tcpdump,抓包,抓取數據包
語法:

  • #tcpdump 協議 port 端口,#tcpdump port 22
  • #tcpdump 協議 port 端口 host 地址
  • #tcpdump -i 網卡設備名

上線流程

一、服務器選配
項目上線服務器必須是外網服務器,通常服務器有2中狀況,購買真實服務器(成本高)、購買雲服務器(主流)。雲服務的廠商,阿里雲、騰訊雲、知道創宇(加速樂)、華爲雲、盛大雲、新浪雲、亞馬遜雲等等。

步驟:

  1. 打開阿里雲官網,阿里雲,選擇產品中的「雲服務器 ECS」,點擊當即購買。
  2. 選擇具體配置:地域、IO等而後購買
  3. 進入後臺查看信息,更多裏面選擇「重置密碼」,而後重啓服務器,經過遠程終端工具就能鏈接了。

二、域名購買
步驟:

  1. 在產品中選擇域名購買,輸入想要註冊的域名,查看是否能夠註冊
  2. 選擇須要的域名,點擊結算
  3. 購買成功在後臺域名中查看信息

三、域名備案,當申請域名的人想要在國內使用域名,則須要向當地的通訊管理局(省級)去申請報備。備案前提:須要使用境內服務器,必須備案。
在管理後臺點擊備案---ICP備案系統,點擊新增主體備案,填寫完信息後點擊增長網站,其中的備案服務號須要在備案--備案服務號申請中申請;申請到備案號以後,會讓用戶下載一個圖片--網站真實性覈驗單,下載打印填寫好上傳到阿里雲備案系統中,後面等待初審,初審經過後繼續下一步,須要拍照,上傳照片等待管局審覈,經過後會收到工信部發送的短信與郵件通知,裏面有備案號和備案密碼(用於註銷備案)。

四、域名解析,將域名綁定到一個服務器地址的操做,後臺中點擊解析。當在瀏覽器中輸入一個域名,會向發送請求到 DNS Server,將域名轉換成 IP 地址的服務器。點擊添加解析,記錄類型中A-將域名指向一個IPV4地址,CNAME-將域名指向另外一個域名,MX-將域名指向郵件服務器地址;記錄值是服務器的 IP 外網地址。

五、配置生產環境

六、上傳代碼,須要用到上傳工具。

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 源,這個爲「紅帽系」的操做系統提供額外的軟件包。好比:

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 地址
  • #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

測試 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須要與主機網卡一致。其網絡結構以下圖所示:

 


 

 

設置虛擬機爲橋接模式:

  1. 選擇須要編輯的虛擬機,點擊「編輯虛擬機設置」,選擇「網絡適配器」-->>「橋接模式」。
  2. 查看 windows 上網絡鏈接信息,IPv4地址:192.168.0.117,IPv4 默認網關:192.168.0.1,IPv4 DNS 服務器:192.168.0.1
  3. 進入系統編輯網卡配置文件,#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 -->> 修改默認設置
  4. 重啓網卡 #service network restart,查看是否聯網 #ping www.baidu.com

NAT(地址轉換模式)

若是你的網絡ip資源緊缺,可是你又但願你的虛擬機可以聯網,這時候NAT模式是最好的選擇。NAT模式藉助虛擬NAT設備和虛擬DHCP服務器,使得虛擬機能夠聯網。其網絡結構以下圖所示:

 


 

 

設置虛擬機爲 NAT 模式:

  1. 打開 VMware,點擊「編輯」下的「虛擬機網絡編輯器」,設置 NAT 參數。
    • 選擇 VMnet8,先點擊「NAT 設置」設置網關 IP,再點擊「DHCP 設置」設置「起始 IP 地址」、「結束 IP 地址」、以及「租用時間」。
  2. 選擇虛擬機,點擊「編輯虛擬機設置」,選擇「網絡適配器」-->>「NAT 模式」。
  3. 進入虛擬機編輯網卡配置文件,#vim /etc/sysconfig/network-scripts/ifcig-ens33
    • 註釋掉 HWADDR
    • BOOTPROTO=dhcp -->> 動態獲取 ip 地址,若是設置爲靜態,則配置 ip 須要在 DHCP 地址範圍內
    • 不須要手動配置則註釋掉:IPADDR、NETMASK、GATEWAY、DNS1
  4. 重啓網卡 #service network restart,查看是否聯網 #ping www.baidu.com

Host-Only(僅主機模式)

Host-Only模式其實就是NAT模式去除了虛擬NAT設備,而後使用VMware Network Adapter VMnet1虛擬網卡鏈接VMnet1虛擬交換機來與虛擬機通訊的,Host-Only模式將虛擬機與外網隔開,使得虛擬機成爲一個獨立的系統,只與主機相互通信。其網絡結構以下圖所示:

 


 

 

設置虛擬機爲 Host-Only 模式:

  1. 編輯「虛擬機網絡編輯器」,設置 DHCP 的起始範圍。
  2. 點擊「虛擬機設置」,選擇「網絡適配器」-->>「僅主機模式」
  3. 啓動系統,設置網卡文件
    • BOOTPROTO=dhcp
    • IPADDR、NETMASK、GATEWAY、DNS1能夠註釋
  4. 重啓網卡,測試鏈接通訊。
  5. 主機與虛擬機通訊以後,若是想要聯網,須要將網絡分享給網卡。
    • 在「網絡適配器」中選擇聯網的網卡,查看屬性,點擊「共享」
    • 勾選「容許其餘網絡用戶經過此計算機的...」,並選擇網卡"... VMnet1"
  6. 設置網卡 "...VMnet1"的 ip 地址爲 192.168.93.1,進入系統編輯網卡配置:
    • GATEWAY=192.168.93.1
    • DNS=192.168.93.1
  7. 重啓網卡 #service network restart,查看是否聯網

其餘

遠程管理線上服務器

一、添加用戶,添加組,設置權限

  • 設置密碼除了 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
-- 添加三個開發人員 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/

二、線上環境禁止 root 遠程登陸
(1)scp 命令:遠程拷貝

  • #scp 須要拷貝的文件 遠程服務器,將本地文件拷貝到遠程
  • #scp 遠程文件 本地路徑,將遠程文件拷貝到本地
    • #scp -r per1@10.1.1.1:/tmp/dir1 /data/code,-r 遞歸拷貝
      (2)cp 命令:本地拷貝
      (3)ssh 客戶端工具使用:
  • #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,找到位置並設置,保存重啓服務

三、修改 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 文件中的公鑰

四、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

五、rsync 實現數據同步
(1)sync 同步,async 異步,rsync 遠程同步。rsync 能夠保存原有的權限,owner,group,時間,軟硬連接,文件 acl,文件屬性信息等。
(2)本地同步:

  • #rsync -av /dir1/ /dir2 ,dir1 後面的 / 會影響同步結果,前面是來源,後面是目的地
    • #rsync -av --delete /dir1/ /dir2 ,傳出多餘的文件
      (3)遠程同步:
  • 同步到遠程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.
相關文章
相關標籤/搜索