此文写于2017.8.21
在写本文前,笔者已经尝试了多种其余的替代方法,例如wmware虚拟机安装kylin。然而发现老是还有各类问题。经大佬指点安装了virtualbox + vagrant。因而发现配置起来如此简单。接下来笔者将详细阐述。
(注:笔者本身的服务器上的配置是centos7.2 + ruby2.3.4 + mariadb + redis,本身的笔记本为win10,另外,不少网上的相似文章都写于很长时间之前,不少内容如今已经不适用,甚至不少关键的环节还不讲清楚,致使笔者配置初期踩了不少的坑。因此写下此文,总结经验)html
本文中,笔者因为网站服务器系统为centos7.2,因此理所应当的选择了centos的镜像。(镜像官网,支持搜索配置:https://app.vagrantup.com/boxes/search。 关于vagrant,此文中再也不赘述,网上关于vagrant+virtualbox的资料不少,基本配置也很是简单省事)。
起初,笔者随意下载了一个下载量高的centos,结果发现内部配置有不少的问题,主要问题是不少软件的版本过于老旧且更新很麻烦,须要手动解决不少的依赖(有的甚至还解决不了,因而果断弃坑)。后来换了一个官方镜像,因而有了很大的改观。(安利一下我用的镜像:https://app.vagrantup.com/centos/boxes/7)mysql
做为开发机,git是必不可少的,然而一开始也被git坑了好长时间。
首先直接命令安装git
yum install git
安装时务必注意版本,版本最好不要低于1.8(以前另外一个系统git1.7,不少网站上的repo没法正常访问)
接下来就是配置git的一些全局设置redis
git config --global user.name "HansBug" git config --global user.email xxx@xxx.com git config credential.helper 'cache --timeout=7200'
三条设置依次为用户名,用户邮箱和记住密码(本人较懒,不想配置ssh)有效时间(单位秒,例子中为2小时)sql
做为rails环境的搭建,rvm是很重要的一环。
首先安装rvm(若是本机没有curl或者出现其余依赖问题请先解决)数据库
curl -L get.rvm.io | bash -s stable
安装完后若是看到以下的提示的话centos
* 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
则按照他说的作就行了。安全
安装完毕后有一个很重要的操做——将原镜像地址换掉。原镜像地址因为某些神秘的缘由(你懂得),接下来ruby下载速度奇慢,并且还不稳定。
因而果断执行命令ruby
echo "ruby_url=https://cache.ruby-china.org/pub/ruby" > ~/.rvm/user/db
rvm配置完毕以后,下一步就是安装ruby(我使用的是2.3.4版本)bash
rvm install 2.3.4
而后安装完以后设置为默认版本
rvm use 2.3.4 --default
通常来讲,ruby安装完以后,gem也就有了。可是由于一些神秘的缘由(你懂得),gem本来的source经常下载速度极慢。
首先看一下现有的gem source
gem source -l
反馈是
*** CURRENT SOURCES *** https://rubygems.org/
这个是rubygem原有的镜像,在大陆访问速度比较慢。咱们能够换上ruby-china提供的镜像。操做以下:
gem source -r https://rubygems.org/ gem source -a https://gems.ruby-china.org/
依次是删除原有镜像地址和建立新镜像地址。到此,gem配置完毕
若是以前都配置妥善了的话,这一步其实很简单
首先(中间可能会出现部分依赖性问题,能够经过baidu和google自行解决,通常都能找到相关资料)
gem install rails
确认安装完毕后,运行
gem install bundler
其实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地址)
git init git remote add origin *****************.git
而后
git pull origin master
将项目安置好,而后接下来就是rails项目的通常性流程了(特别提醒:在此以前请把指定的database建立好,rails db:migrate没有建立database的能力)
bundle install rails db:migrate rails db:seed
(注:若在bundle install的过程当中遇到相关依赖性问题的话,能够首先查看错误说明,不少错误说明中已经告诉了你如何操做,须要安装什么包。若是没能解决的话请百度或google)
最后一步,
rails server -b 0.0.0.0
启动rails服务器,而后咱们就能够直接经过3000端口访问本机的网站啦!大功告成
我这边以前出现过一个问题,将配置文件(Vagrantfile)里面的这行注释去掉
config.vm.synced_folder "data", "/vagrant_data"
启用文件夹共享时,出现了错误
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'
这个问题解决方案已经知道(感谢博客:http://blog.csdn.net/demon3182/article/details/51436032)。其实很简单,就是缺一个插件,装上就ok
vagrant plugin install vagrant-vbguest
而后reload,问题解决。
这种状况是因为centos7自己带的软件包并很少。因此咱们须要安装EPEL(感谢百度经验:http://jingyan.baidu.com/article/9158e0003a3eaca25412280c.html)
操做以下:
yum -y install epel-release yum repolist
依次是安装epel和刷新软件包列表。咱们能够看到,软件包数量增长了不少。
其实这一步也很简单,将Vagrantfile里面的这一行注释去掉便可(同时也请保证局域网内ip地址没有冲突,若有冲突,请更换一个ip。另,如果冲突的话,通常在vagrant up & reload的过程当中会报错)
config.vm.network "private_network", ip: "192.168.33.10"
而后网站就能够经过192.168.33.10:3000访问,数据库能够用192.168.33.10连接,甚至也能够用putty经过192.168.33.10的ip地址连接,就像链接你的服务器同样。