今天正式把sample做到ubuntu server上,有一些细节点不太一样
1.运行 rake db:create的时候报错
rake aborted!
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
我直接试着装gem install execjs 但是发现装了也没解决问题
最后的解决方法是
step1:用vim打开Gemfile文件 追加一行 gem 'therubyracer' 保存退出
step2:重新运行一遍 bundle install
顺利解决~
(问题的原因是rails3.1开始默认使用jQuery, CoffeeScript,如果没有的话就报错了)
2.运行 ruby script/generate controller home index的时候报错
ruby: No such file or directory -- script/generate (LoadError)
其实是因为普通用ruby的话运行脚本是用ruby xxx.rb。这句命令其实是执行script下的generate
但是这里看一下script下的内容,发现其实只有一个rails
最后把命令改成rails g controller home index 就顺利通过了
3.让app在网页上显示
这一块折腾了不少时间。。。
①首先安装passanger(在ubuntu上用apache显示ruby app时需要的包)
$ gem install passenger
$ passenger-install-apache2-module
装好以后部署passenger给apache2(这样在apache2重启的时候就可以启动ruby app):
/etc/apache2/mods-available/passenger.load 生成新文件
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
/etc/apache2/mods-available/passenger.conf
NameVirtualHost *:80
ServerName www.yoursite
DocumentRoot /var/www/yoursite/yourapp/public
<Directory /var/www/yoursite/yourapp/pubulic>
AllowOverride all
Order allow,deny
Allow from all
Options -MultiViews
</Directory>
RailsBaseURI /yourapp
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11
PassengerRuby /usr/bin/ruby1.8
RailsEnv development
文件名叫什么没什么限制,apache2会自动遍历这个文件夹下的load文件和conf文件的
②设置网页指向
cd /etc/apache2/sites-available/yoursite
vim yoursite
编辑内容:
<VirtualHost *:80>
ServerName yoursite
DocumentRoot /var/www/yoursite/yourapp/public
</VirtualHost>
一定要指向到你的app下面的public文件夹
③最后让模块和你的网站有效重启apache:
首先是你设置的conf/load模块-这里是passenger,然后是你的网站,最后重启apache2
$ sudo a2enmod passenger
$ sudo a2ensite yoursite
$ sudo /etc/init.d/apache2 restart