一般的開發場景:php
代碼放在virtualbox上運行,本地的IDE經過sftp實現和虛擬機的代碼同步。html
有 一個不能避免的問題是,當使用git時,若是裝在virtualbox端,那麼每次virtualbox上更新代碼後,都要記得在IDE上 download一下,忘記的話就可能IDE的代碼覆蓋了virtualbox上的代碼。尤爲是當virtualbox切換分支的時候,IDE常常忘記 download代碼,悲劇就發生了。linux
爲 了避免代碼覆蓋的問題,我選擇把git裝在IDE端,這樣每次更新代碼或者切換分支時IDE上的代碼都會自動更新,避免了代碼覆蓋的問題。但有一個新問題 出現,因爲IDE是保存後自動上傳,當切換分支後沒有保存動做的話代碼不會上傳,這個問題忽略的話會在調試時感受莫名其妙,由於遠端的代碼和本地的代碼並 不相同。nginx
使用virtualbox的共享文件夾解決這個問題git
一.安裝virtualbox的「功能加強包」(共享文件夾須要安裝這個包才能使用)web
在一個打開的虛擬機窗口上,點擊「設備」--「安裝加強功能」ui
若是是圖形界面的畫會彈出一個對話框,按提示操做就行,這裏說一下虛擬機是純字符界面的安裝,也要先點擊「安裝加強功能」,具體步驟:spa
1.加載VBoxGuestAdditons.iso鏡像文件,直接經過Linux虛擬機窗口的菜單「設備」->「安裝加強功能」來添加鏡像文件,虛擬機會自動添加鏡像到/dev/cdrom。操作系統
2.掛載VBoxGuestAddition.iso鏡像文件,使用命令:.net
$sudo mount /dev/cdrom /mnt
此時會出現提示:mount: block device /dev/sr0 is write-protected, mounting read-only.此提示無需理會。
3.使用ls /mnt命令查看是否加載成功,加載成功,請進行下一步。
4.運行VBoxLinuxAdditions.run,使用命令:
$sudo /mnt/VBoxLinuxAdditions.run
若是出現相似於failed的字樣,須要查找對應問題。
我安裝中的一個錯誤解決:
在安裝加強功能是出錯:Building the main Guest Additions module [失敗]
解決:
yum install kernel yum install kernel-devel
須要從新啓動虛擬機操做系統,從第一步開始從新操做。
二.共享文件夾的設置方法:
a. 經過菜單欄的「設備」=>「共享文件夾」選項
b. 在窗口的右下腳文件夾圖標位置右鍵選擇「共享文件夾」選項。
打開「共享文件夾」操做界面後,能夠看到兩種共享文件夾的方式:
a. 固定分配:經過固定分配的共享文件夾講永遠存在,避免下次再操做。
b. 臨時分配:也就是臨時性的,虛擬機一關閉,下次啓動後共享的文件夾也就不存在了。
點擊圖中的「文件添加」按鈕,打開編輯界面。選擇要共享的文件夾,選中「自動掛載」和「固定分配」選項。而後點擊「肯定」按鈕。
三. 在virtualbox上使用共享文件夾
在「加強功能」和共享文件夾都設置好了以後,就能夠在virtualbox上操做共享文件夾了
1.自動掛載:
若是選擇了自動掛載,自動掛載的目錄在/media/sf_dirName下邊(dirName是設置共享文件夾時指定的文件夾名稱)。例如此處,共享文件夾的名稱是develop
,自動掛載到虛擬機之後的路徑就是/media/sf_develop
,目錄權限是770
。
2.手動掛載:
$sudo mount -t vboxsf dirName /mnt
經過命令 ls /mnt 查看是否掛載成功
若是出現了:./sbin/mount.vboxsf:mounting failed with the error:No such device這樣的錯誤提示,請檢查VirtualBox加強功能是否編譯安裝成功。
由於共享文件夾是web的代碼目錄,因此仍是使用自動掛載比較好。
四. 設置共享文件夾爲webServer的代碼目錄
因爲開發習慣,個人代碼目錄都在devspace下,而自動掛載的目錄在/media下,首先我要創建一個軟鏈
sudo ln -s /media/sf_develop/ /var/www/devspace/pro1
而後配置好虛擬主機,訪問,出問題了,file not found.
查看nginx日誌,stat() "/var/www/devspace/xxx" failed (13: Permission denied)
從上邊能夠看出,咱們的掛載目錄的權限是770,而且屬組是vboxsf,須要將nginx的用戶添加到vboxsf組下:
usermod -a -G vboxsf www #www是nginx工做進程的用戶,php的也是一樣的添加方法,注意使用sudo adduser www vboxsf並無成功
此時再次訪問就OK了。
注意:須要把IDE的自動上傳功能去掉,由於這個目錄如今是共享文件夾了,不去掉的話會出現詭異的現象。