前言
近期将RoR部署到服务器上,各种纠结各种累,方案如下:
Raspbian wheezy + Apache + Ruby on Rails + MySQL
Raspbian pi, rvm, ruby的安装
略……
碰到一个这样的问题,
rvmsudo
的问题,是因为rvm
安装的原因造成的,具体如下:切换到appuser
后,找不到rvm
。以前的安装方法,参照官方文档 https://rvm.io
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 curl -sSL https://get.rvm.io | bash -s stable
而多用户则使用如下命令:
curl -sSL https://get.rvm.io | sudo bash -s stable
另外,ruby的安装也很纠结,
rvm install ruby
后没有现成的编译好的,只能重新编译,这个过程要大概一个半小时。
Passenger 的安装
第一步,使用apt-get安装passenger模块
# Install our PGP key and add HTTPS support for APT
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates
# Add our APT repository
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger wheezy main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update
# Install Passenger + Apache module
sudo apt-get install -y libapache2-mod-passenger
安装提示如下:
pi@raspberrypi:/var/www/firmware/code/vendor/bundle/ruby/2.2.0/bin$ sudo apt-get install -y libapache2-mod-passenger
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libruby1.8 ruby-passenger ruby-rack ruby1.8 ruby1.8-dev rubygems
Suggested packages:
rails ruby-passenger-doc ruby1.8-examples ri1.8 ruby-switch
The following NEW packages will be installed:
libapache2-mod-passenger libruby1.8 ruby-passenger ruby-rack ruby1.8
ruby1.8-dev rubygems
0 upgraded, 7 newly installed, 0 to remove and 2 not upgraded.
Need to get 0 B/5,460 kB of archives.
After this operation, 17.9 MB of additional disk space will be used.
Selecting previously unselected package libruby1.8.
(Reading database ... 84592 files and directories currently installed.)
Unpacking libruby1.8 (from .../libruby1.8_1.8.7.358-7.1+deb7u3_armhf.deb) ...
Selecting previously unselected package ruby1.8.
Unpacking ruby1.8 (from .../ruby1.8_1.8.7.358-7.1+deb7u3_armhf.deb) ...
Selecting previously unselected package rubygems.
Unpacking rubygems (from .../rubygems_1.8.24-1_all.deb) ...
Selecting previously unselected package ruby-rack.
Unpacking ruby-rack (from .../ruby-rack_1.4.1-2.1+deb7u1_all.deb) ...
Selecting previously unselected package ruby-passenger.
Unpacking ruby-passenger (from .../ruby-passenger_3.0.13debian-1+deb7u2_armhf.deb) ...
Selecting previously unselected package libapache2-mod-passenger.
Unpacking libapache2-mod-passenger (from .../libapache2-mod-passenger_3.0.13debian-1+deb7u2_armhf.deb) ...
Selecting previously unselected package ruby1.8-dev.
Unpacking ruby1.8-dev (from .../ruby1.8-dev_1.8.7.358-7.1+deb7u3_armhf.deb) ...
Processing triggers for man-db ...
Processing triggers for menu ...
Setting up libruby1.8 (1.8.7.358-7.1+deb7u3) ...
Setting up ruby1.8 (1.8.7.358-7.1+deb7u3) ...
Setting up rubygems (1.8.24-1) ...
Setting up ruby-rack (1.4.1-2.1+deb7u1) ...
Setting up ruby-passenger (3.0.13debian-1+deb7u2) ...
Setting up libapache2-mod-passenger (3.0.13debian-1+deb7u2) ...
Setting up ruby1.8-dev (1.8.7.358-7.1+deb7u3) ...
Processing triggers for menu ...
第二步,启动 passenger apache 模块
sudo a2enmod passenger
sudo apache2ctl restart
第三步,安装检查
sudo passenger-config validate-install
sudo passenger-memory-stats
问题来了:passenger apache模块安装完成后,一直没有passenger-config,没办法检查passenger-apache模块是否安装完整。
使用命令
sudo find / -name passenger-config
查找 passenger-config 是否存在,只有在项目的目录.bundle/…..中找到。一直怀疑是不是 apt-get 包对 raspberry pi 的兼容,使用下面命令后,从第一步重新开始一次依然如此。
sudo apt-get update sudo apt-get upgrade
直到把后面的步骤做完了也是运行失败,查了/var/log/apache2/error.log的日志如下:
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernnel_require.rb:128:in ‘require’: cannot load such file -- /phusion_passenger/consstants (LoadError) from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in ‘rescue in require’ from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems//core_ext/kernel_require.rb:39:in ‘require’ from /usr/local/rvm/gems/ruby-2.2.1/gems/passenger-5.0.23/src/ruby_suppoortlib/phusion_passenger.rb:235:in ‘require_passenger_lib’ from /usr/local/rvm/gems/ruby-2.2.1/gems/passenger-5.0.23/src/ruby_suppoortlib/phusion_passenger/debug_logging.rb:25:in ‘<top (required)>’ from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems//core_ext/kernel_require.rb:54:in ‘require’ from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems//core_ext/kernel_require.rb:54:in ‘require’
貌似passenger是否安装错误,缺少什么包?
折腾了一番无果,换了 gem install passenger
来安装passenger,这样会麻烦一些;
第一步,执行gem install passenger
,passenger-config
, passenger-install-apache2-module
, passenger-install-nginx-module
等均正常安装。
第二步,运行passenger-install-apache2-module
安装passenger-apache
模块,所有操作都会有检查和提示,照着提示安装即可。
第三步,运行passenger-config validate-install
进行安装检查,OK。