Rails 个人开发记录

chancedoor · 2013年05月16日 · 最后由 edgar_wang_cn 回复于 2013年05月17日 · 4240 次阅读

2013 年 3 月接触的 Rails,觉得非常幸运能接触到 ROR,这 2 个月学到的东西和对 IT 行业看法的改变,让我对计算机科学及其发展有了全新的认识和感观。 同时也觉得自己落后别人太多了,本身又是记性很差,不适合光靠看书来学习的人,所以想开个博客,边实践边记录边学习。但是我发现还是 RubyChina 更吸引我……而且这里改起来也很方便,改了内容帖子也不会上浮,这样不会打扰大家,而且更让我诧异的是,不论是回帖还是发帖,内容居然是会保留的!我离开了这个页面,去别的帖子跟个帖,再回来还可以继续写!我就喜欢这种酷毙又低调,在不经意间提供方便的设定!

1.开发环境的选择

  • 本人是穷屌丝,只有一台很烂的笔记本,WindowsXP;
  • 首先选择虚拟机软件——Oracle VirtualBox,因为是免费的(至少目前是);
  • 然后选择服务器系统——Debian,因为工作用的是这个,Ubuntu 就是他的衍生版喔,下载更新软件用 apt-get 很方便;
  • 文本编辑器——VIM,因为习惯用 vi;

先作好这些最基本的选择,然后就可以进入实践啦!

2.安装基本环境

  • 新建虚拟机,选择下载好的 Debian 镜像(写这个的时候 Debian7 刚出,果断装之),最好不要装图形界面,安装过程会非常慢,内存 512MB,硬盘 8G,分区全部默认....root 和另一个用户名都认真设置密码,安装完成后用普通用户登陆,然后 su,安装 vim、sudo。
  • 配置 sudo:sudo 这个软件真的值得研究,因为在多人使用同一系统的情况下管理用户非常方便,但我目前只是一个人(-_-莫名的忧桑感)。所以简单配置下就好——打开/etc/sudoers 可以看到注释说: Please consider adding local content in /etc/sudoers.d/ instead of directly modifying this file. 那么

    ~$ vi /etc/sudoers.d/cduo #新建一个文件,名称可以是这个文件所设置的用户的名字,我是cduo
    ~$ cduo ALL=(ALL) ALL #输入内容,按顺序是:指定用户 来自=(可获得什么身份) 可执行什么命令
    ~$ chmod 400 cduo #更改文件权限
    

    这样就可以用 cduo 的登录密码进行 sudo 操作了,更多包括群组管理等可以参考 http://hi.baidu.com/danghj/item/ec645a0992104ce0ff240d8f

    • 为了让虚拟机可以与主机通信,同时可以上网,把连接方式设置为 NAT,端口转发新增一条规则,然后下个 putty,输入主机 ip 和转发的端口,远程连接到虚拟机上。用远程连接的方式去操作不仅速度快,而且稳定安全,复制粘贴滚屏也方便。
    • 进入 RubyChina 的 Wiki 第一条,从步骤 0 一路复制粘贴即可。 ~$ sed -i .bak 's!ftp.ruby-lang.org/pub/ruby!ruby.taobao.org/mirrors/ruby!' $rvm_path/config/db 这步似乎不行,我是手动备份,把 .bak 去掉的
    • 好了,这样一台具有基本开发功能的虚拟机就完成了,新手学习的话可以直接下载我的虚拟机,系统登录名:cduo 密码:111222 用户目录下的 README 中有 root 密码

http://pan.baidu.com/share/link?shareid=524120&uk=1647788315

3.安装部署环境

  • 选择 passenger+Nginx bash ~$ gem install passenger ~$ passenger-install-nginx-module 这里我用/home/cduo/opt/nginx 替换了默认路径。 按照提示选择自动配置,安装完后~$sudo opt/nginx/sbin/nginx运行 nginx 因为默认是 80 端口,所以虚拟机的端口转发要加一条指向 80 端口的(比如 3080),建议再加一条指向 3000 的。 在浏览器输入主机 IP:3080 就会看到 Nginx 的欢迎界面啦

4.安装数据库、新建 Rails 应用、配置 Git 并配置 Nginx

  • 数据库选择 Mongoid,因为我选择 RailsApp 里的 Device,Mongoid 这个例子来实作。
  • ~$sudo apt-get install mongod
  • 个人开发其实 Git 用 http 就可以了,不过为了省去输帐密的麻烦,还是用 ssh 吧.GitHub help 里有步骤。
  • 然后 clone repo,并且在自己的 github 上新建一个 repo: bash ~$ git remote add origin [email protected]:account/reponame.git ~$ git push -u origin master
  • 给 repo 建立一个 develop 分支: bash ~$ git branch develop ~$ git checkout develop ~$ git commit -m "Created develop branch." ~$ git push origin develop
  • 起了 Rails3 Mongoid Devise 看了下 真是很适合用来二次开发啊 不错
  • 接下来配置 nginx.conf,把 server 块的 root 行改为/home/cduo/edu/public,下面加一行:passenger_enabled on;然后 nginx -s reload 就可以访问了。默认是 production 模式,需要先 rake assets:precompile,在配置中加rails_env development;就可以开发模式启动了。
  • passenger 报错找不到 gem 的话 bundle --deployment

5.部署到阿里云

  • 阿里的关系型数据库目前只有 mysql 和 mssql,所以为了以后方便,还是选择用 mysql 了。
  • 记得先跟着教学视频把 swap 建了,当然也可以自己手动
  • 因为不再是免费的了,就要开始考虑静态文件放哪,cache 怎么做之类的了。

6.开发 - 一个主要用于移动平台的应用

  • 前端:首页直接完全用 bootstrap 的静态页面
  • 用户系统:devise
  • 后台管理:active_admin
  • 图片上传:carrierwave

楼主加油

机器要老的话,不如直接 linux+win 双系统吧

#2 楼 @jasl 以前装过双系统 各种不稳定 我是想等攒钱买个台式 把资料什么的都转移 然后笔记本装 linux 专门搞开发 台式做多媒体的 现在这笔记本做图什么的已经吃不消了

#3 楼 @ChanceDoor 唔,源生开发的话最好用 fedora 啊 ubuntu 啥的,主要是内核版本高,驱动会比较新 debian 或者 centos 跑在虚拟机里不错,省资源,另外你可以看眼 vagrant,神器哦~

#4 楼 @jasl 额 不知道理解的对不对 所以这个 vagrant 我如果用的话就相当于快速部署一个 xp 上的 Virtual Box 里的 Debian 上的 Virtual Box 上的虚拟系统?但是直接 linux 系统的话就非常方便吧

#5 楼 @ChanceDoor 对啊,而且你可以在 cmd 里直接操纵虚拟机,当然,ssh 上去操作也是完全可以的 rails 还有很多开源项目的开发沙箱就是基于 vagrant 的 另外呢,vmware player 也是免费的,vmware 的虚拟机性能上完爆 vbox 嗯...vargrant 说支持 vmware 不过不清楚支持 vmware player 不

#6 楼 @jasl 明白 等换了机器就用用看 我上面的过程中 要是有什么东西是可以用更新潮的技术代替的 可以尽情鄙视 鄙视完了记得指点一下 我非常乐于果断抛弃旧爱拥抱新欢!(限于知识技术)

#7 楼 @ChanceDoor 用的舒服就行...咱是妥妥的 ide 党 - - 完全无视各路鄙视

小声说句 @hooopo 这货干活不写测试,还用老掉牙的 netbeans

要说 linux 使用 鸟哥的 linux 私房菜 此书系统 推荐... 第二本服务器搭建篇没啥必要,内容比较陈旧了

#11 楼 @jasl 嗯 实体书还是作为查阅手册比较好 技术更新太快了

前几天刚好也装了 Debian 7.0 用来测试。印象中当时手懒就没给 root 账户设密码,然后安装程序很亲切自动地把我的帐号加到 sudoers 文件里。

#13 楼 @5long 哈?会这样吗?root 的话是都会有的

Ubuntu 是 Debian 的分支喔

#11 楼 @jasl 要说内核版本不如用 arch

#15 楼 @geekontheway 汗 还真是...同事坑我

加油吧。

#6 楼 @jasl 对于 VMware 的支持是收费的功能吧

是学生的话可以多折腾。如果工作了的话完全没考虑时间成本,很多事情时间都浪费在低性能带来的时间损耗上

#20 楼 @yedingding 工作之外 有自己的想法要做 时间是没办法的事 我用我的笔记本做图 光是变换的处理时间都要浪费半个小时 但目前对我来说 直接去做是最有效的 其实本来是想在公司搭好虚拟机,把比较耗时的下载安装都在公司完成,然后拷贝虚拟机文件回去的,不过其实也差不太多 工作方面也算是遇到个小瓶颈吧,系统乱得不行,性能也有很大问题,我不得不快速学习代码之外的东西,所以直接实践最好了(公司的系统可不敢直接试)。

#3 楼 @ChanceDoor

以前装过双系统 各种不稳定 我是想等攒钱买个台式 把资料什么的都转移 然后笔记本装 linux 专门搞开发 台式做多媒体的

双系统怎么会不稳定呢

#22 楼 @iBachue 可能他觉得是人不稳定,一会换到这边,一会换到那边。。。哈哈~

#22 楼 @iBachue 装的 Ubuntu 图形界面 反正后来就崩了 也可能是那个时候我瞎捣鼓了一大堆 导致文件系统出问题了

#24 楼 @ChanceDoor ubuntu 桌面单系统也会崩。。

#25 楼 @jjym @ChanceDoor ubuntu 的话可以用 cinnamon 或者 mate 桌面,要不直接用 linux mint,基于 ubuntu 的,ui 类似 win 的,unity 不稳定

#20 楼 @yedingding 赞同,我宁可电脑等我,不可我等电脑。

#30 楼 @wppurking 那渲染视频不是更难熬 都是放着好几个小时不敢动

#16 楼 @zgm Arch 各种崩坏。。。

#31 楼 @ChanceDoor 所以我投身程序员行业了 所以我抛弃了 Scala :P

#34 楼 @zgm - -。有时候激进过度了。。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号