? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Linux操作簡(jiǎn)介
http://www.runoob.com/mongodb/mongodb-php.html:mongod
1、cd命令
cd /root/Docements # 切換到目錄/root/Docements
cd?./path??????????#?切換到當(dāng)前目錄下的path目錄中,“.”表示當(dāng)前目錄
cd?../path?????????#?切換到上層目錄中的path目錄中,“..”表示上一層目錄
2、ls命令
-l :列出長(zhǎng)數(shù)據(jù)串,包含文件的屬性與權(quán)限數(shù)據(jù)等
-a?:列出全部的文件,連同隱藏文件(開頭為.的文件)一起列出來(常用)
-d?:僅列出目錄本身,而不是列出目錄的文件數(shù)據(jù)
-h?:將文件容量以較易讀的方式(GB,kB等)列出來
-R?:連同子目錄的內(nèi)容一起列出(遞歸列出),等于該目錄下的所有文件都會(huì)顯示出來
3、find命令
find是一個(gè)基于查找的功能非常強(qiáng)大的命令,相對(duì)而言,它的使用也相對(duì)較為復(fù)雜,參數(shù)也比較多,所以在這里將給把它們分類列出,它的基本語法如下:
find?[PATH]?[option]?[action]
#?與時(shí)間有關(guān)的參數(shù):
-mtime?n?:?n為數(shù)字,意思為在n天之前的“一天內(nèi)”被更改過的文件;
-mtime?+n?:?列出在n天之前(不含n天本身)被更改過的文件名;
-mtime?-n?:?列出在n天之內(nèi)(含n天本身)被更改過的文件名;
-newer?file?:?列出比file還要新的文件名
#?例如:
find?/root?-mtime?0?#?在當(dāng)前目錄下查找今天之內(nèi)有改動(dòng)的文件
#?與用戶或用戶組名有關(guān)的參數(shù):
-user?name?:?列出文件所有者為name的文件
-group?name?:?列出文件所屬用戶組為name的文件
-uid?n?:?列出文件所有者為用戶ID為n的文件
-gid?n?:?列出文件所屬用戶組為用戶組ID為n的文件
#?例如:
find?/home/ljianhui?-user?ljianhui?#?在目錄/home/ljianhui中找出所有者為ljianhui的文件
#?與文件權(quán)限及名稱有關(guān)的參數(shù):
-name?filename?:找出文件名為filename的文件
-size?[+-]SIZE?:找出比SIZE還要大(+)或小(-)的文件
-tpye?TYPE?:查找文件的類型為TYPE的文件,TYPE的值主要有:一般文件(f)、設(shè)備文件(b、c)、
目錄(d)、連接文件(l)、socket(s)、FIFO管道文件(p);
-perm?mode?:查找文件權(quán)限剛好等于mode的文件,mode用數(shù)字表示,如0755;
-perm?-mode?:查找文件權(quán)限必須要全部包括mode權(quán)限的文件,mode用數(shù)字表示
-perm?+mode?:查找文件權(quán)限包含任一mode的權(quán)限的文件,mode用數(shù)字表示
#?例如:
find?/?-name?passwd?#?查找文件名為passwd的文件
find?.?-perm?0755?#?查找當(dāng)前目錄中文件權(quán)限的0755的文件
find?.?-size?+12k?#?查找當(dāng)前目錄中大于12KB的文件,注意c表示byte
4、cp命令
該命令用于復(fù)制文件,copy之意,它還可以把多個(gè)文件一次性地復(fù)制到一個(gè)目錄下,它的常用參數(shù)如下:
-a?:將文件的特性一起復(fù)制
-p?:連同文件的屬性一起復(fù)制,而非使用默認(rèn)方式,與-a相似,常用于備份
-i?:若目標(biāo)文件已經(jīng)存在時(shí),在覆蓋時(shí)會(huì)先詢問操作的進(jìn)行
-r?:遞歸持續(xù)復(fù)制,用于目錄的復(fù)制行為
-u?:目標(biāo)文件與源文件有差異時(shí)才會(huì)復(fù)制
例如 :
cp?-a?file1?file2?#連同文件的所有特性把文件file1復(fù)制成文件file2
cp?file1?file2?file3?dir?#把文件file1、file2、file3復(fù)制到目錄dir中
5、mv命令
該命令用于移動(dòng)文件、目錄或更名,move之意,它的常用參數(shù)如下:
-f?:force強(qiáng)制的意思,如果目標(biāo)文件已經(jīng)存在,不會(huì)詢問而直接覆蓋
-i?:若目標(biāo)文件已經(jīng)存在,就會(huì)詢問是否覆蓋
-u?:若目標(biāo)文件已經(jīng)存在,且比目標(biāo)文件新,才會(huì)更新
注:該命令可以把一個(gè)文件或多個(gè)文件一次移動(dòng)一個(gè)文件夾中,但是最后一個(gè)目標(biāo)文件一定要是“目錄”。
例如:
mv?file1?file2?file3?dir?#?把文件file1、file2、file3移動(dòng)到目錄dir中
mv?file1?file2?#?把文件file1重命名為file2
6、rm命令
該命令用于刪除文件或目錄,remove之間,它的常用參數(shù)如下:
-f?:就是force的意思,忽略不存在的文件,不會(huì)出現(xiàn)警告消息
-i?:互動(dòng)模式,在刪除前會(huì)詢問用戶是否操作
-r?:遞歸刪除,最常用于目錄刪除,它是一個(gè)非常危險(xiǎn)的參數(shù)
例如:
rm?-i?file?#?刪除文件file,在刪除之前會(huì)詢問是否進(jìn)行該操作
rm?-fr?dir?#?強(qiáng)制刪除目錄dir中的所有文件
7、ps命令
該命令用于將某個(gè)時(shí)間點(diǎn)的進(jìn)程運(yùn)行情況選取下來并輸出,process之意,它的常用參數(shù)如下:
-A?:所有的進(jìn)程均顯示出來
-a?:不與terminal有關(guān)的所有進(jìn)程
-u?:有效用戶的相關(guān)進(jìn)程
-x?:一般與a參數(shù)一起使用,可列出較完整的信息
-l?:較長(zhǎng),較詳細(xì)地將PID的信息列出
其實(shí)我們只要記住ps一般使用的命令參數(shù)搭配即可,它們并不多,如下:
ps?aux?#?查看系統(tǒng)所有的進(jìn)程數(shù)據(jù)
ps?ax?#?查看不與terminal(終端)有關(guān)的所有進(jìn)程
ps?-lA?#?查看系統(tǒng)所有的進(jìn)程數(shù)據(jù)
ps?axjf?#?查看連同一部分進(jìn)程樹狀態(tài)
狀態(tài)詳解:
user 用戶名
uid 用戶號(hào)
pid 進(jìn)程號(hào)
ppid 父進(jìn)程號(hào)
size 內(nèi)存大小, Kbytes字節(jié).
vsize 總虛擬內(nèi)存大小, bytes字節(jié)(包含code+data+stack)
share 總共享頁數(shù)
nice 進(jìn)程優(yōu)先級(jí)(缺省為0, 最大為-20)
priority(pri) 內(nèi)核調(diào)度優(yōu)先級(jí)
pmem 進(jìn)程分享的物理內(nèi)存數(shù)的百分比
trs 程序執(zhí)行代碼駐留大小
rss 進(jìn)程使用的總物理內(nèi)存數(shù), Kbytes字節(jié)
time 進(jìn)程執(zhí)行起到現(xiàn)在總的CPU暫用時(shí)間
stat 進(jìn)程狀態(tài):D 不可中斷 uninterruptible sleep (usually IO),R 運(yùn)行 runnable (on run queue),S 中斷 sleeping,T 停止 traced or stopped,Z 僵死 a defunct (”zombie”) process
cmd(args) 執(zhí)行命令的簡(jiǎn)單格式
8、kill命令
該命令用于向某個(gè)工作(%jobnumber)或者是某個(gè)PID(數(shù)字)傳送一個(gè)信號(hào),它通常與ps和jobs命令一起使用,它的基本語法如下:
kill?-signal?PID
signal的常用參數(shù)如下:
注:最前面的數(shù)字為信號(hào)的代號(hào),使用時(shí)可以用代號(hào)代替相應(yīng)的信號(hào)。
1:SIGHUP,啟動(dòng)被終止的進(jìn)程
2:SIGINT,相當(dāng)于輸入ctrl+c,中斷一個(gè)程序的進(jìn)行
9:SIGKILL,強(qiáng)制中斷一個(gè)進(jìn)程的進(jìn)行
15:SIGTERM,以正常的結(jié)束進(jìn)程方式來終止進(jìn)程
17:SIGSTOP,相當(dāng)于輸入ctrl+z,暫停一個(gè)進(jìn)程的進(jìn)行
例如:
#?以正常的結(jié)束進(jìn)程方式來終于第一個(gè)后臺(tái)工作,可用jobs命令查看后臺(tái)中的第一個(gè)工作進(jìn)程
kill?-SIGTERM?%1
#?重新改動(dòng)進(jìn)程ID為PID的進(jìn)程,PID可用ps命令通過管道命令加上grep命令進(jìn)行篩選獲得
kill?-SIGHUP?PID
9、killall命令
該命令用于向一個(gè)命令啟動(dòng)的進(jìn)程發(fā)送一個(gè)信號(hào),它的一般語法如下:
killall?[-iIe]?[command?name]
它的參數(shù)如下:
-i?:交互式的意思,若需要?jiǎng)h除時(shí),會(huì)詢問用戶
-e?:表示后面接的command?name要一致,但command?name不能超過15個(gè)字符
-I?:命令名稱忽略大小寫
#?例如:
killall?-SIGHUP?syslogd?#?重新啟動(dòng)syslogd
10、壓縮和解壓縮
tar命令
解包:tar zxvf FileName.tar
打包:tar czvf FileName.tar DirName
gz命令
解壓1:gunzip FileName.gz
解壓2:gzip -d FileName.gz
壓縮:gzip FileName
.tar.gz 和 .tgz
解壓:tar zxvf FileName.tar.gz
壓縮:tar zcvf FileName.tar.gz DirName
壓縮多個(gè)文件:tar zcvf FileName.tar.gz DirName1 DirName2 DirName3 ...
bz2命令
解壓1:bzip2 -d FileName.bz2
解壓2:bunzip2 FileName.bz2
壓縮: bzip2 -z FileName
.tar.bz2
解壓:tar jxvf FileName.tar.bz2
壓縮:tar jcvf FileName.tar.bz2 DirName
bz命令
解壓1:bzip2 -d FileName.bz
解壓2:bunzip2 FileName.bz
壓縮:未知
.tar.bz
解壓:tar jxvf FileName.tar.bz
Z命令
解壓:uncompress FileName.Z
壓縮:compress FileName
.tar.Z
解壓:tar Zxvf FileName.tar.Z
壓縮:tar Zcvf FileName.tar.Z DirName
zip命令
解壓:unzip FileName.zip
壓縮:zip FileName.zip DirName
11、chmod命令
該命令用于改變文件的權(quán)限,一般的用法如下:
chmod?[-R]?xyz?文件或目錄
-R:進(jìn)行遞歸的持續(xù)更改,即連同子目錄下的所有文件都會(huì)更改
同時(shí),chmod還可以使用u(user)、g(group)、o(other)、a(all)和+(加入)、-(刪除)、=(設(shè)置)跟rwx搭配來對(duì)文件的權(quán)限進(jìn)行更改。
12、Vim命令
dd? ? 刪除光標(biāo)所在行
dw???? 刪除一個(gè)字(word)
x???? 刪除當(dāng)前字符
X???? 刪除前一個(gè)字符
D???? 刪除到行末
yy???? 復(fù)制一行,此命令前可跟數(shù)字,標(biāo)識(shí)復(fù)制多行,如6yy,表示從當(dāng)前行開始復(fù)制6行
yw???? 復(fù)制一個(gè)字
y$???? 復(fù)制到行末
p???? 粘貼粘貼板的內(nèi)容到當(dāng)前行的下面
P???? 粘貼粘貼板的內(nèi)容到當(dāng)前行的上面
gg? ? 跳至文件的第一行
gd???? 跳至當(dāng)前光標(biāo)所在的變量的聲明處
13 、目錄結(jié)構(gòu)
/bin
系統(tǒng)有很多放置執(zhí)行檔的目錄,但/bin比較特殊。因?yàn)?bin放置的是在單人維護(hù)模式下還能夠被操作的指令。在/bin底下的指令可以被root與一般帳號(hào)所使用,主要有:cat,chmod(修改權(quán)限), chown, date, mv, mkdir, cp, bash等等常用的指令。
/boot
主要放置開機(jī)會(huì)使用到的檔案,包括Linux核心檔案以及開機(jī)選單與開機(jī)所需設(shè)定檔等等。Linux kernel常用的檔名為:vmlinuz ,如果使用的是grub這個(gè)開機(jī)管理程式,則還會(huì)存在/boot/grub/這個(gè)目錄。
/dev
在Linux系統(tǒng)上,任何裝置與周邊設(shè)備都是以檔案的型態(tài)存在于這個(gè)目錄當(dāng)中。 只要通過存取這個(gè)目錄下的某個(gè)檔案,就等于存取某個(gè)裝置。比要重要的檔案有/dev/null, /dev/zero, /dev/tty , /dev/lp*, / dev/hd*, /dev/sd*等等
/etc
系統(tǒng)主要的設(shè)定檔幾乎都放置在這個(gè)目錄內(nèi),例如人員的帳號(hào)密碼檔、各種服務(wù)的啟始檔等等。 一般來說,這個(gè)目錄下的各檔案屬性是可以讓一般使用者查閱的,但是只有root有權(quán)力修改。 FHS建議不要放置可執(zhí)行檔(binary)在這個(gè)目錄中。 比較重要的檔案有:/etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/等等。 另外,其下重要的目錄有:/etc/init.d/ :所有服務(wù)的預(yù)設(shè)啟動(dòng)script都是放在這里的,例如要啟動(dòng)或者關(guān)閉iptables的話: /etc/init.d/iptables start、/etc/init.d/ iptables stop
/etc/xinetd.d/ :這就是所謂的super daemon管理的各項(xiàng)服務(wù)的設(shè)定檔目錄。
/etc/X11/ :與X Window有關(guān)的各種設(shè)定檔都在這里,尤其是xorg.conf或XF86Config這兩個(gè)X Server的設(shè)定檔。
/home
這是系統(tǒng)預(yù)設(shè)的使用者家目錄(home directory)。 在你新增一個(gè)一般使用者帳號(hào)時(shí),預(yù)設(shè)的使用者家目錄都會(huì)規(guī)范到這里來。比較重要的是,家目錄有兩種代號(hào):
~ :代表當(dāng)前使用者的家目錄,而 ~guest:則代表用戶名為guest的家目錄。
/lib
系統(tǒng)的函式庫非常的多,而/lib放置的則是在開機(jī)時(shí)會(huì)用到的函式庫,以及在/bin或/sbin底下的指令會(huì)呼叫的函式庫而已 。 什么是函式庫呢?妳可以將他想成是外掛,某些指令必須要有這些外掛才能夠順利完成程式的執(zhí)行之意。 尤其重要的是/lib/modules/這個(gè)目錄,因?yàn)樵撃夸洉?huì)放置核心相關(guān)的模組(驅(qū)動(dòng)程式)。
/media
media是媒體的英文,顧名思義,這個(gè)/media底下放置的就是可移除的裝置。?包括軟碟、光碟、DVD等等裝置都暫時(shí)掛載于此。 常見的檔名有:/media/floppy, /media/cdrom等等。
/mnt
如果妳想要暫時(shí)掛載某些額外的裝置,一般建議妳可以放置到這個(gè)目錄中。在古早時(shí)候,這個(gè)目錄的用途與/media相同啦。?只是有了/media之后,這個(gè)目錄就用來暫時(shí)掛載用了。
/opt
這個(gè)是給第三方協(xié)力軟體放置的目錄 。 什么是第三方協(xié)力軟體?。颗e例來說,KDE這個(gè)桌面管理系統(tǒng)是一個(gè)獨(dú)立的計(jì)畫,不過他可以安裝到Linux系統(tǒng)中,因此KDE的軟體就建議放置到此目錄下了。 另外,如果妳想要自行安裝額外的軟體(非原本的distribution提供的),那么也能夠?qū)⒛愕能涹w安裝到這里來。 不過,以前的Linux系統(tǒng)中,我們還是習(xí)慣放置在/usr/local目錄下。
/root
系統(tǒng)管理員(root)的家目錄。 之所以放在這里,是因?yàn)槿绻M(jìn)入單人維護(hù)模式而僅掛載根目錄時(shí),該目錄就能夠擁有root的家目錄,所以我們會(huì)希望root的家目錄與根目錄放置在同一個(gè)分區(qū)中。
/sbin
Linux有非常多指令是用來設(shè)定系統(tǒng)環(huán)境的,這些指令只有root才能夠利用來設(shè)定系統(tǒng),其他使用者最多只能用來查詢而已。放在/sbin底下的為開機(jī)過程中所需要的,里面包括了開機(jī)、修復(fù)、還原系統(tǒng)所需要的指令。至于某些伺服器軟體程式,一般則放置到/usr/sbin/當(dāng)中。至于本機(jī)自行安裝的軟體所產(chǎn)生的系統(tǒng)執(zhí)行檔(system binary),則放置到/usr/local/sbin/當(dāng)中了。常見的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。
/srv
srv可以視為service的縮寫,是一些網(wǎng)路服務(wù)啟動(dòng)之后,這些服務(wù)所需要取用的資料目錄。 常見的服務(wù)例如WWW, FTP等等。 舉例來說,WWW伺服器需要的網(wǎng)頁資料就可以放置在/srv/www/里面。呵呵,看來平時(shí)我們編寫的代碼應(yīng)該放到這里了。
/tmp
這是讓一般使用者或者是正在執(zhí)行的程序暫時(shí)放置檔案的地方。這個(gè)目錄是任何人都能夠存取的,所以你需要定期的清理一下。當(dāng)然,重要資料不可放置在此目錄啊。?因?yàn)镕HS甚至建議在開機(jī)時(shí),應(yīng)該要將/tmp下的資料都刪除。
事實(shí)上FHS針對(duì)根目錄所定義的標(biāo)準(zhǔn)就僅限于上表,不過仍舊有些目錄也需要我們了解一下,具體如下:
/lost+found
這個(gè)目錄是使用標(biāo)準(zhǔn)的ext2/ext3檔案系統(tǒng)格式才會(huì)產(chǎn)生的一個(gè)目錄,目的在于當(dāng)檔案系統(tǒng)發(fā)生錯(cuò)誤時(shí),將一些遺失的片段放置到這個(gè)目錄下。 這個(gè)目錄通常會(huì)在分割槽的最頂層存在,例如你加裝一個(gè)硬盤于/disk中,那在這個(gè)系統(tǒng)下就會(huì)自動(dòng)產(chǎn)生一個(gè)這樣的目錄/disk/lost+found
/proc
這個(gè)目錄本身是一個(gè)虛擬文件系統(tǒng)(virtual filesystem)喔。?他放置的資料都是在內(nèi)存當(dāng)中,例如系統(tǒng)核心、行程資訊(process)(是進(jìn)程嗎?)、周邊裝置的狀態(tài)及網(wǎng)絡(luò)狀態(tài)等等。因?yàn)檫@個(gè)目錄下的資料都是在記憶體(內(nèi)存)當(dāng)中,所以本身不占任何硬盤空間。比較重要的檔案(目錄)例如: /proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/*等等。呵呵,是虛擬內(nèi)存嗎[guest]?
/sys
這個(gè)目錄其實(shí)跟/proc非常類似,也是一個(gè)虛擬的檔案系統(tǒng),主要也是記錄與核心相關(guān)的資訊。 包括目前已載入的核心模組與核心偵測(cè)到的硬體裝置資訊等等。 這個(gè)目錄同樣不占硬盤容量。
除了這些目錄的內(nèi)容之外,另外要注意的是,因?yàn)楦夸浥c開機(jī)有關(guān),開機(jī)過程中僅有根目錄會(huì)被掛載, 其他分區(qū)則是在開機(jī)完成之后才會(huì)持續(xù)的進(jìn)行掛載的行為。就是因?yàn)槿绱耍虼烁夸浵屡c開機(jī)過程有關(guān)的目錄, 就不能夠與根目錄放到不同的分區(qū)去。
那哪些目錄不可與根目錄分開呢?有底下這些:
/etc:配置文件
/bin:重要執(zhí)行檔
/dev:所需要的裝置文件
/lib:執(zhí)行檔所需的函式庫與核心所需的模塊
/sbin:重要的系統(tǒng)執(zhí)行文件
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?關(guān)于LNMP安裝
關(guān)于lnmp的一鍵安裝
下載LNMP一件安裝包
wget ? http://lnmporg.duapp.com/lnmp/lnmp1.4-full.tar.gz
下載好以后,就進(jìn)行解壓
tar -zxvf lnmp1.4-full.tar.gz
解壓完以后,就進(jìn)入解壓后的目錄

接著進(jìn)行一鍵安裝,
./install.sh

選擇想要的版本。接著就等待自動(dòng)安裝完成。

安裝完全了以后,就輸入一下IP,查看一下是否安裝成功。

如果是該界面,就是安裝完成了。接著就是查看和檢查一下。
ps -A 查看一下進(jìn)程。也可以做一下測(cè)試,看看是否正常,
重啟nginx : nginx -s reload
關(guān)閉php-fpm 進(jìn)程,然后啟用php-fpm
連接一下數(shù)據(jù)庫,mysql -uroot -p
如果都成功,那說明安裝成功了,接下來就是開啟數(shù)據(jù)庫外部訪問權(quán)限
mysql>use mysql;
mysql>update user set host ="%" where user = "root";
mysql>select host, user from user;
mysql>FLUSH PRIVILEGES;
這是最簡(jiǎn)單的外部訪問權(quán)限開啟,

如果設(shè)置成功了,可是連接的時(shí)候,依舊連接不上,可能存在的問題就是端口沒有開啟,接著就要去查看一下端口3306有沒有開啟。
iptables -L -n
可以先將防火墻備份下來
iptables-save > /root/iptables

可以看到,3306端口沒有打開。
接著打開備份,vim iptables?

可以看到,3306端口沒有開啟,接著修改備份,講3306打開。

保存好以后,將備份restore到防火墻
iptables-restore< /root/iptables
接著在查看一下端口號(hào),3306已經(jīng)開啟,接著在連接一下數(shù)據(jù)。數(shù)據(jù)庫連接成功。
數(shù)據(jù)庫也連接成功了,接著就是虛擬機(jī)配置
虛擬機(jī)的配置在nginx.conf中,也可以在vhost文件夾中創(chuàng)建文件自己配置,其地址是 /usr/local/nginx/conf/nginx.conf

其中紅色箭頭標(biāo)注的地方就是可以拓展的虛擬機(jī)的位置,

該地方就是虛擬機(jī)的配置,其中
{
listen 80 default_server; ?//默認(rèn)監(jiān)聽的端口號(hào)80端口
#listen [::]:80 default_server ipv6only=on;
server_name _; ?//填寫備案的域名
index index.html index.htm index.php; //讀取的入口文件
root? /home/wwwroot/default; //讀取項(xiàng)目的路徑
#error_page? 404? /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all;
?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??MongoDB學(xué)習(xí)
1、A (Atomicity) 原子性
原子性很容易理解,也就是說事務(wù)里的所有操作要么全部做完,要么都不做,事務(wù)成功的條件是事務(wù)里的所有操作都成功,只要有一個(gè)操作失敗,整個(gè)事務(wù)就失敗,需要回滾。
比如銀行轉(zhuǎn)賬,從A賬戶轉(zhuǎn)100元至B賬戶,分為兩個(gè)步驟:1)從A賬戶取100元;2)存入100元至B賬戶。這兩步要么一起完成,要么一起不完成,如果只完成第一步,第二步失敗,錢會(huì)莫名其妙少了100元。
2、C (Consistency) 一致性
一致性也比較容易理解,也就是說數(shù)據(jù)庫要一直處于一致的狀態(tài),事務(wù)的運(yùn)行不會(huì)改變數(shù)據(jù)庫原本的一致性約束。
例如現(xiàn)有完整性約束a+b=10,如果一個(gè)事務(wù)改變了a,那么必須得改變b,使得事務(wù)結(jié)束后依然滿足a+b=10,否則事務(wù)失敗。
3、I (Isolation) 獨(dú)立性
所謂的獨(dú)立性是指并發(fā)的事務(wù)之間不會(huì)互相影響,如果一個(gè)事務(wù)要訪問的數(shù)據(jù)正在被另外一個(gè)事務(wù)修改,只要另外一個(gè)事務(wù)未提交,它所訪問的數(shù)據(jù)就不受未提交事務(wù)的影響。
比如現(xiàn)有有個(gè)交易是從A賬戶轉(zhuǎn)100元至B賬戶,在這個(gè)交易還未完成的情況下,如果此時(shí)B查詢自己的賬戶,是看不到新增加的100元的。
4、D (Durability) 持久性
持久性是指一旦事務(wù)提交后,它所做的修改將會(huì)永久的保存在數(shù)據(jù)庫上,即使出現(xiàn)宕機(jī)也不會(huì)丟失。
分布式系統(tǒng)
分布式系統(tǒng)(distributed system)由多臺(tái)計(jì)算機(jī)和通信的軟件組件通過計(jì)算機(jī)網(wǎng)絡(luò)連接(本地網(wǎng)絡(luò)或廣域網(wǎng))組成。
分布式系統(tǒng)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng)。正是因?yàn)檐浖奶匦?,所以分布式系統(tǒng)具有高度的內(nèi)聚性和透明性。
因此,網(wǎng)絡(luò)和分布式系統(tǒng)之間的區(qū)別更多的在于高層軟件(特別是操作系統(tǒng)),而不是硬件。
分布式系統(tǒng)可以應(yīng)用在在不同的平臺(tái)上如:Pc、工作站、局域網(wǎng)和廣域網(wǎng)上等。
分布式計(jì)算的優(yōu)點(diǎn)
可靠性(容錯(cuò)) :
分布式計(jì)算系統(tǒng)中的一個(gè)重要的優(yōu)點(diǎn)是可靠性。一臺(tái)服務(wù)器的系統(tǒng)崩潰并不影響到其余的服務(wù)器。
可擴(kuò)展性:
在分布式計(jì)算系統(tǒng)可以根據(jù)需要增加更多的機(jī)器。
資源共享:
共享數(shù)據(jù)是必不可少的應(yīng)用,如銀行,預(yù)訂系統(tǒng)。
靈活性:
由于該系統(tǒng)是非常靈活的,它很容易安裝,實(shí)施和調(diào)試新的服務(wù)。
更快的速度:
分布式計(jì)算系統(tǒng)可以有多臺(tái)計(jì)算機(jī)的計(jì)算能力,使得它比其他系統(tǒng)有更快的處理速度。
開放系統(tǒng):
由于它是開放的系統(tǒng),本地或者遠(yuǎn)程都可以訪問到該服務(wù)。
更高的性能:
相較于集中式計(jì)算機(jī)網(wǎng)絡(luò)集群可以提供更高的性能(及更好的性價(jià)比)。
分布式計(jì)算的缺點(diǎn)
故障排除:
故障排除和診斷問題。
軟件:
更少的軟件支持是分布式計(jì)算系統(tǒng)的主要缺點(diǎn)。
網(wǎng)絡(luò):
網(wǎng)絡(luò)基礎(chǔ)設(shè)施的問題,包括:傳輸問題,高負(fù)載,信息丟失等。
安全性:
開發(fā)系統(tǒng)的特性讓分布式計(jì)算系統(tǒng)存在著數(shù)據(jù)的安全性和共享的風(fēng)險(xiǎn)等問題。
mongodb在linux中的安裝
curl-O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz? ? # 下載
tar-zxvf mongodb-linux-x86_64-3.0.6.tgz# 解壓
mv? mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb# 將解壓包拷貝到指定目錄
進(jìn)入到mingodb目錄中:cd /usr/local/mongodb
創(chuàng)建數(shù)據(jù)庫目錄 :mkdir -p data/db
接著啟動(dòng)mongodb
./mongod ?--dbpath=/usr/local/mongodb/data
./mongo
mongodb的安裝和簡(jiǎn)單的啟動(dòng)已經(jīng)完成。
也可以做一個(gè)簡(jiǎn)單的配置用來啟用,
進(jìn)入 bin 目錄中:
cd bin/
創(chuàng)建配置文件 mongodb.conf:
vim ?mongodb.conf
在 mongodb.conf 寫入如下內(nèi)容:
# 設(shè)置數(shù)據(jù)文件的存放目錄
dbpath = /usr/local/mongodb/bin/data/db
# 設(shè)置日志文件的存放目錄及其日志文件名
logpath = /usr/local/mongodbdata/log/mongodb.log
# 設(shè)置端口號(hào)(默認(rèn)的端口號(hào)是 27017)
port = 27017
# 設(shè)置為以守護(hù)進(jìn)程的方式運(yùn)行,即在后臺(tái)運(yùn)行
fork = true
# nohttpinterface = true
nohttpinterface = true
接著wq 保存
然后就是啟動(dòng):./mongod --config mongodb.conf ?這一句等價(jià)于:./mongod ?--dbpath=/usr/local/bin/data/db --logpath=/usr/local/mongodb/bin/data/log/mongodb.log --fork,若以前有過配置,或者在使用的時(shí)候,出錯(cuò)了,可以到db里面將mongodb.lock給刪了在重新啟動(dòng)一下試試。
接著可以查看一下mongodb的進(jìn)程是否在后臺(tái)運(yùn)行 :ps aux |grep mongodb
查看 mongodb 服務(wù)的運(yùn)行日志:tail -200f /usr/local/mongodb/data/log/mongodb.log
檢查端口是否已被啟動(dòng):netstat -lanp | grep 27017 //該端口號(hào)是你在配置中設(shè)置的端口號(hào),默認(rèn)是27017
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mongodb的實(shí)例
以下實(shí)例我們創(chuàng)建了數(shù)據(jù)庫 young:
>use young
switched to db young>db
young>
如果你想查看所有數(shù)據(jù)庫,可以使用show dbs命令:
>show dbs
>db.runoob.insert({"name":"young"})
WriteResult({"nInserted":1})
>show dbs
local ?0.078GB
young ?0.078GB
?test ? ?0.078GB>

刪除數(shù)據(jù)庫
db.dropDatabase()

插入數(shù)據(jù):>db.young.insert()

更新數(shù)據(jù):>db.young.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})

刪除數(shù)據(jù):db.young.remove({'title':'MongoDB 教程'})

查詢所有數(shù)據(jù):db.young.find()
查詢格式化:db.young.find().pretty()
條件語句查詢:

and語句查詢規(guī)則:

or語句查詢規(guī)則:

用type類型查詢:


limit的使用:

MongoDB Skip() 方法
我們除了可以使用limit()方法來讀取指定數(shù)量的數(shù)據(jù)外,還可以使用skip()方法來跳過指定數(shù)量的數(shù)據(jù),skip方法同樣接受一個(gè)數(shù)字參數(shù)作為跳過的記錄條數(shù)。

MongoDB sort()方法
在MongoDB中使用使用sort()方法對(duì)數(shù)據(jù)進(jìn)行排序,sort()方法可以通過參數(shù)指定排序的字段,并使用 1 和 -1 來指定排序的方式,其中 1 為升序排列,而-1是用于降序排列。

mongodb 索引
ensureIndex() 方法
MongoDB使用 ensureIndex() 方法來創(chuàng)建索引。
語法
ensureIndex()方法基本語法格式如下所示:
>db.COLLECTION_NAME.ensureIndex({KEY:1})
例子:


復(fù)核索引的創(chuàng)建:

查看所創(chuàng)建的索引:

刪除索引:

使用explain()對(duì)查詢數(shù)據(jù)進(jìn)行分析:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??PHP的mongodb 拓展安裝
wget http://pecl.php.net/get/mongo-1.4.0.tgz
tar -zxvf mongo-1.4.0.tgzcd mongo-1.4.03)
進(jìn)入文件夾后,首先運(yùn)行phpize來編譯擴(kuò)展的環(huán)境
[root@localhost mongo-1.4.0]# /usr/local/php/bin/phpize
運(yùn)行后,我們運(yùn)行./configure腳本來進(jìn)行配置
./configure--with-php-config=/usr/local/php/bin/php-config
–with-php-config 這個(gè)參數(shù)是告訴配置腳本 php-config 這個(gè)程序的路徑
?make
make install
安裝完成后:在php.ini文件增加一行
extension=mongo.so

接著重啟nginx和php-fpm ,然后在index.php中輸出phpinfo();

在瀏覽器中打開輸入服務(wù)器IP,

搜索一下:mongo如果有出現(xiàn)就安裝成功了,
