vagrant使用及trusty的配置記錄

##前言 雖然平常的學習和工做都在windows上完成,但與學習和工做無關的業餘時間裏,我喜歡搗鼓linux。在將光盤驅動換成500G硬盤以後,我就在新硬盤上裝了個fedora 20系統。但不得不讓人吐槽的是,fedora系統並不盡如人意,好比要本身編譯vim(我添加了各類支持,python、python三、ruby、tcl、ruby、lua,免得之後再爲某種使用從新搞一次編譯),fedora上竟然提示我xsubpp的問題(谷歌也不得其解)。
在瀏覽osc的相關內容的時候,我發現了vagrant(應該是老早關注docker的時候,想在windows上使用docker,docker官方的文檔裏提到了vagrant)。使用了這貨以後,發覺它至關適合我。最近心血來潮,想學學django開發,因而就開始了配置環境之路。
##vagrant的簡介 vagrant就是一個虛擬化工具,用於建立和配置輕量級、可重用、便捷的開發環境,支持多種虛擬化平臺(virtualbox,vmware,hyper-v等)。另外加一點,開發vagrant的HashiCorp公司是至關不錯的,除了vagrant以外,它還有packer(如其字面意思是打包開發環境的軟件,與vagrant結合使用)和serf(這個不怎麼關注)。 ##vagrant簡單使用 百度搜索vagrant,能夠獲得一大堆的博客介紹如何使用vagrant,我就很少說,僅依憑官方文檔及本身的日常使用來講明一下。
要使用vagrant,首先要下載這個軟件。它提供了windows和linux的二進制版本,方便安裝。我是使用virtualbox的,因而也下載安裝了最新版的virtualbox。
安裝好vagrant以後,根據本身的需求去找相關的打包好的box(官方文檔說這是vagrant環境的包格式),固然也能夠本身去打包一個box(我沒有那樣的折騰精神,畢竟在開發環境上沒有個人我的信息,使用他人打包好的環境也是能夠的)。找box的地方有兩個,一個是舊的,另外一個是新的
vagrant支持自定義插件(固然是用ruby寫的),爲了讓vagrant可以自動更新box裏的virtual guest additions(或者本身更新),我谷歌到了一個vagrant-vbguest插件。根據其文檔,後面的vagrantfile將添加一些內容。
ubuntu trusty版本即將發佈,有一系列的新特性,但我關注的不是這個,只是想用新一點庫,並且我也不用其桌面系統。因而我去vagrantcloud裏找trusty,看到了ubuntu官方的cdimage裏有官方的給出的box,因而就下了這個。固然有其餘的版本,都是能夠的,看我的需求了。
下來之後,就開始使用了,爲避免box更新的麻煩,因而就自定義了一個在vagrant cloud裏找不到的box。html

vagrant init phm/trusty64

它會自動生成一個vagrantfile,我根據官方文檔及本身的使用將其更改以下:python

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "phm/trusty64"

  # 自定義的box地址,默認是要從vagrant cloud上下載的。
  config.vm.box_url = "phm.box"
  # 不要讓vagrant自動檢測box的更新,由於我是不會更新這box的
  config.vm.box_check_update = false
  # 自定義的trusty主機名
  config.vm.hostname = "trusty-phm"

  # 自定義的網絡端口映射
  config.vm.network "forwarded_port", guest: 4000, host: 14000
  config.vm.network "forwarded_port", guest: 8000, host: 18000
  config.vm.network "forwarded_port", guest: 5432, host: 15432
  config.vm.network "forwarded_port", guest: 80, host: 10080

  # 個人代碼是直接推送到github或者gitoschina上的,不須要與主機同步
  config.vm.synced_folder "./data", "/vagrant", disabled: true

  # 插件vbguest的一些設置
  # 啓用virtual guest additions的自動更新
  config.vbguest.auto_update = true
  # 不要遠程下載virtual guest addtions
  config.vbguest.no_remote = true
  # vboxguestaddions.iso文件的本地地址
  config.vbguest.iso_path = "F:/HashiCorp/VBoxGuestAdditions.iso"
end

固然要把剛剛下載來的box放到這個vagrantfile所在的目錄裏,並重命名成與vagrantfile裏相同的名稱。而後就是簡單的啓動命令linux

vagrant up

命令執行完成後,就能夠用git

vagrant ssh

或者用其餘的終端登陸工具登陸了,我是用xshell的(由於是在windows上,其用戶名是vagrant,密碼也是vagrant,ssh地址和端口是127.0.0.1:2222)。 ##trusty的配置 ###更新軟件 登陸進這個trusty以後,我第一件要作的事就是更改其apt源。我用的是中科大的源,固然也能夠是其餘的源,oschina源也行(但不得不吐槽oschina的速度有時仍是有點慢,不如中科大的,可能我是教育網用戶的緣故)。更改/etc/apt/sources.list成以下github

deb http://mirrors.ustc.edu.cn/ubuntu trusty main universe restricted multiverse
deb http://mirrors.ustc.edu.cn/ubuntu trusty-security main universe restricted multiverse
deb http://mirrors.ustc.edu.cn/ubuntu trusty-updates main universe restricted multiverse
deb http://mirrors.ustc.edu.cn/ubuntu trusty-backports main universe restricted multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu trusty main universe restricted multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu trusty-security main universe restricted multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu trusty-updates main universe restricted multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu trusty-backports main universe restricted multiverse

接下來就是更新軟件,由於ubuntu的cdimage裏vagrant的box版本是2月22日的,軟件確定略舊。執行docker

sudo apt-get update && sudo apt-get dist-upgrade

進行軟件更新。更新以後最好重啓一下:shell

sudo reboot

###安裝zsh 我比較喜歡zsh(其實也是由於在osc的博客裏看到有人介紹oh-my-zsh,而後到github上看到了它至關驚豔的一面,因而就決定使用它以代替bash),因而就安裝zsh:django

sudo apt-get install zsh

而後,再把oh-my-zsh給弄來:ubuntu

curl -L http://install.ohmyz.sh | sh

以後把shell換成zsh,並對.zshrc作點小改動。vim

因爲是要學習django,那麼python是必安裝的,慶幸的是trusty已經提供了最新版本的python2和python3。因而我就不去弄pyenv這種東西了。更主要的是pip(python的包管理插件)支持--user選項,即在不改動系統的python包下把包安裝到用戶目錄下。

###編譯vim 我不太喜歡ubuntu官方編譯的vim,一是它的版本沒有跟進,二是它的庫支持不全(我的看法)。因而我克隆其github的代碼(是vim在google code上版本庫的鏡像):

git clone https://github.com/b4winckler/vim.git

(若提示git命令未找到,那就要安裝git-core,

sudo apt-get install git-core


在編譯vim以前要把編譯vim的依賴庫安裝好,主要是官方編譯vim依賴的庫

sudo apt-get build-dep vim

而後再確認依賴包是否是都安裝了

sudo apt-get install libncurses5-dev python-dev python3-dev \
ruby-dev tcl-dev liblua5.2-dev libperl-dev

以後就開始進入vim源碼文件夾裏開始configure,選項有點多

./configure --prefix=/home/vagrant/devlibs/vim --enable-pythoninterp \
--enable-python3interp --enable-rubyinterp --enable-tclinterp \
--enable-perlinterp --enable-luainterp --with-features=huge \
--with-compiledby="Xiaoming <phm8341@gmail.com>" \
--enable-multibyte --enable-sniff --enable-cscope --disable-gpm \
--without-x   --disable-gui

只在命令行操做trusty,不須要gui或者x,同時須要支持中文(multibyte),安裝在用戶目錄而不是系統的/usr/local裏。這些完成後,就是make了:

make VIMRUNTIMEDIR=/home/vagrant/devlibs/vim/share/vim/vim74

這裏這個VIMRUNTIMEDIR不能錯了,就是在要安裝的目錄裏的share文件夾下,否則在編譯安裝以後運行vim命令會報錯沒法找到一些東西。漫長的等待(估計也就七八分鐘時間)以後就能夠執行

make install

了。而後把vim的安裝目錄添加進path裏(必須在/usr/bin和/usr/local/bin以前,不然系統的vim會代替自行編譯安裝的vim)。
###vim配置 這裏vim的配置我主要是使用了spf13的配置,免得本身各類麻煩去配置了。

sh <(curl https://j.mp/spf13-vim3 -L)

而後它會一路安裝下去,包括一些插件的安裝,只是耗時較長,我是大概用了15分鐘才安裝好的(不得不吐槽網速跟某牆的重要性)。
spf13我惟一不滿意的是它竟然默認不換行的(代碼要是很長就悲劇了)。我是用github的配色方案的,在.vimrc.local裏輸入:

colo github

我還在.vimrc.bundles.before裏設置了一下g:spf13_bundle_groups,由於我並不須要全部的插件,主要是去掉了一些我用不到的語言插件。
###.zshrc的配置

export ZSH=$HOME/.oh-my-zsh

ZSH_THEME="agnoster-phm"

plugins=(pip git wd tmux python django per-directory-history gitignore)

source $ZSH/oh-my-zsh.sh

# ssh
export SSH_KEY_PATH="~/.ssh/id_rsa_github:~/.ssh/id_rsa_heroku"

# My Own Libs
export PATH=$HOME/devlibs/vim/bin:$PATH

export http_proxy=http://218.108.170.164:80

其中zsh的插件裏我選取了一些可能用到的程序以及工具。per-directory-history就是把每個目錄裏的執行過的命令記錄下來,這樣方便歷史命令的查找。http_proxy是指http代理,我用的是杭州華數的代理,目前是免費的,並且速度至關不錯。 ###django的配置 我喜歡前沿一點的東西,因而對於django我就去學最新的dev版了。首先是克隆django的版本庫:

git clone https://github.com/django/django.git

而後安裝之:

pip3 install -e django/ --user

以後就參考django的官方文檔開始學習了。

相關文章
相關標籤/搜索