Vagrant 筆記

vagrant.png

1. Vagrant 的介紹

虛擬開發(fā)環(huán)境

平常我們經常會遇到這樣的問題:在開發(fā)機上面開發(fā)完畢程序互广,放到正式環(huán)境之后會出現各種奇怪的問題:描述符少了十拣、nginx配置不正確昭雌、MySQL編碼不對羹唠、php缺少模塊奕枢、glibc版本太低等娄昆。

所以我們就需要虛擬開發(fā)環(huán)境,我們虛擬和正式環(huán)境一樣的虛擬開發(fā)環(huán)境缝彬,而隨著個人開發(fā)機硬件的升級萌焰,我們可以很容易的在本機跑虛擬機,例如VMware谷浅、VirtualBox等扒俯。因此使用虛擬化開發(fā)環(huán)境,在本機可以運行自己喜歡的OS(Windows一疯、Ubuntu撼玄、Mac等),開發(fā)的程序運行在虛擬機中墩邀,這樣遷移到生產環(huán)境可以避免環(huán)境不一致導致的莫名錯誤掌猛。

虛擬開發(fā)環(huán)境特別適合團隊中開發(fā)環(huán)境、測試環(huán)境眉睹、正式環(huán)境不同的場合荔茬,這樣就可以使得整個團隊保持一致的環(huán)境,我寫這一章的初衷就是為了讓大家和我的開發(fā)環(huán)境保持一致竹海,讓讀者和我們整個大團隊保持一致的開發(fā)環(huán)境慕蔚。

Vagrant

Vagrant就是為了方便的實現虛擬化環(huán)境而設計的斋配,使用Ruby開發(fā)孔飒,基于VirtualBox等虛擬機管理軟件的接口,提供了一個可配置许起、輕量級的便攜式虛擬開發(fā)環(huán)境。使用Vagrant可以很方便的就建立起來一個虛擬環(huán)境菩鲜,而且可以模擬多臺虛擬機园细,這樣我們平時還可以在開發(fā)機模擬分布式系統(tǒng)。

Vagrant還會創(chuàng)建一些共享文件夾接校,用來給你在主機和虛擬機之間共享代碼用猛频。這樣就使得我們可以在主機上寫程序,然后在虛擬機中運行蛛勉。如此一來團隊之間就可以共享相同的開發(fā)環(huán)境鹿寻,就不會再出現類似“只有你的環(huán)境才會出現的bug”這樣的事情。

團隊新員工加入诽凌,常常會遇到花一天甚至更多時間來從頭搭建完整的開發(fā)環(huán)境毡熏,而有了Vagrant,只需要直接將已經打包好的package(里面包括開發(fā)工具侣诵,代碼庫痢法,配置好的服務器等)拿過來就可以工作了狱窘,這對于提升工作效率非常有幫助。

Vagrant不僅可以用來作為個人的虛擬開發(fā)環(huán)境工具财搁,而且特別適合團隊使用蘸炸,它使得我們虛擬化環(huán)境變得如此的簡單,只要一個簡單的命令就可以開啟虛擬之路尖奔。


2. Vagrant 安裝配置

實際上Vagrant只是一個讓你可以方便設置你想要的虛擬機的便攜式工具搭儒,它底層支持VirtualBox、VMware甚至AWS作為虛擬機系統(tǒng)提茁,本書中我們將使用VirtualBox來進行說明淹禾,所以第一步需要先安裝Vagrant和VirtualBox。

VirtualBox 安裝

VirtualBox是Oracle開源的虛擬化系統(tǒng)甘凭,它支持多個平臺稀拐,所以你可以到官方網站:https://www.virtualbox.org/wiki/Downloads/ 下載適合你平臺的VirtualBox最新版本并安裝,它的安裝過程都很傻瓜化丹弱,一步一步執(zhí)行就可以完成安裝了德撬。

Vagrant 安裝

最新版本的Vagrant已經無法通過 gem 命令來安裝,因為依賴庫太多了躲胳,所以目前無法使用 gem 來安裝蜓洪,目前網絡上面很多教程還是類似這樣的命令,那些都是錯誤的坯苹。目前唯一安裝的辦法就是到官方網站下載打包好的安裝包:http://www.vagrantup.com/downloads.html 他的安裝過程和VirtualBox的安裝一樣都是傻瓜化安裝隆檀,一步一步執(zhí)行就可以完成安裝。

盡量下載最新的程序粹湃,因為VirtualBox經常升級恐仑,升級后有些接口會變化,老的Vagrant可能無法使用为鳄。

要想檢測安裝是否成功裳仆,可以打開終端命令行工具,輸入 vagrant 孤钦,看看程序是不是已經可以運行了歧斟。如果不行,請檢查一下$PATH里面是否包含 vagrant 所在的路徑偏形。

Vagrant 配置

當我們安裝好VirtualBox和Vagrant后静袖,我們要開始考慮在VM上使用什么操作系統(tǒng)了,一個打包好的操作系統(tǒng)在Vagrant中稱為Box俊扭,即Box是一個打包好的操作系統(tǒng)環(huán)境队橙,目前網絡上什么都有,所以你不用自己去制作操作系統(tǒng)或者制作Box:vagrantbox.es上面有大家熟知的大多數操作系統(tǒng),你只需要下載就可以了喘帚,下載主要是為了安裝的時候快速畅姊,當然Vagrant也支持在線安裝。

建立開發(fā)環(huán)境目錄

我的開發(fā)機是Mac吹由,所以我建立了如下的開發(fā)環(huán)境目錄若未,讀者可以根據自己的系統(tǒng)不同建立一個目錄就可以:

/Users/astaxie/vagrant

下載box

前面講了box是一個操作系統(tǒng)環(huán)境,實際上它是一個zip包倾鲫,包含了Vagrant的配置信息和VirtualBox的虛擬機鏡像文件.我們這一次的實戰(zhàn)使用官方提供了一個box:Ubuntu lucid 64 http://files.vagrantup.com/lucid64.box

當然你也可以選一個自己團隊在用的系統(tǒng)粗合,例如CentOS、Debian等乌昔,我們可以通過上面說的地址下載開源愛好者們制作好的box隙疚。當然你自己做一個也行,下一節(jié)我會講述如何自己制作包磕道。

添加box

添加box的命令如下:

$ vagrant box add base      # 遠端的box地址或者本地的box文件名

vagrant box add 是添加box的命令

base是box的名稱供屉,可以是任意的字符串,base是默認名稱溺蕉,主要用來標識一下你添加的box伶丐,后面的命令都是基于這個標識來操作的。

例子:

$ vagrant box add base http://files.vagrantup.com/lucid64.box
$ vagrant box add base https://dl.dropbox.com/u/7225008/Vagrant/CentOS-6.3-x86_64-minimal.box
$ vagrant box add base CentOS-6.3-x86_64-minimal.box
$ vagrant box add "CentOS 6.3 x86_64 minimal" CentOS-6.3-x86_64-minimal.box

我在開發(fā)機上面是這樣操作的疯特,首先進入我們的開發(fā)環(huán)境目錄/Users/astaxie/vagrant哗魂,執(zhí)行如下的命令

$ vagrant box add base lucid64.box

安裝過程的信息:

Downloading or copying the box...
Extracting box...te: 47.5M/s, Estimated time remaining: --:--:--)
Successfully added box 'base' with provider 'virtualbox'!

box中的鏡像文件被放到了:/Users/astaxie/.vagrant.d/boxes/,如果在window系統(tǒng)中應該是放到了:
C:\Users\當前用戶名\.vagrant.d\boxes\目錄下漓雅。

通過vagrant box add這樣的方式安裝遠程的box录别,可能很慢,所以建議大家先下載box到本地再執(zhí)行這樣的操作邻吞。

初始化

初始化的命令如下:

$ vagrant init

如果你添加的box名稱不是base组题,那么需要在初始化的時候指定名稱,例如

$ vagrant init "CentOS 6.3 x86_64 minimal"

初始化過程的信息:

A `Vagrantfile` has been placed in this directory.
You are now ready to `vagrant up` your first virtual environment!
Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.

這樣就會在當前目錄生成一個 Vagrantfile的文件抱冷,里面有很多配置信息崔列,后面我們會詳細講解每一項的含義,但是默認的配置就可以開箱即用徘层。

啟動虛擬機

啟動虛擬機的命令如下:

$ vagrant up

啟動過程的信息:

Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'base'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Mounting shared folders...
[default] -- /vagrant

連接到虛擬機

上面已經啟動了虛擬機峻呕,之后我們就可以通過ssh來連接到虛擬機了利职。比如在我的開發(fā)機中可以像這樣來連接:

$ vagrant ssh

連接到虛擬機后的信息如下:

Linux lucid64 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS

Welcome to the Ubuntu Server!
 * Documentation:  http://www.ubuntu.com/server/doc
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.

Welcome to your Vagrant-built virtual machine.
Last login: Fri Sep 14 07:31:39 2012 from 10.0.2.2

這樣我們就可以像連接到一臺服務器一樣進行操作了趣效。

window機器不支持這樣的命令,必須使用第三方客戶端來進行連接猪贪,例如putty跷敬、Xshell4等.

putty為例:

主機地址: 127.0.0.1

端口: 2222

用戶名: vagrant

密碼: vagrant

系統(tǒng)信息

進入系統(tǒng)之后我們可以看一下系統(tǒng)的基礎信息:

vagrant@lucid64:/vagrant$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/lucid64-root
                       78G  945M   73G   2% /
none                  179M  176K  179M   1% /dev
none                  184M     0  184M   0% /dev/shm
none                  184M   64K  184M   1% /var/run
none                  184M     0  184M   0% /var/lock
none                  184M     0  184M   0% /lib/init/rw
none                   78G  945M   73G   2% /var/lib/ureadahead/debugfs
/dev/sda1             228M   17M  199M   8% /boot
/vagrant              298G   76G  222G  26% /vagrant

/vagrant 這個目錄是自動映射的,被映射到 /Users/astaxie/vagrant热押,這樣就方便我們以后在開發(fā)機中進行開發(fā)西傀,在虛擬機中進行運行效果測試了斤寇。

Vagrantfile配置文件詳解

在我們的開發(fā)目錄下有一個文件 Vagrantfile,里面包含有大量的配置信息拥褂,主要包括三個方面的配置娘锁,虛擬機的配置、SSH配置饺鹃、Vagrant的一些基礎配置莫秆。Vagrant是使用Ruby開發(fā)的,所以它的配置語法也是Ruby的悔详,但是我們沒有學過Ruby的人還是可以跟著它的注釋知道怎么配置一些基本項的配置镊屎。

  1. box設置
config.vm.box = "base"
上面這配置展示了Vagrant要去啟用那個box作為系統(tǒng),也就是上面我們輸入`vagrant init Box名稱`時所指定的box茄螃,如果沒有輸入box名稱的話缝驳,那么默認就是`base`,VirtualBox提供了VBoxManage這個命令行工具归苍,可以讓我們設定VM用狱,用`modifyvm`這個命令讓我們可以設定VM的名稱和內存大小等等,這里說的名稱指的是在VirtualBox中顯示的名稱霜医,我們也可以在Vagrantfile中進行設定齿拂,在Vagrantfile中加入如下這行就可以設定了:

    config.vm.provider "virtualbox" do |v|
      v.customize ["modifyvm", :id, "--name", "astaxie", "--memory", "512"]
    end

這行設置的意思是調用VBoxManage的`modifyvm`的命令,設置VM的名稱為`astaxie`肴敛,內存為512MB署海。你可以類似的通過定制其它VM屬性來定制你自己的VM。
  1. 網絡設置

    Vagrant有兩種方式來進行網絡連接医男,一種是host-only(主機模式)砸狞,意思是主機和虛擬機之間的網絡互訪,而不是虛擬機訪問internet的技術镀梭,也就是只有你一個人自High刀森,其他人訪問不到你的虛擬機。另一種是Bridge(橋接模式)报账,該模式下的VM就像是局域網中的一臺獨立的主機研底,也就是說需要VM到你的路由器要IP,這樣的話局域網里面其他機器就可以訪問它了透罢,一般我們設置虛擬機都是自high為主榜晦,所以我們的設置一般如下:

     config.vm.network :private_network, ip: "11.11.11.11"
    

    這里我們虛擬機設置為hostonly,并且指定了一個IP羽圃,IP的話建議最好不要用192.168..這個網段乾胶,因為很有可能和你局域網里面的其它機器IP沖突,所以最好使用類似11.11..這樣的IP地址。

  2. hostname設置

    hostname 的設置非常簡單识窿,Vagrantfile中加入下面這行就可以了:

     config.vm.hostname = "go-app"
    

    設置hostname非常重要斩郎,因為當我們有很多臺虛擬服務器的時候,都是依靠hostname來做識別的喻频,例如Puppet或是Chef缩宜,都是通過hostname來做識別的,既然設置那么簡單甥温,所以我們就別偷懶脓恕,設置一個。

  3. 同步目錄

    我們上面介紹過/vagrant目錄默認就是當前的開發(fā)目錄窿侈,這是在虛擬機開啟的時候默認掛載同步的炼幔。我們還可以通過配置來設置額外的同步目錄:

     config.vm.synced_folder  "/Users/astaxie/data", "/vagrant_data"
    

    上面這個設定,第一個參數是主機的目錄史简,第二個參數是虛擬機掛載的目錄

  4. 端口轉發(fā)

     config.vm.network :forwarded_port, guest: 80, host: 8080
    

    上面這句配置可厲害了乃秀,這一行的意思是把對host機器上8080端口的訪問請求forward到虛擬機的80端口的服務上,例如你在你的虛擬機上使用nginx跑了一個Go應用圆兵,那么你在host機器上的瀏覽器中打開http://localhost:8080 時跺讯,Vagrant就會把這個請求轉發(fā)到VM里面跑在80端口的nginx服務上,因此我們可以通過這個設置來幫助我們去設定host和VM之間殉农,或是VM和VM之間的信息交互刀脏。

修改完Vagrantfile的配置后,記得要用 vagrant reload 命令來重啟VM之后才能使用VM更新后的配置


3 Vgrant使用入門

前面我們已經學會了如何安裝并配置Vagrant超凳,而且也已經按照默認的方式開啟了愈污,那么這一小節(jié)就給大家介紹一下Vagrant的高級應用。

Vagrant常用命令

前面講了Vagrant的幾個命令:

  • vagrant box add 添加box的操作
  • vagrant init 初始化box的操作
  • vagrant up 啟動虛擬機的操作
  • vagrant ssh 登錄虛擬機的操作

Vagrant還包括如下一些操作:

  • vagrant box list

    顯示當前已經添加的box列表

    $ vagrant box list
    base (virtualbox)
    
  • vagrant box remove

    刪除相應的box

    $ vagrant box remove base virtualbox
    Removing box 'base' with provider 'virtualbox'...
    
  • vagrant destroy

    停止當前正在運行的虛擬機并銷毀所有創(chuàng)建的資源

    $ vagrant destroy
    Are you sure you want to destroy the 'default' VM? [y/N] y
    [default] Destroying VM and associated drives...
    
  • vagrant halt

    關機

    $ vagrant halt
    [default] Attempting graceful shutdown of VM...
    
  • vagrant package

    打包命令轮傍,可以把當前的運行的虛擬機環(huán)境進行打包

    $ vagrant package
    [default] Attempting graceful shutdown of VM...
    [default] Clearing any previously set forwarded ports...
    [default] Creating temporary directory for export...
    [default] Exporting VM...
    [default] Compressing package to: /Users/astaxie/vagrant/package.box
    
  • vagrant plugin

    用于安裝卸載插件

  • vagrant provision

    通常情況下Box只做最基本的設置暂雹,而不是設置好所有的環(huán)境,因此Vagrant通常使用Chef或者Puppet來做進一步的環(huán)境搭建创夜。那么Chef或者Puppet稱為provisioning杭跪,而該命令就是指定開啟相應的provisioning。按照Vagrant作者的說法驰吓,所謂的provisioning就是"The problem of installing software on a booted system"的意思涧尿。除了Chef和Puppet這些主流的配置管理工具之外,我們還可以使用Shell來編寫安裝腳本檬贰。

    例如: vagrant provision --provision-with chef

  • vagrant reload

    重新啟動虛擬機姑廉,主要用于重新載入配置文件

    $ vagrant reload
    [default] Attempting graceful shutdown of VM...
    [default] Setting the name of the VM...
    [default] Clearing any previously set forwarded ports...
    [default] Creating shared folders metadata...
    [default] Clearing any previously set network interfaces...
    [default] Preparing network interfaces based on configuration...
    [default] Forwarding ports...
    [default] -- 22 => 2222 (adapter 1)
    [default] Booting VM...
    [default] Waiting for VM to boot. This can take a few minutes.
    [default] VM booted and ready for use!
    [default] Setting hostname...
    [default] Mounting shared folders...
    [default] -- /vagrant
    
  • vagrant resume

    恢復前面被掛起的狀態(tài)

    $ vagrant resume
    [default] Resuming suspended VM...
    [default] Booting VM...
    [default] Waiting for VM to boot. This can take a few minutes.
    [default] VM booted and ready for use!
    
  • vagrant ssh-config

    輸出用于ssh連接的一些信息

    $ vagrant ssh-config
    Host default
      HostName 127.0.0.1
      User vagrant
      Port 2222
      UserKnownHostsFile /dev/null
      StrictHostKeyChecking no
      PasswordAuthentication no
      IdentityFile "/Users/astaxie/.vagrant.d/insecure_private_key"
      IdentitiesOnly yes
      LogLevel FATAL
    
  • vagrant status

    獲取當前虛擬機的狀態(tài)

    $vagrant status
    Current machine states:
    
    default                   running (virtualbox)
    
    The VM is running. To stop this VM, you can run `vagrant halt` to
    shut it down forcefully, or you can run `vagrant suspend` to simply
    suspend the virtual machine. In either case, to restart it again,
    simply run `vagrant up`.
    
  • vagrant suspend

    掛起當前的虛擬機

    $ vagrant suspend
    [default] Saving VM state and suspending execution...
    

模擬打造多機器的分布式系統(tǒng)

前面這些單主機單虛擬機主要是用來自己做開發(fā)機,從這部分開始的內容主要將向大家介紹如何在單機上通過虛擬機來打造分布式造集群系統(tǒng)偎蘸。這種多機器模式特別適合以下幾種人:

  1. 快速建立產品網絡的多機器環(huán)境庄蹋,例如web服務器、db服務器
  2. 建立一個分布式系統(tǒng)迷雪,學習他們是如何交互的
  3. 測試API和其他組件的通信
  4. 容災模擬限书,網絡斷網、機器死機章咧、連接超時等情況

Vagrant支持單機模擬多臺機器倦西,而且支持一個配置文件Vagrntfile就可以跑分布式系統(tǒng)。

現在我們來建立多臺VM跑起來赁严,並且讓他們之間能夠相通信扰柠,假設一臺是應用服務器、一臺是DB服務器疼约,那么這個結構在Vagrant中非常簡單卤档,其實和單臺的配置差不多,你只需要通過config.vm.define來定義不同的角色就可以了程剥,現在我們打開配置文件進行如下設置:

Vagrant.configure("2") do |config|
  config.vm.define :web do |web|
    web.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--name", "web", "--memory", "512"]
    end
    web.vm.box = "base"
    web.vm.hostname = "web"
    web.vm.network :private_network, ip: "11.11.1.1"
  end

  config.vm.define :db do |db|
    db.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--name", "db", "--memory", "512"]
    end
    db.vm.box = "base"
    db.vm.hostname = "db"
    db.vm.network :private_network, ip: "11.11.1.2"
  end
end

這里的設置和前面我們單機設置配置類似劝枣,只是我們使用了:web以及:db分別做了兩個VM的設置,并且給每個VM設置了不同的hostname和IP织鲸,設置好之后再使用vagrant up將虛擬機跑起來:

$ vagrant up
Bringing machine 'web' up with 'virtualbox' provider...
Bringing machine 'db' up with 'virtualbox' provider...
[web] Setting the name of the VM...
[web] Clearing any previously set forwarded ports...
[web] Creating shared folders metadata...
[web] Clearing any previously set network interfaces...
[web] Preparing network interfaces based on configuration...
[web] Forwarding ports...
[web] -- 22 => 2222 (adapter 1)
[web] Running any VM customizations...
[web] Booting VM...
[web] Waiting for VM to boot. This can take a few minutes.
[web] VM booted and ready for use!
[web] Setting hostname...
[web] Configuring and enabling network interfaces...
[web] Mounting shared folders...
[web] -- /vagrant
[db] Setting the name of the VM...
[db] Clearing any previously set forwarded ports...
[db] Fixed port collision for 22 => 2222. Now on port 2200.
[db] Creating shared folders metadata...
[db] Clearing any previously set network interfaces...
[db] Preparing network interfaces based on configuration...
[db] Forwarding ports...
[db] -- 22 => 2200 (adapter 1)
[db] Running any VM customizations...
[db] Booting VM...
[db] Waiting for VM to boot. This can take a few minutes.
[db] VM booted and ready for use!
[db] Setting hostname...
[db] Configuring and enabling network interfaces...
[db] Mounting shared folders...
[db] -- /vagrant

看到上面的信息輸出后舔腾,我們就可以通過vagrant ssh登錄虛擬機了,但是這次和上次使用的不一樣了搂擦,這次我們需要指定相應的角色稳诚,用來告訴ssh你期望連接的是哪一臺:

$ vagrant ssh web
vagrant@web:~$

$ vagrant ssh db
vagrant@db:~$

是不是很酷!現在接下來我們再來驗證一下虛擬機之間的通信瀑踢,讓我們先使用ssh登錄web虛擬機扳还,然后在web虛擬機上使用ssh登錄db虛擬機(默認密碼是vagrant):

$ vagrant ssh web
Linux web 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS

Welcome to the Ubuntu Server!
 * Documentation:  http://www.ubuntu.com/server/doc
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.

Welcome to your Vagrant-built virtual machine.
Last login: Thu Aug  8 18:55:44 2013 from 10.0.2.2
vagrant@web:~$ ssh 11.11.1.2
The authenticity of host '11.11.1.2 (11.11.1.2)' can't be established.
RSA key fingerprint is e7:8f:07:57:69:08:6e:fa:82:bc:1c:f6:53:3f:12:9e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '11.11.1.2' (RSA) to the list of known hosts.
vagrant@11.11.1.2's password:
Linux db 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS

Welcome to the Ubuntu Server!
 * Documentation:  http://www.ubuntu.com/server/doc
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.

Welcome to your Vagrant-built virtual machine.
Last login: Thu Aug  8 18:58:50 2013 from 10.0.2.2
vagrant@db:~$

通過上面的信息我們可以看到虛擬機之間通信是暢通的,所以現在開始你偉大的架構設計吧橱夭,你想設計怎么樣的架構都可以普办,唯一限制你的就是你主機的硬件配置了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末徘钥,一起剝皮案震驚了整個濱河市衔蹲,隨后出現的幾起案子,更是在濱河造成了極大的恐慌呈础,老刑警劉巖舆驶,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異而钞,居然都是意外死亡沙廉,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門臼节,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撬陵,“玉大人珊皿,你說我怎么就攤上這事【匏埃” “怎么了蟋定?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長草添。 經常有香客問我驶兜,道長,這世上最難降的妖魔是什么远寸? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任抄淑,我火速辦了婚禮,結果婚禮上驰后,老公的妹妹穿的比我還像新娘肆资。我一直安慰自己,他們只是感情好灶芝,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布迅耘。 她就那樣靜靜地躺著,像睡著了一般监署。 火紅的嫁衣襯著肌膚如雪淌实。 梳的紋絲不亂的頭發(fā)上哼拔,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天卒落,我揣著相機與錄音墩划,去河邊找鬼。 笑死晓避,一個胖子當著我的面吹牛簇捍,可吹牛的內容都是我干的。 我是一名探鬼主播俏拱,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼暑塑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锅必?” 一聲冷哼從身側響起事格,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎搞隐,沒想到半個月后驹愚,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡劣纲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年逢捺,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片癞季。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡劫瞳,死狀恐怖倘潜,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情志于,我是刑警寧澤涮因,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站恨憎,受9級特大地震影響,放射性物質發(fā)生泄漏郊楣。R本人自食惡果不足惜憔恳,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望净蚤。 院中可真熱鬧钥组,春花似錦、人聲如沸今瀑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽橘荠。三九已至屿附,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哥童,已是汗流浹背挺份。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贮懈,地道東北人匀泊。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像朵你,于是被迫代替她去往敵國和親各聘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345