在heroku上部署spree电商平台完整过程

1.软件依赖

  • rvm-1.18.2
  • ruby-1.9.3
  • rails-2.3.11
  • postgresql-9.1
  • ubuntu-12.10
  • heroku-toolbelt

2.搭建本地RUBY ON RAILS环境

2.1安装RVM

我的开发环境是一台64位UBUNTU-12.10,选择用RVM管理RUBY版本。
运行下面的命令,安装RVM:

hao@ubuntu:~$ sudo apt-get install curl
hao@ubuntu:~$ curl -L https://get.rvm.io | bash -s stable --ruby

然后查看RVM的依赖包,并根据提示安装:

hao@ubuntu:~$ rvm requirements

....
# For ruby:
sudo apt-get --no-install-recommends install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev libgdbm-dev ncurses-dev automake libtool bison subversion pkg-config libffi-dev
...

2.2安装RUBY/RAILS

安装ruby、新建gemset(@spree),并把rails安装到@spree:

hao@ubuntu:~$ rvm install ruby
hao@ubuntu:~$ rvm gemset create spree
hao@ubuntu:~$ rvm use @spree
hao@ubuntu:~$ gem install rails bundler

3.安装POSTGRESQL数据库

HEROKU有免费的POSTGRESQL数据库,建议研发环境和生产环境保持一致。必须要安装libpq-dev,这样ruby的pg插件才能编译。

hao@ubuntu:~$ sudo apt-get install postgresql libpq-dev

安装完启动数据库,并根据需要配置好用户:

hao@ubuntu:~$ sudo /etc/init.d/postgresql restart
 * Restarting PostgreSQL 9.1 database server                             [ OK ]

4.新建一个spree工程

4.1新建一个rails工程

新建一个rails工程,使用POSTGRESQL数据库:

hao@ubuntu:~$ rvm use @spree | rails new mystore -d postgresql

注意做下面几个修改:

  • 修改Gemfile,添加上“gem ‘therubyracer’, :platforms => :ruby”(把原来的注释移除)
  • 修改conf/database.yml

4.2安装spree

安装spree,注意“spree install”必须在rails工程目录下运行:

hao@ubuntu:~$ gem install spree
hao@ubuntu:~$ cd mystore
hao@ubuntu:~/mystore$ spree install

安装过程中遇到问题的解决办法:

  • 安装过程中提示你添加devise-encryptable到Gemfile,注意要放到Gemfile的末尾
  • 安装rmagick时提示编译不成功,先执行“sudo apt-get install imagemagick libmagickwand-dev”。

安装完后,先在本地启动服务,体验下:

hao@ubuntu:~/mystore$ rails s
=> Booting WEBrick
=> Rails 3.2.11 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server

5.把工程部署到HEROKU

5.1注册账号并部署sample工程

参见HEROKU官方快速入门
如果需要生成RSA证书,可以使用:

hao@ubuntu:~$ ssh-keygen -t rsa

如果使用apt安装heroku toolbelt时需要使用代理,可以修改/etc/apt/apt.conf

Acquire::http::proxy "http://ip:port/";
Acquire::ftp::proxy "ftp://ip:port/";
Acquire::https::proxy "https://ip:port/";
Acquire::socks::proxy "socks://ip:port/";

5.2把mystore发布到HEROKU

在mystroe工程目录下执行下面的命令:

hao@ubuntu:~/mystore$ git init | git add . | git commit -m 'init'
hao@ubuntu:~/mystore$ heroku create
Creating severe-mountain-793... done, stack is cedar
http://severe-mountain-793.herokuapp.com/ | git@heroku.com:severe-mountain-793.git
Git remote heroku added
hao@ubuntu:~/mystore$ git push heroku master

上面的操作完成后,访问HEROKU提供的URL,显示的是错误页面,这是因为HEROKU运行rake assets:precompile失败:

could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port xxxx?

这是因为spree工程运行”rake assets:precompile”时需要访问数据库,而HEROKU在做预处理时,没有数据库环境,所以我们可以部署之后再运行assets:precompile,如下:

hao@ubuntu:~/mystore$ heroku run env RAILS_ENV=production DATABASE_URL=postgres://xxxx:xxxxx@xxxx.amazonaws.com:5432/xxxx rake assets:precompile 2>&1

需要解释的就是DATABASE_URL后面的数据库连接串需要从HEROKU控制台去查看。

6.验证

登陆HEROKU控制台,找到我们的APP连接,访问。

参考链接:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.