macos作為開發環境已經相當方便,有很豐富的工具,如homebrew
類似於ubuntu的apt-get
和centos的yum
,很方便地安裝各種開發工具。但終究與線上生產環境不同,即便安裝的是相同的軟體,安裝目錄,管理方式都有所不同。當專案很複雜,或者有多個專案時,很容易將mac本地環境弄得亂七八糟。
為了能與線上生產環境一致,嘗試過用docker, 並沒有想象中的方便,可能是我對dokcer的了解太少。且覺得docker的門檻較高。
衡量各種方案後,最終選擇用vagrant與virtualbox搭建乙個完整的linux系統,這樣能夠與線上生產環境一致,也能很方便地進行移植。
我選擇的是 centos7.2 的映象新建目錄
centos
,作為vagrant的根目錄
☁ centos vagrant box add centos ~/downloads/vagrant-centos-7.2.box
# 將box命名為centos
☁ centos vagrant init
會自動生成vagrantfile
配置檔案
box名稱須與上面命令指定的box名一致
config.vm.box = "centos"
config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
macos不允許將本機的80埠**, 解決方案參照: mac設定埠**
預設的virtualbox共享檔案速度太慢,需要啟用nfs預設
vagrantfile 設定:
config.vm.network "private_network", type: "dhcp"
config.vm.synced_folder "/users/airmb/downloads/work", "/home/wwwroot/work", :nfs => true, :mount_options => ['actimeo=2']
記憶體大小根據物理機記憶體設定,我的mac物理機是8g記憶體,分配了3g給虛擬機器
如果要安裝mysql5.7,記憶體不能低於2g
config.vm.provider "virtualbox" do |vb|
vb.memory = "3072"
end
連線vagrant虛擬機器有兩種方式:
檢視ssh-config
可以用vagrant預設生成的key,也可以將自己的私鑰替換到 identityfile 指定的檔案,連線虛擬機器後再將公鑰放到虛擬機器中的~/.ssh/authorized_keys
啟動虛擬機器
☁ centos vagrant up
連線進入虛擬機器
☁ centos vagrant ssh
預設的共享掛載目錄:/home/vagrant
☁ centos vagrant package --base centos_default_1533259579120_24934 --out centos7.2.box # 匯出box
☁ centos vagrant box add centos ./centos7.2.box # 匯入box
當需要重新匯入映象時,為避免出現各種奇奇怪怪的問題,清空以下內容:
# 將現有的box刪除
☁ centos vagrant box list
centos (virtualbox, 0)
☁ centos vagrant box remove centos
☁ centos vagrant global-status --prune
☁ centos rm -rf .vagrant
☁ centos rm -rf vagrantfile
☁ centos cd ~/virtualbox\ vms
☁ virtualbox vms ls
centos_default_1534145188471_82398
☁ virtualbox vms rm -rf ./*
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.provider "virtualbox" do |vb|
# # display the virtualbox gui when booting the machine
# vb.gui = true
## # customize the amount of memory on the vm:
vb.memory = "3072"
end
config.vm.synced_folder "~/code", "/home/wwwroot/code", :owner=> 'vagrant', :group=>'www', :mount_options => ['dmode=775', 'fmode=775']
同乙個檔案,本地修改後,centos虛擬機器能看到同步的修改,但怎麼重新整理都看不到變化,只有在centos裡面再修改檔案才有效。而動態檔案,如php檔案修改後實時能看到變化
解決:將nginx.conf的配置修改:
sendfile off;
apache也有相同問題,修改配置:
enablesendfile off
vagrant環境搭建
總結 直白的說是一鍵生成特定虛擬機器的工具。1 新增虛擬機器 vagrant box add 0525 d soft vagrantfile 20200523.box 0525為虛擬機器名,目錄為box的檔案目錄 2 初始化虛擬機器 vagrant init 會生成box的配置檔案vagrantfi...
環境搭建 ubuntu上安裝vagrant
ubuntu安裝vagrant時需要首先安裝virtualbox。step2 在ubuntu終端中執行 sudo dpkg i virtualbox 4.3 4.3.14 95030 ubuntu raring amd64.deb如果提示缺少依賴包,那麼可以執行 sudo apt get f ins...
vagrant安裝centos7失敗
本人在安裝過程中,遇到了不少問題,從網上也找了些解決方案,自己也嘗試了一些,最終還是失敗了,不過過程中有幾個問題與解決方案值得記錄一下,說不定以後就知道是忽略了 這是我先vagrant init centos 7,然後vagrant up,經過較長時間,報告的錯誤 an error occurred...