linux服务器基本常识,服务器搭建-Linux基础知识
服務(wù)器搭建還是需要一些Linux知識(shí)的,這節(jié)就聊點(diǎn)基礎(chǔ)的。
文件權(quán)限操作
查看權(quán)限
Linux中每個(gè)文件對(duì)每個(gè)用戶來(lái)說(shuō)都有對(duì)應(yīng)的權(quán)限,在任一路徑中輸入ll就可以查看這些信息:
root@ip-*** /usr/local # ll
total 32K
drwxr-xr-x 2 root root 4.0K Jan 14 17:00 bin
drwxr-xr-x 2 root root 4.0K Jan 14 17:00 etc
drwxr-xr-x 2 root root 4.0K Jan 14 17:00 games
drwxr-xr-x 2 root root 4.0K Jan 14 17:00 include
drwxr-xr-x 4 root root 4.0K Jan 14 17:08 lib
lrwxrwxrwx 1 root root 9 Jan 14 17:00 man -> share/man
drwxr-xr-x 2 root root 4.0K Jan 14 17:00 sbin
drwxr-xr-x 7 root root 4.0K May 27 14:02 share
drwxr-xr-x 2 root root 4.0K Jan 14 17:00 src
關(guān)于權(quán)限方面我們主要關(guān)注第1、3、4列
我們先來(lái)看第一列,第一列表示各用戶對(duì)該文件/目錄的操作權(quán)限,我把它斷成四個(gè)部分,d|rwx|r-x|r-x分別表示類(lèi)型|文件所有者權(quán)限|文件所屬用戶組權(quán)限|其他人的權(quán)限。類(lèi)型我們經(jīng)常用到的有d-目錄,--文件,l-連接文件,r(4)|w(2)|x(1)分別對(duì)應(yīng)讀|寫(xiě)|可執(zhí)行(進(jìn)入目錄)。
第三列和第四列分別代表文件所有者和文件所屬用戶組。
改變權(quán)限屬性
改變文件權(quán)限需要用到chmod命令,上面我在rwx中標(biāo)注了4、2、1,代表的就是它們的對(duì)應(yīng)值,需要哪些權(quán)限把它們相加就是了,來(lái)個(gè)示例:
root@ip-*** ~ # ll
total 4.0K
-rw-r--r-- 1 root root 25 Jun 8 02:33 dev.js
計(jì)算一下得到文件dev.js對(duì)各用戶的權(quán)限值是644,下面使用chmod命令改變一下:
root@ip-*** ~ # chmod 761 dev.js
root@ip-*** ~ # ll
total 4.0K
-rwxrw---x 1 root root 25 Jun 8 02:33 dev.js
這里分別賦予文件所有者|文件所屬用戶組|其他用戶的權(quán)限是可讀可寫(xiě)可執(zhí)行|可讀可寫(xiě)|可執(zhí)行
另外,除了更改文件權(quán)限之外,還可以更改文件所有者和所在用戶組,分別用到的命令是chown、chgrp,具體使用方式可以使用man命令查看。
磁盤(pán)
一般在我們購(gòu)買(mǎi)服務(wù)器的時(shí)候我們都會(huì)選擇安裝好一個(gè)Linux系統(tǒng),分區(qū)啥的都已經(jīng)配置好了,這方面對(duì)入門(mén)同學(xué)來(lái)講并不需要掌握太多,主要注重查看。
查看磁盤(pán)使用df命令,加上參數(shù)-h使用以人類(lèi)易讀的方式展示。
壓縮與打包
Linux中有很多軟件是下載一個(gè)壓縮包讓用戶自己解壓安裝的,這就需要我們掌握必要的壓縮技能。使用比較廣泛的有g(shù)zip、bzip2、tar。
gzip、zcat
gzip應(yīng)該說(shuō)是目前Linux系統(tǒng)中使用最廣的壓縮命令了。它可以解開(kāi)*.z、*.zip、*.gz等格式的壓縮文件,下面來(lái)看它的使用方式:
root@ip-*** ~ # gzip -v dev.js
dev.js: -8.0% -- replaced with dev.js.gz
root@ip-*** ~ # ls
dev.js.gz
這里的-v是為了在壓縮結(jié)束后查看壓縮比,當(dāng)然還有其他參數(shù):
-c 將壓縮的數(shù)據(jù)輸出
-d 解壓縮
-t 校驗(yàn)壓縮文件
-1~-9 設(shè)置壓縮級(jí)別,-1最快,壓縮效果也最差,-9最慢,壓縮效果最好,默認(rèn)-6,一般情況下使用默認(rèn)的就可以了。
so,當(dāng)我們需要解壓縮文件的時(shí)候只要加上-d參數(shù)就可以了。
我們知道cat命令可以用來(lái)查看純文本文件,那zcat就是用來(lái)查看純文本被壓縮后的壓縮文件。
另外,需要注意的一點(diǎn)是使用gzip壓縮后源文件就會(huì)被自動(dòng)刪除。
bzip2、bzcat
bzip2是比gzip更優(yōu)秀的壓縮工具,用法跟gzip非常近似:
-c 將壓縮的數(shù)據(jù)輸出
-d 解壓縮
-k 保留原文件
-z 壓縮參數(shù)
-t 校驗(yàn)壓縮文件
-1~-9 設(shè)置壓縮級(jí)別,-1最快,壓縮效果也最差,-9最慢,壓縮效果最好。
其壓縮文件以*.bz2格式存在,bzcat的作用與zcat相似,不再贅述。
tar
上面我們講到了壓縮命令,但是這里的壓縮都是單文件的,要是我想把多個(gè)文件壓縮在同一個(gè)壓縮包中光用上面的命令是做不到的,有的同學(xué)會(huì)說(shuō)我們可以壓縮一個(gè)文件夾啊,想法很好,但是不好意思,你這么做的話會(huì)類(lèi)似這樣的提示:* is a directory -- ignored。所以這里我們要用到另一個(gè)工具tar,把那些文件打包成一個(gè)文件合集再使用壓縮工具進(jìn)行壓縮。
值得一提的是,tar還可以同時(shí)在參數(shù)中直接使用gzip/bzip2。tar的命令非常多,介紹幾個(gè)常用的:
-c 新建打包文件
-j/-z 使用bzip2/gzip壓縮,打包文件名通常應(yīng)該是*.tar.bz2/*.tar.gz
-t 查看打包文件內(nèi)容,主要用來(lái)查看文件名
-x 解壓縮,通常搭配 -C 用于解壓到目標(biāo)目錄
-v 查看壓縮/解壓過(guò)程中,正在被處理的文件
-C 解壓到指定目錄,與 -x 一起使用
-f 后面接被處理的文件名
下面是幾個(gè)常用的組合,一般情況下足以應(yīng)付大部分使用場(chǎng)景了。
壓縮(bzip2):tar -jcv -f target.tar.bz2 待壓縮的目錄
壓縮(gzip):tar -zcv -f target.tar.gz 待壓縮的目錄
查看包含文件(bzip2):tar -jt -f target.tar.gz/target.tar.bz2
查看包含文件(gzip):tar -zt -f target.tar.gz/target.tar.gz
解壓(bzip2):tar -jxv -f target.tar.bz2 -C 解壓到某處
解壓(gzip):tar -zxv -f target.tar.gz -C 解壓到某處
來(lái)個(gè)實(shí)例:
root@ip-*** ~ # ls -a
. .config .zcompdump-ip-172-31-17-254-5.0.2
.. .oh-my-zsh .zsh-update
.aptitude .profile .zsh_history
.bash_history .ssh .zshrc
.bashrc .viminfo dev.js
.cloud-locale-test.skip .zcompdump test
root@ip-*** ~ # tar -jcv -f test.tar.bz2 .
...
./.oh-my-zsh/lib/completion.zsh
./.oh-my-zsh/lib/diagnostics.zsh
./.profile
./.zsh_history
./.cloud-locale-test.skip
./.bashrc
root@ip-*** ~ # ls -a
. .oh-my-zsh .zsh_history
.. .profile .zshrc
.aptitude .ssh dev.js
.bash_history .viminfo test
.bashrc .zcompdump test.tar.bz2
.cloud-locale-test.skip .zcompdump-ip-172-31-17-254-5.0.2
.config .zsh-update
打包壓縮成功后,可以看到最后多了一個(gè)test.tar.bz2文件。另外,另外兩組組合可以自己嘗試一下,另外,解壓強(qiáng)烈建議加上-C命令,以免覆蓋原來(lái)的文件。
shell腳本
shell腳本是能夠在shell環(huán)境中執(zhí)行的程序,它遵從shell語(yǔ)法,有了它,我們可以為一些需要重復(fù)操作的系列連續(xù)性命令做一個(gè)合集,解放勞動(dòng)力。
下面我先給個(gè)常用的git案例:
#!/bin/bash //聲明使用的shell環(huán)境
action="none" //變量賦值
echo "1: commit to dev and update test" //打印字符串
echo "2: merge branch to master"
read -p "please input number to select next step: " -t 30 action //讀取用戶鍵盤(pán)輸入并賦給 action 變量,30秒內(nèi)無(wú)輸入則跳過(guò)
case $action in //case語(yǔ)句,判斷條件為 action 變量
1)
read -p "please input commit content: " -t 30 commit
if [ "$commit" == "" ]; then //if判斷語(yǔ)法
commit="default commit" //條件符合執(zhí)行的操作
fi //if判斷語(yǔ)句結(jié)束
git add .
git commit -m "$commit" //引用變量
git push origin dev
exit 0 //退出shell
;; //滿足 action 為1的條件的語(yǔ)句結(jié)束
2)
echo "1: cyc"
echo "2: bingqichen"
echo "3: dev"
branch[1]="cyc" //數(shù)組賦值
branch[2]="bingqichen"
branch[3]="dev"
read -p "please input number to select the branch: " -t 30 branch_no
if [ "$branch_no" == "1" ] || [ "$branch_no" == "2" ] || [ "$branch_no" == "3" ]; then //if條件判斷,|| 表示或關(guān)系
git checkout master
git merge "${branch[$branch_no]}" //${branch[1]}為數(shù)組的引值方法
git push origin master
git checkout -
else //另外還有 elif ,跟js中的 else if 類(lèi)似,可以繼續(xù)添加判斷條件
echo "sorry, this is an undefined branch!"
fi
exit 0
;;
*) //action為其他值的操作
echo "sorry, this is an undefined action!"
exit 0
;;
esac //case語(yǔ)句結(jié)束
這段腳本就是我用來(lái)解決git提交和代碼合并的問(wèn)題,大家可以根據(jù)自己的使用場(chǎng)景改造。大部分語(yǔ)句還是很簡(jiǎn)單的,主要有幾個(gè)需要注意的點(diǎn),比如條件判斷語(yǔ)句:
[ "$branch_no" == "1" ]
這里面的每個(gè)空格都不可以省略!還有賦值語(yǔ)句不能加空格,慎用單引號(hào)等等。
編譯安裝
Linux中安裝軟件的方法主要分為使用包管理器安裝,和下載源代碼自行編譯安裝,前者相對(duì)簡(jiǎn)單,但是有可能有些最新的軟件包未必會(huì)有,比如PHP7,這時(shí)候就需要我們下載軟件源碼編譯成二進(jìn)制文件才能使用。
先來(lái)看看編譯過(guò)程:
大致過(guò)程是這樣的,當(dāng)我們下載到軟件源碼后,一般會(huì)是一個(gè)壓縮包,解壓之后里面會(huì)有一個(gè)用于建立Makefile文件的config/configure文件,使用config/configure建立Makefile后,執(zhí)行make命令將源代碼根據(jù)Makefile文件的配置進(jìn)行編譯,最后執(zhí)行make install命令,將編譯好的內(nèi)容依據(jù)Makefile中install選項(xiàng)安裝到指定位置完成安裝。
這里講講為什么要根據(jù)Makefile進(jìn)行編譯,其實(shí)GCC可以直接編譯程序文件,但是一個(gè)軟件不可能只擁有一個(gè)程序文件,要是人工一個(gè)個(gè)去編譯每個(gè)文件,會(huì)非常勞民傷財(cái)!所以借助一個(gè)Makefile我們就可以搞定了。
下面來(lái)演示一個(gè)PHP7的編譯安裝:
root@ip-*** ~ # wget http://cn2.php.net/get/php-7.0.0.tar.gz/from/this/mirror //下載源碼
root@ip-*** ~ # ls
mirror
root@ip-*** ~ # mv mirror php.tar.gz //重命名
root@ip-*** ~ # tar -zxv -f php.tar.gz //解壓縮源碼包
root@ip-*** ~ # ls
php-7.0.0 php.tar.gz
root@ip-*** ~ # cd php-7.0.0 //進(jìn)入源文件目錄
root@ip-*** ~/php-7.0.0 # ls //里面會(huì)有一些手冊(cè),可以用來(lái)做安裝參考
INSTALL README.md configure
...
root@ip-*** ~/php-7.0.0 # ./configure //執(zhí)行configure建立Makefile
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
...
checking for xml2-config path...
configure: error: xml2-config not found. Please check your libxml2 installation.
我在編譯到這一步報(bào)了一個(gè)錯(cuò)誤,看起來(lái)是由于libxml2未安裝,在我嘗試安裝后發(fā)現(xiàn)已經(jīng)存在這個(gè)軟件,在網(wǎng)上搜尋一片后發(fā)現(xiàn)還要安裝libxml2-dev,這個(gè)我不是很懂。。。再次執(zhí)行./configure成功并自動(dòng)建立了Makefile文件,繼續(xù):
root@ip-*** ~/php-7.0.0 # make //這個(gè)步驟視軟件大小和硬件性能執(zhí)行時(shí)間會(huì)有差異
/bin/bash /root/php-7.0.0/libtool --silent --preserve-dup-deps --mode=compile cc -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -Iext/opcache/ -I/root/php-7.0.0/ext/opcache/ -DPHP_ATOM_INC -I/root/php-7.0.0/include -I/root/php-7.0.0/main -I/root/php-7.0.0 -I/root/php-7.0.0/ext/date/lib -I/usr/include/libxml2 -I/root/php-7.0.0/ext/sqlite3/libsqlite -I/root/php-7.0.0/TSRM -I/root/php-7.0.0/Zend -I/usr/include -g -O2 -fvisibility=hidden -c /root/php-7.0.0/ext/opcache/ZendAccelerator.c -o ext/opcache/ZendAccelerator.lo
...
Build complete.
Don't forget to run 'make test'.
編譯結(jié)束時(shí),應(yīng)該能看到上面的提示,make test是非必要的,自行選擇,另外要注意的一點(diǎn),如果你是二次編譯的話需要先清理之前的編譯出來(lái)的文件,即在make之前執(zhí)行一下make clean
到這里我們只要再執(zhí)行一下make install就可以安裝結(jié)束了。
這只是最基礎(chǔ)的安裝,我在這過(guò)程中省略了很多配置項(xiàng),這樣安裝出來(lái)的軟件是很“簡(jiǎn)陋”的,事實(shí)上在執(zhí)行./configure操作時(shí),有很多可選項(xiàng)供我們配置,但是不同軟件可以添加的參數(shù)是不一樣的,怎么看當(dāng)前的軟件可以添加哪些參數(shù)呢?在軟件源碼目錄執(zhí)行./configure --help就可以了:
root@ip-*** ~/php-7.0.0 # ./configure --help
...
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]
...
SAPI modules:
--enable-fpm Enable building of the fpm SAPI executable
...
這里只列舉了兩個(gè),一個(gè)是目標(biāo)安裝目錄,一個(gè)是啟用fpm,這些選項(xiàng)可以根據(jù)需要自行添加。
其實(shí),很多軟件通過(guò)添加軟件源的方式還是可以用包管理器安裝的,上面說(shuō)的PHP7就是這樣,不要打我???
其他資料
包管理器
Linux的包管理器有很多種,Cent OS有yum,Ubuntu有apt,還有別的像aptitude之類(lèi)的,這里有一篇很好的文章供參考點(diǎn)我查看
oh-my-zsh
zsh也是一個(gè)非常強(qiáng)大的shell環(huán)境,可以用它來(lái)代替Linux系統(tǒng)原有的bash,這是一組zsh的配置,它可以讓zsh更加好用,感興趣的可以看我的另一篇文章oh-my-zsh小記
htop
這是一個(gè)運(yùn)行在終端的用于查看系統(tǒng)資源使用情況和管理進(jìn)程的圖形化工具,使用yum或者apt-get等安裝即可,完成后直接輸入htop就可以使用了,比原生的top更強(qiáng)大。
總結(jié)
以上是生活随笔為你收集整理的linux服务器基本常识,服务器搭建-Linux基础知识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 溜冰鞋多少钱一双啊?
- 下一篇: “御风亲列涂”上一句是什么