linux服务器基本常识,服务器搭建-Linux基础知识
服務器搭建還是需要一些Linux知識的,這節就聊點基礎的。
文件權限操作
查看權限
Linux中每個文件對每個用戶來說都有對應的權限,在任一路徑中輸入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
關于權限方面我們主要關注第1、3、4列
我們先來看第一列,第一列表示各用戶對該文件/目錄的操作權限,我把它斷成四個部分,d|rwx|r-x|r-x分別表示類型|文件所有者權限|文件所屬用戶組權限|其他人的權限。類型我們經常用到的有d-目錄,--文件,l-連接文件,r(4)|w(2)|x(1)分別對應讀|寫|可執行(進入目錄)。
第三列和第四列分別代表文件所有者和文件所屬用戶組。
改變權限屬性
改變文件權限需要用到chmod命令,上面我在rwx中標注了4、2、1,代表的就是它們的對應值,需要哪些權限把它們相加就是了,來個示例:
root@ip-*** ~ # ll
total 4.0K
-rw-r--r-- 1 root root 25 Jun 8 02:33 dev.js
計算一下得到文件dev.js對各用戶的權限值是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
這里分別賦予文件所有者|文件所屬用戶組|其他用戶的權限是可讀可寫可執行|可讀可寫|可執行
另外,除了更改文件權限之外,還可以更改文件所有者和所在用戶組,分別用到的命令是chown、chgrp,具體使用方式可以使用man命令查看。
磁盤
一般在我們購買服務器的時候我們都會選擇安裝好一個Linux系統,分區啥的都已經配置好了,這方面對入門同學來講并不需要掌握太多,主要注重查看。
查看磁盤使用df命令,加上參數-h使用以人類易讀的方式展示。
壓縮與打包
Linux中有很多軟件是下載一個壓縮包讓用戶自己解壓安裝的,這就需要我們掌握必要的壓縮技能。使用比較廣泛的有gzip、bzip2、tar。
gzip、zcat
gzip應該說是目前Linux系統中使用最廣的壓縮命令了。它可以解開*.z、*.zip、*.gz等格式的壓縮文件,下面來看它的使用方式:
root@ip-*** ~ # gzip -v dev.js
dev.js: -8.0% -- replaced with dev.js.gz
root@ip-*** ~ # ls
dev.js.gz
這里的-v是為了在壓縮結束后查看壓縮比,當然還有其他參數:
-c 將壓縮的數據輸出
-d 解壓縮
-t 校驗壓縮文件
-1~-9 設置壓縮級別,-1最快,壓縮效果也最差,-9最慢,壓縮效果最好,默認-6,一般情況下使用默認的就可以了。
so,當我們需要解壓縮文件的時候只要加上-d參數就可以了。
我們知道cat命令可以用來查看純文本文件,那zcat就是用來查看純文本被壓縮后的壓縮文件。
另外,需要注意的一點是使用gzip壓縮后源文件就會被自動刪除。
bzip2、bzcat
bzip2是比gzip更優秀的壓縮工具,用法跟gzip非常近似:
-c 將壓縮的數據輸出
-d 解壓縮
-k 保留原文件
-z 壓縮參數
-t 校驗壓縮文件
-1~-9 設置壓縮級別,-1最快,壓縮效果也最差,-9最慢,壓縮效果最好。
其壓縮文件以*.bz2格式存在,bzcat的作用與zcat相似,不再贅述。
tar
上面我們講到了壓縮命令,但是這里的壓縮都是單文件的,要是我想把多個文件壓縮在同一個壓縮包中光用上面的命令是做不到的,有的同學會說我們可以壓縮一個文件夾啊,想法很好,但是不好意思,你這么做的話會類似這樣的提示:* is a directory -- ignored。所以這里我們要用到另一個工具tar,把那些文件打包成一個文件合集再使用壓縮工具進行壓縮。
值得一提的是,tar還可以同時在參數中直接使用gzip/bzip2。tar的命令非常多,介紹幾個常用的:
-c 新建打包文件
-j/-z 使用bzip2/gzip壓縮,打包文件名通常應該是*.tar.bz2/*.tar.gz
-t 查看打包文件內容,主要用來查看文件名
-x 解壓縮,通常搭配 -C 用于解壓到目標目錄
-v 查看壓縮/解壓過程中,正在被處理的文件
-C 解壓到指定目錄,與 -x 一起使用
-f 后面接被處理的文件名
下面是幾個常用的組合,一般情況下足以應付大部分使用場景了。
壓縮(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 解壓到某處
來個實例:
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
打包壓縮成功后,可以看到最后多了一個test.tar.bz2文件。另外,另外兩組組合可以自己嘗試一下,另外,解壓強烈建議加上-C命令,以免覆蓋原來的文件。
shell腳本
shell腳本是能夠在shell環境中執行的程序,它遵從shell語法,有了它,我們可以為一些需要重復操作的系列連續性命令做一個合集,解放勞動力。
下面我先給個常用的git案例:
#!/bin/bash //聲明使用的shell環境
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 //讀取用戶鍵盤輸入并賦給 action 變量,30秒內無輸入則跳過
case $action in //case語句,判斷條件為 action 變量
1)
read -p "please input commit content: " -t 30 commit
if [ "$commit" == "" ]; then //if判斷語法
commit="default commit" //條件符合執行的操作
fi //if判斷語句結束
git add .
git commit -m "$commit" //引用變量
git push origin dev
exit 0 //退出shell
;; //滿足 action 為1的條件的語句結束
2)
echo "1: cyc"
echo "2: bingqichen"
echo "3: dev"
branch[1]="cyc" //數組賦值
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條件判斷,|| 表示或關系
git checkout master
git merge "${branch[$branch_no]}" //${branch[1]}為數組的引值方法
git push origin master
git checkout -
else //另外還有 elif ,跟js中的 else if 類似,可以繼續添加判斷條件
echo "sorry, this is an undefined branch!"
fi
exit 0
;;
*) //action為其他值的操作
echo "sorry, this is an undefined action!"
exit 0
;;
esac //case語句結束
這段腳本就是我用來解決git提交和代碼合并的問題,大家可以根據自己的使用場景改造。大部分語句還是很簡單的,主要有幾個需要注意的點,比如條件判斷語句:
[ "$branch_no" == "1" ]
這里面的每個空格都不可以省略!還有賦值語句不能加空格,慎用單引號等等。
編譯安裝
Linux中安裝軟件的方法主要分為使用包管理器安裝,和下載源代碼自行編譯安裝,前者相對簡單,但是有可能有些最新的軟件包未必會有,比如PHP7,這時候就需要我們下載軟件源碼編譯成二進制文件才能使用。
先來看看編譯過程:
大致過程是這樣的,當我們下載到軟件源碼后,一般會是一個壓縮包,解壓之后里面會有一個用于建立Makefile文件的config/configure文件,使用config/configure建立Makefile后,執行make命令將源代碼根據Makefile文件的配置進行編譯,最后執行make install命令,將編譯好的內容依據Makefile中install選項安裝到指定位置完成安裝。
這里講講為什么要根據Makefile進行編譯,其實GCC可以直接編譯程序文件,但是一個軟件不可能只擁有一個程序文件,要是人工一個個去編譯每個文件,會非常勞民傷財!所以借助一個Makefile我們就可以搞定了。
下面來演示一個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 //進入源文件目錄
root@ip-*** ~/php-7.0.0 # ls //里面會有一些手冊,可以用來做安裝參考
INSTALL README.md configure
...
root@ip-*** ~/php-7.0.0 # ./configure //執行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.
我在編譯到這一步報了一個錯誤,看起來是由于libxml2未安裝,在我嘗試安裝后發現已經存在這個軟件,在網上搜尋一片后發現還要安裝libxml2-dev,這個我不是很懂。。。再次執行./configure成功并自動建立了Makefile文件,繼續:
root@ip-*** ~/php-7.0.0 # make //這個步驟視軟件大小和硬件性能執行時間會有差異
/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'.
編譯結束時,應該能看到上面的提示,make test是非必要的,自行選擇,另外要注意的一點,如果你是二次編譯的話需要先清理之前的編譯出來的文件,即在make之前執行一下make clean
到這里我們只要再執行一下make install就可以安裝結束了。
這只是最基礎的安裝,我在這過程中省略了很多配置項,這樣安裝出來的軟件是很“簡陋”的,事實上在執行./configure操作時,有很多可選項供我們配置,但是不同軟件可以添加的參數是不一樣的,怎么看當前的軟件可以添加哪些參數呢?在軟件源碼目錄執行./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
...
這里只列舉了兩個,一個是目標安裝目錄,一個是啟用fpm,這些選項可以根據需要自行添加。
其實,很多軟件通過添加軟件源的方式還是可以用包管理器安裝的,上面說的PHP7就是這樣,不要打我???
其他資料
包管理器
Linux的包管理器有很多種,Cent OS有yum,Ubuntu有apt,還有別的像aptitude之類的,這里有一篇很好的文章供參考點我查看
oh-my-zsh
zsh也是一個非常強大的shell環境,可以用它來代替Linux系統原有的bash,這是一組zsh的配置,它可以讓zsh更加好用,感興趣的可以看我的另一篇文章oh-my-zsh小記
htop
這是一個運行在終端的用于查看系統資源使用情況和管理進程的圖形化工具,使用yum或者apt-get等安裝即可,完成后直接輸入htop就可以使用了,比原生的top更強大。
總結
以上是生活随笔為你收集整理的linux服务器基本常识,服务器搭建-Linux基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 溜冰鞋多少钱一双啊?
- 下一篇: linux用户空间注册按键事件,linu