vagrant + centos/7 搭建自己的本地開發環境

YDJFE發表於2018-07-19

作為前端的童鞋們,也許很少接觸到伺服器相關的知識,但是要做一名合格的軟體工程師,就不得不用到這些『軟技能』啦,在踩了無數次坑後,終於搭建好屬於自己的開發環境,成就感妥妥的。

簡單介紹

  • 本文基於MacOS High Sierra 10.13.3 系統,系統的差異可能導致搭建過程中出現不同問題,請自行Google哦。
  • vagrant是一款利器,利用 vagrant + vitualBox 可以搭建虛擬開發環境並且把程式碼同步共享到linux虛擬機器,你可以把這個虛擬機器配成和生產環境一樣的。還可以將自己的系統打包成虛擬機器映象,發給小夥伴們使用。
  • vagrant 常用來做開發環境的部署工具,而 docker 是一種虛擬化技術,生產環境上基本上使用docker,並且更輕量級 ,當然你也可以折騰一下docker。
  • centos 與 ubuntu 都是 linux 髮型版本之一, 但通常來說公司都是使用centos作為自己生產環境的系統。

工具及要安裝的軟體

  • Mac
  • vitualBox
  • vagrant
  • centos/7
  • 寶塔皮膚(簡單好用的伺服器管理皮膚工具)
  • SwitchHosts(好用的hosts管理工具)

安裝

到官網下載並安裝vitualBox,我下載的是OS X 版的,版本號是 5.2.12
再安裝vagrant,此處選擇Mac os 版本,以上就根據安裝器的提示進行安裝即可。

開啟終端進到mac系統的宿主目錄,建立一個存放你的配置的資料夾, 名字最好取得簡單易懂,此處取為centos_vagrant

$  ~mkdir centos_vagrant
複製程式碼

去網上查詢可用的 box , 可以把box理解為類似於iso的映象檔案,搭載了你需要的系統,這裡我們去官網檢視:

vagrant + centos/7 搭建自己的本地開發環境

找到要下載的映象,點進去,發現可以用vagrant 命令下載並且初始化box:

vagrant + centos/7 搭建自己的本地開發環境
但是由於網速原因,在終端下載安裝簡直比龜速還龜速,這裡提供其他兩種方法下載:

  1. 去網上找找別人分享的 box檔案,這裡分享了一個,下載到一開始建立的資料夾centos_vagrant中,但是分享的可能與官網版本有差異,這一點需要注意。
  2. 依然在終端執行vagrant init centos/7 命令,但是在執行過程中會發現終端將box檔案原地址列印了出來,見下圖, 一出現該地址,即可按 ctrl + c 退出
    將該地址複製出來去瀏覽器裡訪問下載,比在終端通過命令列下載快得多,當然這些都需要科學上網才能完成。
    vagrant + centos/7 搭建自己的本地開發環境

搭建環境

瞭解vagrant常用命令

$ vagrant
複製程式碼

vagrant + centos/7 搭建自己的本地開發環境

安裝 box

進入到剛剛建立的centos_vagrant資料夾,如果裡面有vagrantfile檔案, 先刪除它,剛剛下載好的box檔案,也放到這個資料夾,重新命名一下,這裡命名為centos-7.box
開啟終端,進入到centos_vagrant資料夾,使用以下命令:

$ vagrant box add centos-7.box
$ vagrant init centos-7
$ vagrant up
複製程式碼

這個過程最好保證你的應用 vitualBox 是開著的

設定檔案及目錄共享

  • 可以將常用的命令加入到alias 裡,在全域性使用,因為我安裝了zsh,所以編輯.zshrc並儲存,沒有安裝的同學找到.bashrc或.bash_profile進行編輯。
#vagrant-centos
alias centos_up='cd ~/centos_vagrant && vagrant up'
alias centos_status='cd ~/centos_vagrant && vagrant status'
alias centos_ssh='cd ~/centos_vagrant && vagrant ssh'
alias centos_halt='cd ~/centos_vagrant && vagrant halt'
alias centos_reload='cd ~/centos_vagrant && vagrant reload --provision'
alias centos_vi='cd ~/centos_vagrant && vi Vagrantfile'
複製程式碼
  • 修改vagrantfile
    在本地隨意建一個資料夾,假設為centos_vagrant_project,使用 centos_ssh或者vagrant ssh(後面預設使用centos_xxx),登入到虛擬機器
    使用 ls -al命令,會發現虛擬環境裡只有.ssh、.bashrc等檔案

在虛擬機器也建立一個,最好是同名的資料夾,方便管理

$ mkdir centos_vagrant_project
複製程式碼

重開終端,使用 centos_vi對vagrantfile進行編輯,並且一定要去掉前面的#號註釋!!( 不會使用vim 命令的也可使用文字編輯), 修改如下:

vagrant + centos/7 搭建自己的本地開發環境

第一個資料夾目錄是你本機要對映到虛擬機器的目錄,第二個是你虛擬機器上的目錄,第二句config.vm.synced...是將原本的預設路徑禁止掉
但是這裡有個坑,在我以為配置完成後,centos_reload重啟後,在本機的centos_vagrant_project資料夾中做了一些改動,發現在虛擬機器裡並沒有任何變化,經過排查,發現是虛擬機器對映的那個目錄(後面那個)路徑不對,應該是:/home/vagrant/centos_vagrant_project ,即這個路徑是絕對路徑, pwd命令可以檢視檔案路徑
需要注意的是,前面的本機的目錄 ~/centos_vagrant_project裡面的波浪線代表的是宿主目錄,即 /users/username
這樣目錄對映共享就做好了,在本機的資料夾下,新增一個檔案,會發現在虛擬機器裡的檔案也同步了。


外部訪問與埠轉發

  • 自己安裝Nginx去做域名對映太複雜,這裡推薦一個簡便的工具——寶塔皮膚,當然你也可以自己安裝Nginx去折騰...
  • 登入到虛擬機器,使用 root 賬戶
$ centos_ssh
$ sudo su - 
複製程式碼

使用以下命令安裝:

$ yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh
複製程式碼

安裝完成後,會分配一個賬戶及密碼給你,一定要記好

vagrant + centos/7 搭建自己的本地開發環境
如果之前你已經裝了Nginx,可以使用命令刪除它

$ yum remove nginx
複製程式碼
  • 修改vagrantfile做埠轉發與外部訪問
    centos_vi開啟並編輯vagrantfile檔案,配置如下

vagrant + centos/7 搭建自己的本地開發環境

簡單說一下,guest是虛擬機器上對應的埠,host是本機對應的埠,由於我本機80埠常用來做專案,避免哪天不小心開著虛擬機器,埠被佔用,還一直找不到原因,所以選擇了不常用的8089
本機的8888埠也對應虛擬機器的8888埠,即之前安裝寶塔的時候它需要的埠。配置好後重啟虛擬機器,瀏覽器裡輸入127.0.0.1:8888,使用之前分配給你的賬戶和密碼,登入到寶塔皮膚,登入後最好改個好記的賬戶名和密碼

域名對映

  • 開啟寶塔皮膚,在 “軟體管理” 中安裝你需要的,比如:Nginx、PHP、Mysql...
  • 在 “網站” 中可以新增站點,但是使用寶塔皮膚建站的時候預設給你建到了 www/wwwroot目錄下,不過問題也不大
  • 推薦使用 SwitchHosts 軟體管理你本地的hosts

域名對映示例

  • 在本地建立test_erp資料夾,路徑為'~/my-pro/test_erp'
  • 新建站點時,路徑為/www/wwwroot/test_erp,域名為test-erp.com
  • 建好站點不用再進到虛擬機器建目錄,寶塔會幫你建立好
  • 使用SwitchHosts配置hosts站點:127.0.0.1 test-erp.com
  • 增加vagrantfile的配置,做好目錄對映,重啟虛擬機器
  • 瀏覽器中使用 test-erp.com:8089訪問

寶塔域名配置:

vagrant + centos/7 搭建自己的本地開發環境
頁面如下:
vagrant + centos/7 搭建自己的本地開發環境
本機檔案路徑:

vagrant + centos/7 搭建自己的本地開發環境
虛擬機器檔案路徑:

vagrant + centos/7 搭建自己的本地開發環境
vagrantfile檔案配置:

vagrant + centos/7 搭建自己的本地開發環境


打包映象

$ vagrant package --output centos-7-ydj.box --vagrantfile Vagrantfile
複製程式碼

輸出結果:

➜  centos_vagrant vagrant package --output centos-7-ydj.box --vagrantfile Vagrantfile
==> default: Attempting graceful shutdown of VM...
==> default: Clearing any previously set forwarded ports...
==> default: Exporting VM...
==> default: Compressing package to: /Users/zhangyilan/centos_vagrant/centos-7-ydj.box
==> default: Packaging additional file: Vagrantfile
➜  centos_vagrant ls
Vagrantfile      centos-7-ydj.box centos-7.box
複製程式碼

打包完成!!

tips

  • 每次修改完vagrantfile檔案或者對虛擬機器做了操作,一定要reload重啟!!
  • Nginx配置易出現403 Forbbiden 許可權問題,涉及到linux 的 目錄/使用者/許可權 等系列問題
  • 埠、檔名等等,主機和虛擬機器最好保持一致,不然會很頭疼的
  • 涉及到伺服器等相關的,不學點 linux、vim 命令,幾乎動不了手...

結語

折騰伺服器,搭建環境是一個需要耐心、恆心的過程,會遇到各種各樣的問題,這個時候就需要去google,不斷排查bug,並且要記錄,免得再次掉坑裡。
合理使用工具也很重要,畢竟我們不是專業的運維er...
Finally , 小哥哥小姐姐們,如果覺得OK,不要吝嗇你的小心心咯 (´▽`ʃ♡ƪ),躁起來吧!

相關文章