利用heroku搭建ruby网站项目
2015-04-24 13:26
176 查看
1.前言
首先说明,这篇文章肯定有不完整的地方,如果遇到错误,还需结合其他搭建成功的博客思考解决问题。如果有git,ruby知识会好很多,如果懂了heroku的运行原理更好。2.大体分析
(里面的分析,是我配置时所想,不一定准确)Heroku:可以看作一个服务器,能够自动帮你配置程序,网站,支持ruby,php,nodejs等。官方提供了ruby的配置说明。如果使用你需要先注册,最好使用gmail账号。
与git的关系:git是一个版本管理工具,但是必须安装Heroku的Heroku Toolbelt,它里面自带了git,与heroku建立了某种关系,使得git push heroku可以直接把项目发到远程的heroku服务器的某个你建立项目的地方。(我很奇怪,git是怎么知道我的heroku项目的名字的,因为heroku可以建立多个项目)。
git发送项目的要求:git发送的东西必须能够让heroku知道这是个什么项目,如何安装,运行等。 当然有些可以通过 heroku run “your commond” 命令自行配置。
思路整理:heroku先创建项目,给你留个位置,git发送你的项目到那个地方,heroku根据配置文件,自动判断帮你运行。
3.关于发布ruby的简单说明
以网站为例。首先写好程序(ROR,sinatra等网站都行【不过数据库我至今还没很好的使用】),然后写好Gemfile(可以让人知道你的项目需要安装那些gem,这样heroku就会自动帮你安装),用rack测试一下,成功后基本上可以push了。但是有时候本地可以,而进入Heroku就不行。4.具体的例子
这是一个简单sinatra的例子,参照一个网址初识Sinatra系列可以制作一个较为复杂的网站(最后也告你怎么发布到heroku,但是我就是数据库那里不行) 。建立文件夹 helloworld,cmd进入到这个目录,然后依次执行以下命令,#为我的说明
($ cd helloworld ***一定要在这个目录下面)
$ heroku create myhelloworld
#这个为了告诉大家项目名称和目录没有关系,如果不提供heroku会帮你生成一个。最后访问的网址为 http://myhelloworld.herokuapp.com
#当然这个有时需要你登录, heroku login 然后输入注册的邮箱,以及 heroku上的密码
#有时可能还要提示你生成公钥,如下
#ssh-keygen -t rsa #生成
#heroku keys:add #加入
#heroku keys #查看
#具体其他名字自行查阅
写一个简单的.rb文件命名为main,如下 #随意起,注意和后面统一
require 'sinatra' require 'slim' #$ gem install sinatra-contrib 这是下面那个require的gem名,要在gemfile中写好 #require 'sinatra/reloader' #下面这个负责检测修改并重启。 #configure :development do # register Sinatra::Reloader # set :server, "webrick" #end get '/' do "hello world" end
创建一个config.ru
require 'bundler' Bundler.require require './main' # your ruby file run Sinatra::Application写好Gemfile,写什么到时候帮你装什么
source 'http://rubygems.org' #source :rubygems ruby "2.1.5" gem "sinatra" gem "sinatra-contrib" gem "slim"
$ bundle install # 前提要 装好bundle 。它 帮你生成 Gemfile.lock。 如果改动了 gemfile 要删掉lock文件重新 bundle,好像也可以bundle update
$ rackup
#写好config.ru 然后运行 rackup检测一下你的网站,这里成功在heroku上才可能成功,网址为 http://localhost:9292/
可以写个 .gitignore 文件,里面写上你不想上传的文件
然后开始git,懂git命令可以轻易坚决遇到的疑惑和困难。
$ git init
$ heroku git:remote -a yourappname # 应该是指定将这个项目存储到heroku哪个仓库下。
$ git add . #注意有 点号
$ git commit -am "initial delployment"
#当然之后做了任意修改,删除,新增等,就需要自行用类似的git命令解决,因为heroku就是基于git的,这里完全和heroku无关,只用考虑git的使用。
$ git push -f heroku master #至于加不加 -f 这也是git的规则。 我是因为之前遇到了问题加了 -f 成功解决了。
这样就可以访问你的网战了 http://myhelloworld.herokuapp.com ,如果你不知道就运行如下命令,自动帮你打开浏览器及网页
$ heroku open
但是如果这里出现了application error,而你自己觉也没用什么高端的配置,还有一个命令要运行
$ heroku ps:scale web=1 #
这是解决了我问题的命令
如果需要另外的配置就运行
heroku run irb #这个就相当于登录heroku服务器你的项目的irb终端
#heroku run “【command】” 比如 bash等都可以运行,或是一个命令语句也行
有时可以这样加一些配置
$ heroku config:add key=value --app chjlx # ***
看好最后怎样指定你的app的
如果要取回git上的资源,比如有文件下载等,则运行类似的git命令 git clone git@heroku.com:chjlx.git
5.遇到的问题及解决办法
Unable to connect to Heroku API, please check internet connectivity and try again.这个错误可能是因为链接不稳定造成,所以重新运行几次命令即可。
Unable to activate sinatra-contrib-1.4.2, because tilt-2.0.1 conflicts with
tilt (~> 1.3)
http://qiita.com/histori/items/33c8b8e007854173b3b3 这个网站有详细说明,我是通过gem uninstall tilt 删掉了 2.0.1版本可以的
关于使用sqlite的错误,gemfile中大概写成如下
group :development, :test do gem 'sqlite3', :platform => :ruby end group :production do gem 'thin' gem 'pg' end
6. 附加说明
下面有一些可能用到的git命令:git remote rm heroku
git remote add heroku git@heroku.com:yourappname.git
增加文件的git命令
git add .
git add --update .
git commit -am "add User.java"
git clone git://github.com/cloudhead/dorothy.git mytoto
关于gemfile
第一行的 source 很重要,现在国内封锁的紧,可以使用 https://ruby.taobao.org/ 。这样bundle的时候就可以自己帮你下载缺少的东西。
第二行的ruby版本指定也是很必要的,因为bundle是在你本地的电脑上运行的,应该会记录一些信息,以便于后面heroku安装。
一般运行时推荐 bundle exec ruby ... 这样他会尽可能根据GemFile指定的版本来运行,而不会选择其他版本,减少出错的可能。
7. 一个sinatra的模板
require 'sinatra' require 'sinatra/reloader' require 'erb' # gem install sinatra-reloader configure :development do register Sinatra::Reloader set :server, "webrick" end set :public_folder,File.dirname(__FILE__)+"/playground" set :views, File.dirname(__FILE__)+"/playground" get '/' do call env.merge("PATH_INFO" => '/tf') end get '/tf' do erb :index end
再来一个更加方便的运行静态网站的模板
也就是localhost:4567 然后就会出现选择列表,进去你想要的网站
# -*- coding:utf-8 -* dir=File.expand_path("..",__FILE__); Dir.chdir(dir) require 'sinatra' require 'sinatra/reloader' require 'erb' # gem install sinatra-reloader configure :development do register Sinatra::Reloader set :server, "webrick" end usedir="/clmtrackr-dev/examples/" set :public_folder,"E:/RmDownloads/RPGMV/NewData/" set :views, "E:/RmDownloads/RPGMV/NewData/" #set :public_folder,File.dirname(__FILE__)+usedir #set :views, File.dirname(__FILE__)+usedir links=["tf","clm","rpgvm"] get '/' do # call env.merge("PATH_INFO" => '/tf') html="<ol>" links.each do|e| html+="<li><a href='/#{e}'>#{e}</a></li>" end html+="</ol>" erb html end get '/rpgvm' do erb :index end get '/tf' do erb :index end get '/clm' do #erb "examples/example".to_sym erb :example end
相关文章推荐
- 利用GitHub搭建个人网站
- 使用Eclipse搭建Maven项目(最近做个人网站,顺便记下来以防后面的项目要用)
- j2ee 简单网站搭建:(一) windows 操作系统下使用 eclipse 建立 maven web 项目
- 利用 Apache 服务器搭建 Python 网站 (一)
- Python实战项目之博客网站搭建
- SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一个前后端web网站(5)
- 使用nodejs,express,mysql,Bootstrap开发采购招标网站(一)项目搭建
- 利用Hexo+GitHub Page搭建一个个人博客网站
- DIOCP开源项目-利用队列+0MQ+多进程逻辑处理,搭建稳定,高效,分布式的服务端
- 【模拟开发环境】用JavaWeb项目搭建自己的网站
- 用confluence完成室项目管理网站的初步搭建
- php 利用dede搭建一个模板网站
- 利用CODING.NET免费部署搭建ZBLOG PHP网站
- 公司网站,邮件,服务器搭建项目练习
- 利用maven及nexus简单搭建Struts2项目小结
- 使用nginx搭建前端项目web服务器以及利用反向代理调试远程后台接口
- 利用maven工具在eclipse上对项目进行搭建和管理
- SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一个前后端web网站(1)
- 从框架到完整项目搭建,实战项目《约个球》(6)- 利用SlidingMenu和Fragment构建我们的项目结构
- 如何利用WAMP在51IDC的云主机上搭建PHP小型网站