開發所需工具:html
Vagrantdocker
Oneinstackwindows
Virtualboxcentos
Vagrant boxbash
系統環境:macOS Sierra 10.12.5
搭建系統:CentOS 7
搭建環境:Oneinstack(PHP以及Java環境
)網絡
爲啥不用docker?由於不少公司用的windows,然而windows 10才能正常支持,在wineows下安裝一大堆東西不行,折騰了好些下,決定不躺着個坑。app
首先須要先安裝Virtualbox
、Vagrant
,按照官方文檔選擇對應操做系統安裝便可。ssh
檢查是否安裝完成ide
➜ ~ vagrant -v Vagrant 1.9.8
準備就緒,走起!!!工具
➜ morgan cd path #cd 到你要操做的目錄 ➜ path mkdir vagrant #建立目錄 ➜ vagrant cd vagrant #進入目錄
選擇boxs,打開Vagrant box,在box列表選擇CentOS 7 x64 (Minimal, Shrinked, Guest Additions 4.3.26) (Monthly updates)
根據你的須要選擇對應的系統,複製對應URL。
➜ vagrant vagrant init centos/7 #在Vagrant box 中的名字,而後等待 ➜ vagrant vagrant up #啓動 ➜ vagrant vagrant ssh #進入ssh [vagrant@localhost ~]$ cd /home/ #進入你準備用來下載oneinstack的目錄,而後根據官方安裝教程完成環境安裝
到這裏PHP環境安裝完畢,問題來了,如何訪問呢?端口映射。
打開所在目錄Vagrant生成的Vagrantfile
查找被註釋的forwarded_port,其實該配置文件寫的很詳細,能夠根聽說明完成大部分配置。複製,粘貼之註釋下方,端口號根據系統環境以及我的需求更改,而後保存。
# config.vm.network "forwarded_port", guest: 80, host: 8080 + config.vm.network "forwarded_port", guest: 80, host: 8989
退出ssh,而後重啓。
[vagrant@localhost root]$ exit; #退出ssh ➜ vagrant vagrant reload #重啓
訪問127.0.0.1:8989
OK,展現出歡迎service歡迎頁面。
訪問的問題解決了,那麼該如何編輯代碼呢?同步文件夾解決這個問題。爲了更快的同步到box裏面,Mac可使用NFS
Windows可使用SMB
方式。以Mac爲例,配置不一樣的是type參數。打開Vagrantfile
,查找synced_folder
複製到下方,查找private_network
複製到下方,修改對應目錄,保存。
# config.vm.synced_folder "../data", "/vagrant_data" + config.vm.synced_folder "本機文件路徑", "vagrant上面須要掛載的目錄" # config.vm.network "private_network", ip: "192.168.33.10" + config.vm.network "private_network", ip: "192.168.33.10" #文件同步須要通信,因此須要配置網絡,這裏配置的私有網絡。若是你須要局域網其餘人可以訪問你的Vagrant中的項目,那麼你可能須要配置共有網絡,查看Vagrant的docs Networking 查看更多。
重啓服務
➜ vagrant vagrant up
到這裏,環境的配置完成了!
加註釋的爲其餘修改
Vagrant.configure("2") do |config| config.vm.hostname = "morgan" #修改主機名,ssh登錄後的左側提示 config.vm.box = "centos/7" config.vm.network "forwarded_port", guest: 80, host: 8989 config.vm.network "private_network", ip: "192.168.33.10" config.vm.synced_folder "/Users/morgan/Desktop/www/", "/data/wwwroot/default/", type: "nfs" config.vm.provider "virtualbox" do |vb| vb.name = "morgan-centos" #虛擬機名 vb.memory = "1024" #內存大小 vb.cpus = 2 #CPU數量 end end
在開發測試的時候,發現要刷新幾回纔可以顯示新的頁面,查看文檔發現是Nginx 的sendfile 致使的。修改配置。
#In Nginx: sendfile off; #In Apache: EnableSendfile Off
➜ vagrant vagrant package name
參考文檔:
Vagrant docs