Linux學(xué)習(xí),lnmp安裝,MongoDB學(xué)習(xí)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 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)就安裝成功了,

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容