天天看點

win10下vagrant+centos7 rails虛拟開發機配置流程

此文寫于2017.8.21

在寫本文前,筆者已經嘗試了多種其他的替代方法,例如wmware虛拟機安裝kylin。然而發現總是還有各種問題。經大佬指點安裝了virtualbox + vagrant。于是發現配置起來如此簡單。接下來筆者将詳細闡述。

(注:筆者自己的伺服器上的配置是centos7.2 + ruby2.3.4 + mariadb + redis,自己的筆記本為win10,另外,很多網上的類似文章都寫于很長時間以前,很多内容現在已經不适用,甚至很多關鍵的環節還不講清楚,導緻筆者配置初期踩了很多的坑。是以寫下此文,總結經驗)

本文中,筆者由于網站伺服器系統為centos7.2,是以理所應當的選擇了centos的鏡像。(鏡像官網,支援搜尋配置:https://app.vagrantup.com/boxes/search。 關于vagrant,此文中不再贅述,網上關于vagrant+virtualbox的資料很多,基本配置也非常簡單省事)。

起初,筆者随意下載下傳了一個下載下傳量高的centos,結果發現内部配置有很多的問題,主要問題是很多軟體的版本過于老舊且更新很麻煩,需要手動解決很多的依賴(有的甚至還解決不了,于是果斷棄坑)。後來換了一個官方鏡像,于是有了很大的改觀。(安利一下我用的鏡像:https://app.vagrantup.com/centos/boxes/7)

如沒有十足的把握,請盡量選擇較新且完整版的鏡像(盡量不要Minimal)

如果網絡條件允許(例如在中國大陸之外)的話,可以直接按照頁面上的方法配置。如果網絡條件不允許或者速度極慢,可以先按照上面init你的vagrant,然後得到box的下載下傳位址,中斷init。然後用迅雷下載下傳此位址到本地再配置,可以大大節省時間。

作為開發機,git是必不可少的,然而一開始也被git坑了好長時間。

首先直接指令安裝

安裝時務必注意版本,版本最好不要低于1.8(之前另一個系統git1.7,很多網站上的repo無法正常通路)

接下來就是配置git的一些全局設定

三條設定依次為使用者名,使用者郵箱和記住密碼(本人較懶,不想配置ssh)有效時間(機關秒,例子中為2小時)

作為rails環境的搭建,rvm是很重要的一環。

首先安裝rvm(如果本機沒有curl或者出現其他依賴問題請先解決)

安裝完後如果看到如下的提示的話

則按照他說的做就好了。

安裝完畢後有一個很重要的操作——将原鏡像位址換掉。原鏡像位址由于某些神秘的原因(你懂得),接下來ruby下載下傳速度奇慢,而且還不穩定。

于是果斷執行指令

rvm配置完畢之後,下一步就是安裝ruby(我使用的是2.3.4版本)

然後安裝完之後設定為預設版本

一般來說,ruby安裝完之後,gem也就有了。但是因為一些神秘的原因(你懂得),gem原本的source常常下載下傳速度極慢。

首先看一下現有的gem source

回報是

這個是rubygem原有的鏡像,在大陸通路速度比較慢。我們可以換上ruby-china提供的鏡像。操作如下:

依次是删除原有鏡像位址和建立新鏡像位址。到此,gem配置完畢

如果之前都配置妥善了的話,這一步其實很簡單

首先(中間可能會出現部分依賴性問題,可以通過baidu和google自行解決,一般都能找到相關資料)

确認安裝完畢後,運作

其實mariadb在centos上的安裝非常簡單,直接 yum -y install mariadb mariadb-server mysql-devel 即可(最後一個要是不安裝的話,等會bundle install時會出現依賴錯誤)。

然後就可以 sudo service mariadb start來啟動資料庫了,十分友善。(關于資料庫的設定密碼等問題,可以自行百度相關資料,此處不再贅述)

redis的話,在確定EPEL安裝了的情況下,也可以直接yum -y install redis,系統服務也配置好了,非常友善。(EPEL的安裝請看文末問題區2)

注:在正式部署項目之前,請務必按照development的方式将redis和mariadb的相關配置配置好

關于mariadb的基本初始設定,可以參照部落格:http://blog.csdn.net/cenguocheng/article/details/41282663

關于mariadb的遠端通路問題,可以參照部落格,寫的很簡潔清晰(不過除了開發機以外的情況下将遠端權限賦予全部ip是很不安全的):http://www.cnblogs.com/24la/p/mariadb-remoting-access.html

首先在項目目錄下初始化倉庫并添加遠端倉庫(後面寫上你的git位址)

然後

将項目安置好,然後接下來就是rails項目的一般性流程了(特别提醒:在此之前請把指定的database建立好,rails db:migrate沒有建立database的能力)

(注:若在bundle install的過程中遇到相關依賴性問題的話,可以首先檢視錯誤說明,很多錯誤說明中已經告訴了你如何操作,需要安裝什麼包。如果沒能解決的話請百度或google)

最後一步,

啟動rails伺服器,然後我們就可以直接通過3000端口通路本機的網站啦!大功告成

我這邊之前出現過一個問題,将配置檔案(Vagrantfile)裡面的這行注釋去掉

啟用檔案夾共享時,出現了錯誤

這個問題解決方案已經知道(感謝部落格:http://blog.csdn.net/demon3182/article/details/51436032)。其實很簡單,就是缺一個插件,裝上就ok

然後reload,問題解決。

這種情況是由于centos7本身帶的軟體包并不多。是以我們需要安裝EPEL(感謝百度經驗:http://jingyan.baidu.com/article/9158e0003a3eaca25412280c.html)

操作如下:

依次是安裝epel和重新整理軟體包清單。我們可以看到,軟體包數量增加了很多。

其實這一步也很簡單,将Vagrantfile裡面的這一行注釋去掉即可(同時也請保證區域網路内ip位址沒有沖突,如有沖突,請更換一個ip。另,若是沖突的話,一般在vagrant up & reload的過程中會報錯)

然後網站就可以通過192.168.33.10:3000通路,資料庫可以用192.168.33.10連結,甚至也可以用putty通過192.168.33.10的ip位址連結,就像連接配接你的伺服器一樣。