留給以後的自己和有需要的朋友
主要内容如下:
一為什麼學linux
- 商業伺服器j基本都是linux
- 時下最熱門的大資料機器學期首選linux
- 整個網際網路地基是linux撐起來
- 開源軟體首先支援linux
- 嵌入式開發
二學習目的
- 掌握linux伺服器運維能力
- 可獨立部署linux伺服器
- 系統梳理相關知識
三基本概念
- 一切皆檔案的了解:Linux 與其他類 UNIX 系統一樣并不區分檔案與目錄:目錄是記錄了其他檔案名的檔案。使用指令 mkdir 建立目錄時,若期望建立的目錄的名稱與現有的檔案名(或目錄名)重複,則會建立失敗。
- Linux 将裝置當做檔案進行處理,下面代碼.展示了如何打開裝置檔案 /dev/input/event5 并讀取檔案内容。檔案 event5 表示一種輸入裝置,其可能是滑鼠或鍵盤等。檢視檔案 /proc/bus/input/devices 可知 event5 對應裝置的類型。裝置檔案 /dev/input/event5 使用 read() 以字元流的方式被讀取。結構體 input_event 被定義在核心頭檔案 linux/input.h 中。
代碼 打開并讀取裝置檔案
1 2 3 4 5 6 7 int fd;
struct input_event ie;
fd = open("/dev/input/event5", O_RDONLY);
read(fd, &ie, sizeof(struct input_event));
printf("type = %d code = %d value = %d\n",
ie.type, ie.code, ie.value);
close(fd);
四基本指令和操作
- 輸入指令和目錄時Tab鍵補全,支援輕按兩下
- ifconfig:顯示或配置網卡,yum install net-tools
- 127.0.0.1的了解。一台電腦可以了解為有三塊網卡,一塊網卡叫做 loopback(這是一塊虛拟網卡)用來測試本機的TCP/IP協定棧,發往這段A類位址資料包不會出網卡,網絡裝置不會對其做路由;另外一塊網卡叫做 ethernet (這是你的有線網卡);第三塊網卡叫做 wlan(這是你的無線網卡)。其中127.0.0.1/8整個都是環回位址,用來測試本機的TCP/IP協定棧,發往這段A類位址資料包不會出網卡,網絡裝置不會對其做路由,環回位址是主機用于向自身發送通信的一個特殊位址。可以這麼說:同一台主機上的兩項服務若使用環回位址而非配置設定的主機位址,就可以繞開TCP/IP協定棧的下層。(也就是說:不用再通過什麼鍊路層,實體層,以太網傳出去了,而是可以直接在自己的網絡層,運輸層進行處理了)。網絡号為127的位址根本就不是一個網絡位址(因為産生的IP資料報就不會到達外部網絡接口中,是不離開主機的包)。 當作業系統初始化本機的TCP/IP協定棧時,設定協定棧本身的IP位址為127.0.0.1(保留位址),并注入路由表。當IP層接收到目的位址為127.0.0.1(準确的說是:網絡号為127的IP)的資料包時,不調用網卡驅動進行二次封裝,而是立即轉發到本機IP層進行處理,由于不涉及底層操作。是以,ping 127.0.0.1一般作為測試本機TCP/IP協定棧正常與否的判斷之一。 是以說:127.0.0.1是保留位址之一,隻是被經常的使用,來檢驗本機TCP/IP協定棧而已
- service xxx start 後面是一個腳本,啟動對應的程式
- systemctl指令是系統服務管理器指令,它實際上将 service 和 chkconfig 這兩個指令組合到一起
-
任務 舊指令 新指令 使某服務自動啟動 chkconfig --level 3 httpd on systemctl enable httpd.service 使某服務不自動啟動 chkconfig --level 3 httpd off systemctl disable httpd.service 檢查服務狀态 service httpd status systemctl status httpd.service (服務詳細資訊) systemctl is-active httpd.service (僅顯示是否 Active) 顯示所有已啟動的服務 chkconfig --list systemctl list-units --type=service 啟動某服務 service httpd start systemctl start httpd.service 停止某服務 service httpd stop systemctl stop httpd.service 重新開機某服務 service httpd restart systemctl restart httpd.service - vim 安裝 yum install vim
- wget安裝 yum install wget
- 安裝163的源
- 備份原有的源。mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
- 下載下傳對應版本repo檔案, 放入/etc/yum.repos.d/
- yum clean all yum makecache。yum 會把下載下傳的軟體包和header存儲在cache中,而不自動删除。如果覺得占用磁盤空間,可以使用yum clean指令進行清除,更精确 的用法是yum clean headers清除header,yum clean packages清除下載下傳的rpm包,yum clean all一全部清除。
- ps -ef|grep XX ps:檢視所有程序 -ef:顯示程序環境變量和全格式
- 查詢服務是否暗轉 yum list
- 建立檔案:touch 檔案名
- 建立目錄:mkdir
-
删除檔案:rm -e 直接把欲删除的目錄的硬連接配接資料删除成0,删除該目錄;
-f:強制删除檔案或目錄;
-i:删除已有檔案或目錄之前先詢問使用者;
-r或-R:遞歸處理,将指定目錄下的所有檔案與子目錄一并處理;
--preserve-root:不對根目錄進行遞歸操作;
-v:顯示指令的詳細執行過程。
- 删除目錄:rmdir 隻能删除非空目錄
- netstat -anpl:檢視網絡狀态
- sudo:使用者提權
- ll+目錄:檢視目錄權限結果為 drwxrrwxrwx. 2 組名 使用者名 時間
- chown:改變一個目錄的通路權限 chown -R 組名:使用者名 目錄
- 檢視本地安裝了哪些程式:rpm -qa
-
啟動一個服務:systemctl start postfix.service
關閉一個服務:systemctl stop postfix.service
重新開機一個服務:systemctl restart postfix.service
顯示一個服務的狀态:systemctl status postfix.service
在開機時啟用一個服務:systemctl enable postfix.service
在開機時禁用一個服務:systemctl disable postfix.service
檢視服務是否開機啟動:systemctl is-enabled postfix.service
檢視已啟動的服務清單:systemctl list-unit-files|grep enabled
檢視啟動失敗的服務清單:systemctl --failed
五linux中軟體安裝方式
一、源代碼形式
1. 絕大多數開源軟體都是直接以原碼形式釋出的
2. 源代碼一般會被打成.tar.gz的歸檔壓縮檔案
3. 源代碼需要編譯成為二進制形式之後才能夠運作使用
4. 源代碼基本編譯流程:
1).configure 檢查編譯環境,這裡可以通過--prefix等指令配置安裝路徑(好像)
2)make對源代碼進行編譯;
3)make insall 将生成的可執行檔案安裝到目前計算機中
二、RPM
1.源代碼形式的特點:操作複雜、編譯時間長、極易出現問題、依賴關系複雜
2.為了友善,RPM(redhat package manager)
3.RPM通過将代碼基于特定平台系統編譯為可執行檔案,并儲存依賴關系,來簡化開源軟體的安裝管理。針對不同的系統設定不同的包
4.常用指令規範:linuxcast-1.2.0-30.el6.1686.rpm 包名-版本号-适用平台-32/64-rpm
5.使用rpm –i software.rpm(安裝);
rpm -e software.rpm(解除安裝);
rpm –U software.rpm(更新形式安裝);
rpm –ivh http://www.linuxcast.net/software.rpm(支援通過http\ftp協定形式安裝)
-v 顯示詳細資訊;-h顯示進度條
查詢功能:rpm –qa 列出全部已經安裝的.rpm軟體 rpm –qa |grep ***
三:YUM
1. rpm軟體包形式的管理雖然友善,但是需要手工解決軟體包的依賴關系。很多時候安裝一個軟體安裝一個軟體需要安裝1個或者多個其他軟體,手動解決時,很複雜,yum解決這些問題。Yum是rpm的前端程式,主要目的是設計用來自動解決rpm的依賴關系,其特點:
1) 自動解決依賴關系;2)可以對rpm進行分組,基于組進行安裝操作;3)引入倉庫概念,支援多個倉庫;4)配置簡單
2. yum倉庫用來存放所有的現有的.rpm包,當使用yum安裝一個rpm包時,需要依賴關系,會自動在倉庫中查找依賴軟體并安裝。倉庫可以是本地的,也可以是HTTP、FTP、nfs形式使用的集中地、統一的網絡倉庫。
3. 倉庫的配置檔案/etc/yum.repos.d目錄下
4. 使用:1)yum install 安裝;
2)yum remove解除安裝;
3)yum update 更新制定軟體
5. 安裝的時候,會下載下傳軟體包.Rpm在安裝,是以用國内倉庫
改變鏡像源1)通路位址http://mirrors.163.com/;2)點centos使用幫助;3)按步驟來
6. 查詢軟體:可以使用yumsearch **
綜上,yum 比rpm先進,但源碼包比較全。
六 SSH
- secure shell安全外殼協定,建立在應用層上的協定,幾乎支援所有unix平台
- 服務端安裝ssh服務 yum install openssh-server yum install openssh-client(在服務端安裝中也會安裝)
- 開啟服務 service sshd start
- 開機自啟動
七系統使用者
- adduser:在home下自動建立目錄,沒有設定密碼,需要使用passwd指令修改密碼
- useradd:在ubuntu下不同(不推薦使用)
- userdel:删除使用者,但是檔案夾還在。userdel -r XXX 删除使用者和檔案夾。或者繼續用rm -rf删除檔案夾。
- passwd: passwd 使用者名 設定密碼
-
問題: 在linux下添加使用者時,出現錯誤:Creating mailbox file: 檔案已存在?
怎麼解決:
原來linux下添加使用者後,會在系統裡自動加一個郵箱(系統郵箱),路徑是:/var/spool/mail/使用者名.
可以直接用指令#rm -rf /var/spool/mail/使用者名
這樣就可以再次添加同一名字的使用者.
- 切換使用者:su
- 修改對檔案的通路權限:chmod 權限 檔案,777代表最讀寫删除權限421.
八防火牆
- 作用
- 端口:http端口 80;ssh端口 22; https端口 443
- 安裝:yum install firewalld
- 啟動:service firewalld start
- 檢查狀态:service firewalled status
- service firewalld stop/disable
- firewalld-cmd 安裝防火牆之後預設提供了一這個指令, firewalld-cmd --help
- firewalld-cmd --list-zone --list-all-zones --list-zone=public 預設區域是public
- 查詢服務 firewalld-cmd --query-service=ssh 查詢是否開啟了ssh服務
- firewalld-cmd --remove-service=ssh 移出服務
- firewalld-cmd --add-service=ssh 添加服務
- firewalld-cmd --list-services
- firewalld-cmd --add-port 增加一個端口
- firewalld-cmd --remove-port=22/tcp 關閉端口
九 提權操作
十檔案上傳下載下傳
- wget:wget url
- curl:curl-O url
- 差別:在進階用途上的curl由于可自定義各種請求參數是以長于模拟web請求,用于測試網頁互動(浏覽器);wget由于支援ftp和Recursive是以長于下載下傳,用于下載下傳檔案
- scp下載下傳: scp 檔案名 使用者@ip:伺服器目錄 然後輸入密碼
- scp上傳: scp 使用者@ip:檔案名 伺服器目錄 然後輸入密碼
- xshell上傳下載下傳:伺服器安裝yum install lrzlz; rz直接選擇本地檔案上傳; sz将伺服器檔案下載下傳
- winscp:windows下的伺服器檔案管理工具。
十一虛拟機安裝linux
- 下載下傳linux centos7
- 安裝過程,選擇英文,設定預設root賬号密碼為123456
十二 目錄結構簡介
【常見目錄說明】
目錄 | |
/bin | 存放二進制可執行檔案(ls,cat,mkdir等),常用指令一般都在這裡。 |
/etc | 存放系統管理和配置檔案 |
/home | 存放所有使用者檔案的根目錄,是使用者主目錄的基點,比如使用者user的主目錄就是/home/user,可以用~user表示 |
/usr | 用于存放系統應用程式,比較重要的目錄/usr/local 本地系統管理者軟體安裝目錄(安裝系統級的應用)。這是最龐大的目錄,要用到的應用程式和檔案幾乎都在這個目錄。 /usr/x11r6 存放x window的目錄 /usr/bin 衆多的應用程式 /usr/sbin 超級使用者的一些管理程式 /usr/doc linux文檔 /usr/include linux下開發和編譯應用程式所需要的頭檔案 /usr/lib 常用的動态連結庫和軟體包的配置檔案 /usr/man 幫助文檔 /usr/src 源代碼,linux核心的源代碼就放在/usr/src/linux裡 /usr/local/bin 本地增加的指令 /usr/local/lib 本地增加的庫 |
/opt | 額外安裝的可選應用程式包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這裡。 |
/proc | 虛拟檔案系統目錄,是系統記憶體的映射。可直接通路這個目錄來擷取系統資訊。 |
/root | 超級使用者(系統管理者)的主目錄(特權階級^o^) |
/sbin | 存放二進制可執行檔案,隻有root才能通路。這裡存放的是系統管理者使用的系統級别的管理指令和程式。如ifconfig等。 |
/dev | 用于存放裝置檔案。 |
/mnt | 系統管理者安裝臨時檔案系統的安裝點,系統提供這個目錄是讓使用者臨時挂載其他的檔案系統。 |
/boot | 存放用于系統引導時使用的各種檔案 |
/lib | 存放跟檔案系統中的程式運作所需要的共享庫及核心子產品。共享庫又叫動态連結共享庫,作用類似windows裡的.dll檔案,存放了根檔案系統程式運作所需的共享檔案。 |
/tmp | 用于存放各種臨時檔案,是公用的臨時檔案存儲點。 |
/var | 用于存放運作時需要改變資料的檔案,也是某些大檔案的溢出區,比方說各種服務的日志檔案(系統啟動日志等。)等。 |
/lost+found | 這個目錄平時是空的,系統非正常關機而留下“無家可歸”的檔案(windows下叫什麼.chk)就在這裡 |
Linux目錄和Windows目錄有着很大的不同,Linux目錄類似一個樹,最頂層是其根目錄,如下圖:
/bin 二進制可執行指令
/dev 裝置特殊檔案
/etc 系統管理和配置檔案
/etc/rc.d 啟動的配置檔案和腳本
/home 使用者主目錄的基點,比如使用者user的主目錄就是/home/user,可以用~user表示
/lib 标準程式設計庫,又叫動态連結共享庫,作用類似windows裡的.dll檔案
/sbin 超級管理指令,這裡存放的是系統管理者使用的管理程式
/tmp 公共的臨時檔案存儲點
/root 系統管理者的主目錄
/mnt 系統提供這個目錄是讓使用者臨時挂載其他的檔案系統
/lost+found這個目錄平時是空的,系統非正常關機而留下“無家可歸”的檔案(windows下叫什麼.chk)就在這裡
/proc 虛拟的目錄,是系統記憶體的映射。可直接通路這個目錄來擷取系統資訊。
/var 某些大檔案的溢出區,比方說各種服務的日志檔案
/usr 最龐大的目錄,要用到的應用程式和檔案幾乎都在這個目錄,其中包含:
/usr/x11R6 存放x window的目錄
/usr/bin 衆多的應用程式
/usr/sbin 超級使用者的一些管理程式
/usr/doc linux文檔
/usr/include linux下開發和編譯應用程式所需要的頭檔案
/usr/lib 常用的動态連結庫和軟體包的配置檔案
/usr/man 幫助文檔
/usr/src 源代碼,linux核心的源代碼就放在/usr/src/linux裡
/usr/local/bin 本地增加的指令
/usr/local/lib 本地增加的庫根檔案系統
通常情況下,根檔案系統所占空間一般應該比較小,因為其中的絕大部分檔案都不需要經常改動,而且包括嚴格的檔案和一個小的不經常改變的檔案系統不容易損壞。
除了可能的一個叫/ vmlinuz标準的系統引導映像之外,根目錄一般不含任何檔案。所有其他檔案在根檔案系統的子目錄中。
1. /bin目錄
/ b i n目錄包含了引導啟動所需的指令或普通使用者可能用的指令(可能在引導啟動後)。這些指令都是二進制檔案的可執行程式( b i n是b i n a r y - -二進制的簡稱),多是系統中重要的系統檔案。
2. /sbin目錄
/ s b i n目錄類似/bin ,也用于存儲二進制檔案。因為其中的大部分檔案多是系統管理者使用的基本的系統程式,是以雖然普通使用者必要且允許時可以使用,但一般不給普通使用者使用。
3. /etc目錄
/ e t c目錄存放着各種系統配置檔案,其中包括了使用者資訊檔案/ e t c / p a s s w d,系統初始化檔案/ e t c / r c等。l i n u x正是*這些檔案才得以正常地運作。
4. /root目錄
/root 目錄是超級使用者的目錄。
5. /lib目錄
/ l i b目錄是根檔案系統上的程式所需的共享庫,存放了根檔案系統程式運作所需的共享檔案。這些檔案包含了可被許多程式共享的代碼,以避免每個程式都包含有相同的子程式的副本,故可以使得可執行檔案變得更小,節省空間。
6. /lib/modules 目錄
/lib/modules 目錄包含系統核心可加載各種子產品,尤其是那些在恢複損壞的系統時重新開機系統所需的子產品(例如網絡和檔案系統驅動)。
7. /dev目錄
/ d e v目錄存放了裝置檔案,即裝置驅動程式,使用者通過這些檔案通路外部裝置。比如,使用者可以通過通路/ d e v / m o u s e來通路滑鼠的輸入,就像通路其他檔案一樣。
8. /tmp目錄
/tmp 目錄存放程式在運作時産生的資訊和資料。但在引導啟動後,運作的程式最好使用/ v a r / t m p來代替/tmp ,因為前者可能擁有一個更大的磁盤空間。
9. /boot目錄
/ b o o t目錄存放引導加載器(bootstrap loader)使用的檔案,如l i lo,核心映像也經常放在這裡,而不是放在根目錄中。但是如果有許多核心映像,這個目錄就可能變得很大,這時使用單獨的檔案系統會更好一些。還有一點要注意的是,要確定核心映像必須在i d e硬碟的前1 0 2 4柱面内。
10. /mnt目錄
/ m n t目錄是系統管理者臨時安裝( m o u n t )檔案系統的安裝點。程式并不自動支援安裝到/mnt 。/mnt 下面可以分為許多子目錄,例如/mnt/dosa 可能是使用m s d o s檔案系統的軟驅,而/mnt/exta 可能是使用e x t 2檔案系統的軟驅,/mnt/cdrom 光驅等等。
11. /proc, /usr,/var,/home目錄
其他檔案系統的安裝點。
下面詳細介紹;
/etc檔案系統
/etc 目錄包含各種系統配置檔案,下面說明其中的一些。其他的你應該知道它們屬于哪個程式,并閱讀該程式的m a n頁。許多網絡配置檔案也在/etc 中。
1. /etc/rc或/etc/rc.d或/etc/rc?.d
啟動、或改變運作級時運作的腳本或腳本的目錄。
2. /etc/passwd
使用者資料庫,其中的域給出了使用者名、真實姓名、使用者起始目錄、加密密碼和使用者的其
他資訊。
3. /etc/fdprm
軟碟參數表,用以說明不同的軟碟格式。可用setfdprm 進行設定。更多的資訊見s e t f d p r m
的幫助頁。
4. /etc/fstab
指定啟動時需要自動安裝的檔案系統清單。也包括用swapon -a啟用的s w a p區的資訊。
5. /etc/group
類似/etc/passwd ,但說明的不是使用者資訊而是組的資訊。包括組的各種資料。
6. /etc/inittab
init 的配置檔案。
7. /etc/issue
包括使用者在登入提示符前的輸出資訊。通常包括系統的一段短說明或歡迎資訊。具體内容由系統管理者确定。
8. /etc/magic
“f i l e”的配置檔案。包含不同檔案格式的說明,“f i l e”基于它猜測檔案類型。
9. /etc/motd
m o t d是message of the day的縮寫,使用者成功登入後自動輸出。内容由系統管理者确定。常用于通告資訊,如計劃關機時間的警告等。
10. /etc/mtab
目前安裝的檔案系統清單。由腳本( s c r i t p )初始化,并由mount 指令自動更新。當需要一個目前安裝的檔案系統的清單時使用(例如df 指令)。
11. /etc/shadow
在安裝了影子( s h a d o w )密碼軟體的系統上的影子密碼檔案。影子密碼檔案将/ e t c / p a s s wd檔案中的加密密碼移動到/ e t c / s h a d o w中,而後者隻對超級使用者( r o o t)可讀。這使破譯密碼更困難,以此增加系統的安全性。
12. /etc/login.defs
l o g i n指令的配置檔案。
13. /etc/printcap
類似/etc/termcap ,但針對列印機。文法不同。
14. /etc/profile 、/ e t c / c s h . l o g i n、/etc/csh.cshrc
登入或啟動時b o u r n e或c shells執行的檔案。這允許系統管理者為所有使用者建立全局預設環境。
15. /etc/securetty
确認安全終端,即哪個終端允許超級使用者( r o o t )登入。一般隻列出虛拟控制台,這樣就不可能(至少很困難)通過數據機( m o d e m )或網絡闖入系統并得到超級使用者特權。
16. /etc/shells
列出可以使用的s h e l l。chsh 指令允許使用者在本檔案指定範圍内改變登入的s h e l l。提供一台機器f t p服務的服務程序ftpd 檢查使用者s h e l l是否列在/etc/shells 檔案中,如果不是,将不允許該使用者登入。
17. /etc/termcap
終端性能資料庫。說明不同的終端用什麼“轉義序列”控制。寫程式時不直接輸出轉義序列(這樣隻能工作于特定品牌的終端),而是從/etc/termcap 中查找要做的工作的正确序列。
這樣,多數的程式可以在多數終端上運作。
/dev檔案系統
/dev 目錄包括所有裝置的裝置檔案。裝置檔案用特定的約定命名,這在裝置清單中說明。
裝置檔案在安裝時由系統産生,以後可以用/dev/makedev 描述。/ d e v / m a k e d e v.local是
系統管理者為本地裝置檔案(或連接配接)寫的描述文稿(即如一些非标準裝置驅動不是标準
makedev 的一部分)。下面簡要介紹/ d e v下一些常用檔案。
1. /dev/console
系統控制台,也就是直接和系統連接配接的螢幕。
2. /dev/hd
i d e硬碟驅動程式接口。如: / d e v / h d a指的是第一個硬碟, h a d 1則是指/ d e v / h da的第一個
分區。如系統中有其他的硬碟,則依次為/ d e v / h d b、/ d e v / h d c、. . . . ..;如有多個分區則依次為
h d a 1、h d a 2 . . . . . .
3. /dev/sd
s c s i磁盤驅動程式接口。如有系統有s c s i硬碟,就不會通路/ d e v / h a d,而會通路/ d e v / sd a。
4. /dev/fd
軟驅裝置驅動程式。如: / d e v / f d 0指系統的第一個軟碟,也就是通常所說的a:盤,
/ d e v / f d 1指第二個軟碟,. . . . . .而/ d e v / f d 1 h 1 4 40則表示通路驅動器1中的4 . 5高密盤。
5. /dev/st
s c s i錄音帶驅動器驅動程式。
6. /dev/tty
提供虛拟控制台支援。如: / d e v / t t y 1指的是系統的第一個虛拟控制台, / d e v / t t y2則是系統
的第二個虛拟控制台。
7. /dev/pty
提供遠端登陸僞終端支援。在進行te l n e t登入時就要用到/ d e v / p t y裝置。
8. /dev/ttys
計算機串行接口,對于d o s來說就是“ c o m 1”口。
9. /dev/cua
計算機串行接口,與數據機一起使用的裝置。
10. /dev/null
“黑洞”,所有寫入該裝置的資訊都将消失。例如:當想要将螢幕上的輸出資訊隐藏起來時,隻要将輸出資訊輸入到/ d e v / n u l l中即可。
/usr檔案系統
/usr 是個很重要的目錄,通常這一檔案系統很大,因為所有程式安裝在這裡。/usr 裡的
所有檔案一般來自l i n u x發行版( d i s t r i b u t i o n);本地安裝的程式和其他東西在/usr/local 下,因為這樣可以在更新新版系統或新發行版時無須重新安裝全部程式。/usr目錄下的許多内容是可選的,但這些功能會使使用者使用系統更加有效。/ u s r可容納許多大型的軟體包和它們的配置檔案。下面列出一些重要的目錄(一些不太重要的目錄被省略了)。
1. /usr/x11r6
包含x wi n d o w系統的所有可執行程式、配置檔案和支援檔案。為簡化x的開發和安裝,x的檔案沒有內建到系統中。x wi n d o w系統是一個功能強大的圖形環境,提供了大量的圖形工具程式。使用者如果對microsoft wi n d o w s或m a c h i n t o s h比較熟悉的話,就不會對x win d o w系統感到束手無策了。
2. /usr/x386
類似/ u s r / x 11r6 ,但是是專門給x 11 release 5的。
3. /usr/bin
集中了幾乎所有使用者指令,是系統的軟體庫。另有些指令在/bin 或/usr/local/bin 中。
4. /usr/sbin
包括了根檔案系統不必要的系統管理指令,例如多數服務程式。
5. /usr/man、/ u s r / i n f o、/ u s r / d o c
這些目錄包含所有手冊頁、g n u資訊文檔和各種其他文檔檔案。每個聯機手冊的“節”都有兩個子目錄。例如: / u s r / m a n / m a n 1中包含聯機手冊第一節的源碼(沒有格式化的原始檔案),/ u s r / m a n / c a t 1包含第一節已格式化的内容。l聯機手冊分為以下九節:内部指令、系統調用、庫函數、裝置、檔案格式、遊戲、宏軟體包、系統管理和核心程式。
6. /usr/include
包含了c語言的頭檔案,這些檔案多以. h結尾,用來描述c語言程式中用到的資料結構、子過程和常量。為了保持一緻性,這實際上應該放在/usr/lib 下,但習慣上一直沿用了這個名字。
7. /usr/lib
包含了程式或子系統的不變的資料檔案,包括一些s i t e - w i d e配置檔案。名字l i b來源于庫(library); 程式設計的原始庫也存在/usr/lib 裡。當編譯程式時,程式便會和其中的庫進行連接配接。也有許多程式把配置檔案存入其中。
8. /usr/local
本地安裝的軟體和其他檔案放在這裡。這與/ u s r很相似。使用者可能會在這發現一些比較大的軟體包,如t e x、e m a c s等。
/var檔案系統
/var 包含系統一般運作時要改變的資料。通常這些資料所在的目錄的大小是要經常變化或擴充的。原來/ v a r目錄中有些内容是在/ u s r中的,但為了保持/ u s r目錄的相對穩定,就把那些需要經常改變的目錄放到/ v a r中了。每個系統是特定的,即不通過網絡與其他計算機共享。下面列出一些重要的目錄(一些不太重要的目錄省略了)。
1. /var/catman
包括了格式化過的幫助( m a n )頁。幫助頁的源檔案一般存在/ u s r / m a n / m a n中;有些m an頁可能有預格式化的版本,存在/ u s r / m a n / c a t中。而其他的m a n頁在第一次看時都需要格式化,格式化完的版本存在/var/man 中,這樣其他人再看相同的頁時就無須等待格式化了。(/var/catman 經常被清除,就像清除臨時目錄一樣。)
2. /var/lib
存放系統正常運作時要改變的檔案。
3. /var/local
存放/usr/local 中安裝的程式的可變資料(即系統管理者安裝的程式)。注意,如果必要,即使本地安裝的程式也會使用其他/var 目錄,例如/var/lock 。
4. /var/lock
鎖定檔案。許多程式遵循在/var/lock 中産生一個鎖定檔案的約定,以用來支援他們正在使用某個特定的裝置或檔案。其他程式注意到這個鎖定檔案時,就不會再使用這個裝置或檔案。
5. /var/log
各種程式的日志( l o g )檔案,尤其是login (/var/log/wtmp log紀錄所有到系統的登入和登出) 和syslog (/var/log/messages 紀錄存儲所有核心和系統程式資訊)。/var/log裡的檔案經常不确定地增長,應該定期清除。
6. /var/run
儲存在下一次系統引導前有效的關于系統的資訊檔案。例如, /var/run/utmp 包含目前登入的使用者的資訊。
7. /var/spool
放置“假脫機( s p o o l )”程式的目錄,如m a i l、n e w s、列印隊列和其他隊列工作的目錄。每個不同的s p o o l在/var/spool 下有自己的子目錄,例如,使用者的郵箱就存放在/var/spool/mail中。
8. /var/tmp
比/tmp 允許更大的或需要存在較長時間的臨時檔案。注意系統管理者可能不允許/var/tmp 有很舊的檔案。
/proc檔案系統
/proc 檔案系統是一個僞的檔案系統,就是說它是一個實際上不存在的目錄,因而這是一
個非常特殊的目錄。它并不存在于某個磁盤上,而是由核心在記憶體中産生。這個目錄用于提
供關于系統的資訊。下面說明一些最重要的檔案和目錄(/proc 檔案系統在proc man頁中有更詳
細的說明)。
1. /proc/x
關于程序x的資訊目錄,這一x是這一程序的辨別号。每個程序在/proc 下有一個名為自
己程序号的目錄。
2. /proc/cpuinfo
存放處理器( c p u )的資訊,如c p u的類型、制造商、型号和性能等。
3. /proc/devices
目前運作的核心配置的裝置驅動的清單。
4. /proc/dma
顯示目前使用的d m a通道。
5. /proc/filesystems
核心配置的檔案系統資訊。
6. /proc/interrupts
顯示被占用的中斷資訊和占用者的資訊,以及被占用的數量。
7. /proc/ioports
目前使用的i / o端口。
8. /proc/kcore
系統實體記憶體映像。與實體記憶體大小完全一樣,然而實際上沒有占用這麼多記憶體;它僅僅是在程式通路它時才被建立。(注意:除非你把它拷貝到什麼地方,否則/proc 下沒有任何東西占用任何磁盤空間。)
9. /proc/kmsg
核心輸出的消息。也會被送到s y s l o g。
10. /proc/ksyms
核心符号表。
11. /proc/loadavg
系統“平均負載”; 3個沒有意義的訓示器指出系統目前的工作量。
12. /proc/meminfo
各種存儲器使用資訊,包括實體記憶體和交換分區( s w a p )。
13. /proc/modules
存放目前加載了哪些核心子產品資訊。
14. /proc/net
網絡協定狀态資訊。
15. /proc/self
存放到檢視/proc 的程式的程序目錄的符号連接配接。當2個程序檢視/proc 時,這将會是不同的連接配接。這主要便于程式得到它自己的程序目錄。
16. /proc/stat
系統的不同狀态,例如,系統啟動後頁面發生錯誤的次數。
17. /proc/uptime
系統啟動的時間長度。
18. /proc/version
核心版本
十三webserver
- Apache:yum install httpd,service httpd start,service httpd stop
- Apache虛拟主機:一個伺服器多個域名的時候用,每個域名通路的網站内容和源代碼不一樣。apache的配置檔案httpd.conf,在這個裡面的virtual host being defined的位置下面定義虛拟主機,
可以建立多個虛拟機,複制上面的代碼就好<VirtualHost *:80> ServerName www.blue.com DoucumentRoot /data/www <Directory "/data/www"> Option -Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost *:80>
然後重新開機服務
-
apache 預設代碼目錄 /var/www/html 配置檔案中可以找到,虛拟主機可以指定任意目錄
-
selinux臨時設定:setenforce:0 寬松模式; 1嚴格模式,setenforce是臨時模式。
-
selinux持久設定:持久設定模式:持久關閉是在 /etc/selinux/config檔案中的屬性 SELINUX屬性的設定,enforcing 強制模式,permissive 警告模式,disabled 關閉模式
-
Nginx虛拟伺服器參數:
-
Nginx中文知識網站:http://www.nginx.cn/
十四 資料庫
十四 資料庫
-
mysql安裝:删除mariadb資料庫;在dev.mysql.com中下載下傳redhat7或對應的rpm包到本地(這次安裝的是mysql57-community-release-el7-11.noarch.rpm);yum localinstall 将下載下傳rpm包添加到本地源(如果windwos下載下傳的rpm包需要上傳到linux);然後yum install XXX.server那個程式,大概190MB.
-
啟動和停止:service mysqld start/stop/restart
-
本地連接配接MySql:mysql -h -u -p ,主機名 使用者 密碼,初始密碼在日志中,cat /var/log/mysqld.log;首次登入後可能要重新密碼。
-
選擇資料庫:use 資料庫名
-
遠端連接配接:修改資料庫的user表中Host值,将“localhost”為“%”,表示支援所有主機連接配接,查詢語句為 select Host,User from user; 修改語句為 update user set Host='%' where Host='localhost' and User='root';
-
密碼提示:如果提示重置密碼,是由于密碼過于簡單,需要設定為大寫、小寫、數字、特殊字元組合的密碼,或者通過set global validate_password_policy=0; set global validate_password_length=1;這兩個語句取消密碼限制,然後flush privileges; (不重新開機mysql的情況下重新整理使用者權限設定)
-
7
-
設定密碼:SET PASSWORD = PASSWORD(‘123456’);
-
資料庫連接配接:如果資料庫連接配接不上可能是防火牆原因。
-
設定資料庫遠端連接配接:update user set Host='%' where User="root" and Host="localhost"; (%代表可以接受所有連接配接),然後flush privileges; 重新整理權限。如果主機上已經登入mysql,則遠端無法繼續登入了。
-
修改密碼(忘記密碼):在/etc/my.conf中最後面輸入skip-grant-tables ; 連接配接資料庫,密碼輸入空;成功連接配接資料庫後輸入指令use mysql; show talbles; update user set authentication_string = password("123456") where user = 'root';(注意每個指令結束必須有冒号); 将/etc/my.conf中的skip-grant-tables行用#注釋掉; 重新開機mysql後可以用新密碼登入。
-
genelog;記錄本地所有資料庫操作的sql語句
-
建立使用者:create user 'imooc'@'%' identified by '123456';(預設建立的使用者什麼權限都沒有),grant all privileges on *.* to '賬戶名'@'%' identified by '123456';
-
windows下的mysql管理工具:heidisql mysqladmin(目前總是報文法錯誤)
-
權限的配置設定和收回:grant revoke
十五PHP安裝和使用
十五PHP安裝和使用
-
下載下傳:https://pan.baidu.com/s/1bpi4D9l 。檔案為 php-7.2.0.tar.gz
-
解壓:tar -zxvf php-7.2.0.tar.gz
-
進入解壓的目錄:cd php7.2.0
-
安裝依賴:yum install libxml2 libxml2-devel openssl openssl-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel -y
-
開始進行配置:./configure --prefix=/usr/local/php720 --with-mysqli --with-pdo-mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-simplexml --enable-xml --disable-rpath --enable-bcmath --enable-soap --enable-zip --with-curl --enable-fpm --with-fpm-user=nobody --with-fpm-group=nobody --enable-mbstring --enable-sockets --with-gd --with-openssl --with-mhash --enable-opcache --disable-fileinfo
-
編譯安裝:make && make install
-
建立配置檔案:cp php.ini-development /usr/local/php720/php.ini ;cp /usr/local/php720/etc/php-fpm.conf.default /usr/local/php720/etc/php-fpm.conf;(注意,這裡的php720等路徑會與安裝的版本有關,具體看情況);cp sapi/fpm/php-fpm /usr/local/bin;
-
php安全設定:如果檔案不存在,則阻止 Nginx 将請求發送到後端的 PHP-FPM 子產品, 以避免遭受惡意腳本注入的攻擊,vim /usr/local/php/php.ini 中修改 cgi.fix_pathinfo=0
-
啟動php-fpm:在啟動服務之前,需要修改 php-fpm.conf 配置檔案,確定 php-fpm 子產品使用 www-data 使用者和 www-data 使用者組的身份運作。在/usr/local/php720/etc/目錄或者 /php-fpm.d/下,首先把www.conf.default 修改為www.conf,然後修改其檔案的内容,使用者和使用者組,使用者不能是root(會報錯); Unix user/group of processes; Note: The user is mandatory. If the group is not set, the default user's group; will be used.user = www-datagroup = www-data然後啟動 php-fpm 服務:/usr/local/bin/php-fpm
-
配置Nginx:vim /usr/local/nginx/conf/nginx.conf修改預設的 location 塊,使其支援 .php 檔案:location / { root html; index index.php index.html index.htm;}下一步配置來保證對于 .php 檔案的請求将被傳送到後端的 PHP-FPM 子產品, 取消預設的 PHP 配置塊的注釋,并修改為下面的内容:location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name;}然後重新開機nginx
-
建立測試頁面:rm /usr/local/nginx/html/index.html(路徑是nginx.conf配置檔案中的配置路徑)echo "<?php phpinfo(); ?>" >>index.php 建立一個測試頁。(是shell程式設計語句嗎?)