5

我希望我的 Rails 服务器在每次重新启动后自动启动,所以我将以下内容添加到我的 .bashrc 文件中

rvm use 1.9.2
cd /home/user/myapp
rails server

这样,服务器在重新启动后永远不会自动启动,我必须手动启动它。

另外,当我登录启动服务器时,我看到以下消息

Using /usr/local/rvm/gems/ruby-1.9.2-p290
/usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby: symbol lookup error: /usr/local/rvm/gems/ruby-1.9.2-p290/gems/sqlite3-1.3.4/lib/sqlite3/sqlite3_native.so: undefined symbol: sqlite3_initialize

因此,在我成为超级用户之后,我需要在每次重新启动后使用“gem install sqlite3”安装 sqlite3,然后我才能毫无问题地启动 rails 服务器。

$ cat /etc/*-release
CentOS release 5.8 (Final)

$ rails -v
Rails 3.1.1

$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]

任何人都可以帮我解决这个问题吗?谢谢

4

1 回答 1

1

安装 Apache 和Passenger

他们会以一种更安全、更系统的方式以及现在或多或少的标准来处理使用服务器启动您的应用程序。

我在 CentOS 6 上使用 Rails 4 和 Ruby 2.1 时遇到了同样的问题。如果您不熟悉 bash 脚本和 rc、profiles 系统 - 设置起来更快更容易passenger

此外,您选择乘客还有其他原因,包括安全性性能(www.phusionpassenger.com)

这是我介绍宝石的快速方法。

  1. 安装 Apache(html 守护进程)和依赖包(如果你还没有的话):

    百胜安装 httpd curl-devel httpd-devel

  2. 让 Apache 在启动时启动:

    chkconfig httpd on

  3. 安装 Phusion 乘客和依赖包:

    gem install 乘客
    yum install curl-devel httpd-devel

  4. 编译环境:

    乘客安装 apache2 模块

  5. 在 etc/httpd/conf/httpd.conf 中编辑 Apache 配置文件

    • 取消注释包含NameVirtualHost *:80接近结尾的行

    • 将第 4) 点的输出粘贴到文件末尾的任意位置,例如:

    LoadModule 乘客模块 /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/buildout/apache2/mod_passenger.so

    乘客根 /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41

    PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.1.1/wrappers/ruby

    <VirtualHost *:80>
     ServerName 1.2.3.4 # www.whatever.com
     DocumentRoot /var/www/rails/public # the path to your rails app
     <Directory /var/www/rails/public>
     AllowOverride all
     Options -MultiViews
     </Directory>
    </VirtualHost>
    

我总共花了 30 分钟,包括几次尝试使用 httpd.conf 的错误,以使一切正常。

请注意,安装需要您的机器上至少有 1 GB RAM。

于 2014-04-14T09:50:42.997 回答