在寫本文前,筆者已經(jīng)嘗試了多種其他的替代方法,例如wmware虛擬機(jī)安裝kylin。然而發(fā)現(xiàn)總是還有各種問題。經(jīng)大佬指點(diǎn)安裝了virtualbox + vagrant。于是發(fā)現(xiàn)配置起來如此簡單。接下來筆者將詳細(xì)闡述。
(注:筆者自己的服務(wù)器上的配置是centos7.2 + ruby2.3.4 + mariadb + redis,自己的筆記本為win10,另外,很多網(wǎng)上的類似文章都寫于很長時(shí)間以前,很多內(nèi)容現(xiàn)在已經(jīng)不適用,甚至很多關(guān)鍵的環(huán)節(jié)還不講清楚,導(dǎo)致筆者配置初期踩了很多的坑。所以寫下此文,總結(jié)經(jīng)驗(yàn))
配置流程
1、box鏡像的選擇
本文中,筆者由于網(wǎng)站服務(wù)器系統(tǒng)為centos7.2,所以理所應(yīng)當(dāng)?shù)倪x擇了centos的鏡像。(鏡像官網(wǎng),支持搜索配置:https://app.vagrantup.com/boxes/search。 關(guān)于vagrant,此文中不再贅述,網(wǎng)上關(guān)于vagrant+virtualbox的資料很多,基本配置也非常簡單省事)。
起初,筆者隨意下載了一個(gè)下載量高的centos,結(jié)果發(fā)現(xiàn)內(nèi)部配置有很多的問題,主要問題是很多軟件的版本過于老舊且更新很麻煩,需要手動(dòng)解決很多的依賴(有的甚至還解決不了,于是果斷棄坑)。后來換了一個(gè)官方鏡像,于是有了很大的改觀。(安利一下我用的鏡像:https://app.vagrantup.com/centos/boxes/7)
在選擇鏡像的時(shí)候要注意以下幾點(diǎn):
•如沒有十足的把握,請(qǐng)盡量選擇較新且完整版的鏡像(盡量不要Minimal)
•如果網(wǎng)絡(luò)條件允許(例如在中國大陸之外)的話,可以直接按照頁面上的方法配置。如果網(wǎng)絡(luò)條件不允許或者速度極慢,可以先按照上面init你的vagrant,然后得到box的下載地址,中斷init。然后用迅雷下載此地址到本地再配置,可以大大節(jié)省時(shí)間。
2、安裝git
作為開發(fā)機(jī),git是必不可少的,然而一開始也被git坑了好長時(shí)間。
首先直接命令安裝
yum install git
安裝時(shí)務(wù)必注意版本,版本最好不要低于1.8(之前另一個(gè)系統(tǒng)git1.7,很多網(wǎng)站上的repo無法正常訪問)
接下來就是配置git的一些全局設(shè)置
git config --global user.name "HansBug"
git config --global user.email xxx@xxx.com
git config credential.helper 'cache --timeout=7200'
三條設(shè)置依次為用戶名,用戶郵箱和記住密碼(本人較懶,不想配置ssh)有效時(shí)間(單位秒,例子中為2小時(shí))
3、安裝rvm
作為rails環(huán)境的搭建,rvm是很重要的一環(huán)。
首先安裝rvm(如果本機(jī)沒有curl或者出現(xiàn)其他依賴問題請(qǐng)先解決)
curl -L get.rvm.io | bash -s stable
安裝完后如果看到如下的提示的話
* WARNING: You have '~/.profile' file, you might want to load it,
to do that add the following line to '/home/vagrant/.bash_profile':
source ~/.profile
則按照他說的做就好了。
安裝完畢后有一個(gè)很重要的操作——將原鏡像地址換掉。原鏡像地址由于某些神秘的原因(你懂得),接下來ruby下載速度奇慢,而且還不穩(wěn)定。
于是果斷執(zhí)行命令
echo "ruby_url=https://cache.ruby-china.org/pub/ruby" > ~/.rvm/user/db
4、安裝ruby
rvm配置完畢之后,下一步就是安裝ruby(我使用的是2.3.4版本)
rvm install 2.3.4
然后安裝完之后設(shè)置為默認(rèn)版本
rvm use 2.3.4 --default
5、修改gem source
一般來說,ruby安裝完之后,gem也就有了。但是因?yàn)橐恍┥衩氐脑颍愣茫?,gem原本的source常常下載速度極慢。
首先看一下現(xiàn)有的gem source
gem source -l
反饋是
*** CURRENT SOURCES ***
https://rubygems.org/
這個(gè)是rubygem原有的鏡像,在大陸訪問速度比較慢。我們可以換上ruby-china提供的鏡像。操作如下:
gem source -r https://rubygems.org/
gem source -a https://gems.ruby-china.org/
依次是刪除原有鏡像地址和創(chuàng)建新鏡像地址。到此,gem配置完畢
6、安裝rails和bundler
如果之前都配置妥善了的話,這一步其實(shí)很簡單
首先(中間可能會(huì)出現(xiàn)部分依賴性問題,可以通過baidu和google自行解決,一般都能找到相關(guān)資料)
gem install rails
確認(rèn)安裝完畢后,運(yùn)行
gem install bundler
7、安裝mariadb和redis
其實(shí)mariadb在centos上的安裝非常簡單,直接 yum -y install mariadb mariadb-server mysql-devel
即可(最后一個(gè)要是不安裝的話,等會(huì)bundle install時(shí)會(huì)出現(xiàn)依賴錯(cuò)誤)。
然后就可以 sudo service mariadb start來啟動(dòng)數(shù)據(jù)庫了,十分方便。(關(guān)于數(shù)據(jù)庫的設(shè)置密碼等問題,可以自行百度相關(guān)資料,此處不再贅述)
redis的話,在確保EPEL安裝了的情況下,也可以直接yum -y install redis,系統(tǒng)服務(wù)也配置好了,非常方便。(EPEL的安裝請(qǐng)看文末問題區(qū)2)
注:在正式部署項(xiàng)目之前,請(qǐng)務(wù)必按照development的方式將redis和mariadb的相關(guān)配置配置好
關(guān)于mariadb的基本初始設(shè)置,可以參照:https://www.jb51.net/article/108930.htm
關(guān)于mariadb的遠(yuǎn)程訪問問題,可以參照下面鏈接,寫的很簡潔清晰(不過除了開發(fā)機(jī)以外的情況下將遠(yuǎn)程權(quán)限賦予全部ip是很不安全的):https://www.jb51.net/article/72426.htm
8、部署項(xiàng)目
首先在項(xiàng)目目錄下初始化倉庫并添加遠(yuǎn)程倉庫(后面寫上你的git地址)
git init
git remote add origin *****************.git
然后
git pull origin master
將項(xiàng)目安置好,然后接下來就是rails項(xiàng)目的一般性流程了
bundle install
rails db:migrate
rails db:seed
(注:若在bundle install的過程中遇到相關(guān)依賴性問題的話,可以首先查看錯(cuò)誤說明,很多錯(cuò)誤說明中已經(jīng)告訴了你如何操作,需要安裝什么包。如果沒能解決的話請(qǐng)百度或google)
最后一步,
rails server -b 0.0.0.0
啟動(dòng)rails服務(wù)器,然后我們就可以直接通過3000端口訪問本機(jī)的網(wǎng)站啦!大功告成
問題區(qū)
1、vagrant無法與主機(jī)共享文件夾
我這邊之前出現(xiàn)過一個(gè)問題,將配置文件(Vagrantfile)里面的這行注釋去掉
config.vm.synced_folder "data", "/vagrant_data"
啟用文件夾共享時(shí),出現(xiàn)了錯(cuò)誤
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:
mount -t vboxsf -o uid=1000,gid=1000 vagrant_data /vagrant_data
The error output from the command was:
mount: unknown filesystem type 'vboxsf'
這個(gè)問題解決方案已經(jīng)知道。其實(shí)很簡單,就是缺一個(gè)插件,裝上就ok
vagrant plugin install vagrant-vbguest
然后reload,問題解決。
2、部分軟件包無法找到
這種情況是由于centos7本身帶的軟件包并不多。所以我們需要安裝EPEL(https://www.jb51.net/article/113316.htm)
操作如下:
yum -y install epel-release
yum repolist
依次是安裝epel和刷新軟件包列表。我們可以看到,軟件包數(shù)量增加了很多。
3、將虛擬機(jī)映射至ip
其實(shí)這一步也很簡單,將Vagrantfile里面的這一行注釋去掉即可(同時(shí)也請(qǐng)保證局域網(wǎng)內(nèi)ip地址沒有沖突,如有沖突,請(qǐng)更換一個(gè)ip。另,若是沖突的話,一般在vagrant up reload的過程中會(huì)報(bào)錯(cuò))
config.vm.network "private_network", ip: "192.168.33.10"
然后網(wǎng)站就可以通過192.168.33.10:3000訪問,數(shù)據(jù)庫可以用192.168.33.10鏈接,甚至也可以用putty通過192.168.33.10的ip地址鏈接,就像連接你的服務(wù)器一樣。
您可能感興趣的文章:- Ubuntu系統(tǒng)中部署Vagrant和VirtualBox的圖文教程
- 手把手教你使用 virtualBox 讓虛擬機(jī)連接網(wǎng)絡(luò)的教程
- 詳解VirtualBox + CentOS 虛擬機(jī)網(wǎng)卡配置
- VirtualBox虛擬機(jī)安裝Ubuntu詳細(xì)教程(圖文)
- vagrant+virtualBox構(gòu)建虛擬機(jī)的方法