热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用passenger插件在Apache服务器部署rails应用

小例子可以部署在rails自带的WEBrick上,逐渐往后走还得上Apache。安装apache服务器命令是sudoapt-getinstallapache2安装passenger插件安装完毕还不能立刻用,因为想运行rails应用的话,还要为apache服务器安装插件passenger。passenger是一个gem包
小例子可以部署在rails自带的WEBrick上,逐渐往后走还得上Apache。

安装apache服务器
命令是sudo apt-get install apache2

安装passenger插件
安装完毕还不能立刻用,因为想运行rails应用的话,还要为apache服务器安装插件passenger。
passenger是一个gem包,安装命令是gem install passenger

passenger集成进Apache
执行命令passenger-install-apache2-module,进入安装程序。
abbuggy@abbuggy-ubuntu:~$ passenger-install-apache2-module
Welcome to the Phusion Passenger Apache 2 module installer, v3.0.18.
This installer will guide you through the entire installation process. It
shouldn't take more than 3 minutes in total.
Here's what you can expect from the installation process:
 1. The Apache 2 module will be installed for you.
 2. You'll learn how to configure Apache.
 3. You'll learn how to deploy a Ruby on Rails application.
Don't worry if anything goes wrong. This installer will advise you on how to
solve any problems.
Press Enter to continue, or Ctrl-C to abort.
回车确定之后,会进行依赖关系的检查,有部分内容不通过没有关系,回车之后会提示如何解决。 Checking for required software...
 * GNU C++ compiler... found at /usr/bin/g++
 * Curl development headers with SSL support... found
 * OpenSSL development headers... found
 * Zlib development headers... found
 * Ruby development headers... found
 * OpenSSL support for Ruby... found
 * RubyGems... found
 * Rake... found at /home/abbuggy/.rvm/wrappers/ruby-1.9.2-p320/rake
 * rack... found
 * Apache 2... found at /usr/sbin/apache2
 * Apache 2 development headers... not found
 * Apache Portable Runtime (APR) development headers... not found
 * Apache Portable Runtime Utility (APU) development headers... not found
Some required software is not installed.
But don't worry, this installer will tell you how to install them.
Press Enter to continue, or Ctrl-C to abort.
按照提示将缺少的依赖包,比如我缺少apache2-perfork-dev,libapr1-dev,libaprutil1-dev这三个包。 --------------------------------------------
Installation instructions for required software
 * To install Apache 2 development headers:
   Please run apt-get install apache2-prefork-dev as root.
 * To install Apache Portable Runtime (APR) development headers:
   Please run apt-get install libapr1-dev as root.
 * To install Apache Portable Runtime Utility (APU) development headers:
   Please run apt-get install libaprutil1-dev as root.
程序也给出了解决方法。虽然是分别给出的,但我们可以一并执行。你的环境可能和我不一样,按照上面的提示来九成。 abbuggy@abbuggy-ubuntu:~$ sudo apt-get install apache2-prefork-dev libapr1-dev libaprutil1-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列【新】软件包将被安装:
  apache2-prefork-dev libapr1-dev libaprutil1-dev
升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 0 B/1,718 kB 的软件包。
解压缩后会消耗掉 11.3 MB 的额外空间。
Selecting previously unselected package libapr1-dev.
(正在读取数据库 ... 系统当前共安装有 230693 个文件和目录。)
正在解压缩 libapr1-dev (从 .../libapr1-dev_1.4.6-1_i386.deb) ...
Selecting previously unselected package libaprutil1-dev.
正在解压缩 libaprutil1-dev (从 .../libaprutil1-dev_1.3.12+dfsg-3_i386.deb) ...
Selecting previously unselected package apache2-prefork-dev.
正在解压缩 apache2-prefork-dev (从 .../apache2-prefork-dev_2.2.22-1ubuntu1.2_i386.deb) ...
正在处理用于 man-db 的触发器...
正在设置 libapr1-dev (1.4.6-1) ...
正在设置 libaprutil1-dev (1.3.12+dfsg-3) ...
正在设置 apache2-prefork-dev (2.2.22-1ubuntu1.2) ...
再次执行passenger-install-apache2-module安装,编译完毕之后,给出了成功提示。还要求将以下内容放到apache的配置文件中。 The Apache 2 module was successfully installed.
Please edit your Apache configuration file, and add these lines:
   LoadModule passenger_module /home/abbuggy/.rvm/gems/ruby-1.9.2-p320/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
   PassengerRoot /home/abbuggy/.rvm/gems/ruby-1.9.2-p320/gems/passenger-3.0.18
   PassengerRuby /home/abbuggy/.rvm/wrappers/ruby-1.9.2-p320/ruby
After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!
Press ENTER to continue.
apache的配置文件位于/etc/apache2/httpd.conf,编辑并添加之。到目前为止,httpd.conf是这样的。
LoadModule passenger_module /home/abbuggy/.rvm/gems/ruby-1.9.2-p320/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /home/abbuggy/.rvm/gems/ruby-1.9.2-p320/gems/passenger-3.0.18
PassengerRuby /home/abbuggy/.rvm/wrappers/ruby-1.9.2-p320/ruby

部署Rails应用
我想通过类似于“localhost/simple-cms”的地址访问我的例子站点,后续更多的站点都可以按照形如
localhost/site1
localhost/site2

的格式。
首先得配置一个基准目录也就是apache的根目录。 向httpd.conf中添加如下的配置,将/var/www设置为web的根目录,回头要往这个目录中放置各个站点。

      ServerName www.server110.com
      DocumentRoot /var/www
      
         Allow from all
      

接下来把一个具体的站点挂在web根目录下面,比如这个simple-cms。还是向/etc/apache2/httpd.conf配置,后面的四行是新加的。/simple-cms是相对于上面localhost的访问地址    
      ServerName localhost
      DocumentRoot /var/www
      
         Allow from all
      
      RailsBaseURI /simple-cms
      
         Options -MultiViews
      
   
/var/www/test_site是一个软连接,指向开发环境中的public目录。
sudo ln -s /home/abbuggy/workspace/simple_cms/public  /var/www/simple-cms
不过我自己配置的时候,死活配不对,总是提示"We're sorry,but something went wrong!"临近崩溃边缘时终于找到解决方案。”The defaultRAILS_ENV environment in which deployed Rails applicationsare run, is “production”. You can change this by changing theRailsEnv configuration option.“ --来自于Phusion Passenger users guide
即缺省生效的是production环境,如果在调试时使用development环境的话需要在apache配置文件中增加一行RailsEnv development,所以正确的配置是。

   
      ServerName localhost
      DocumentRoot /var/www
      
         Allow from all
      
      RailsBaseURI /simple-cms
      RailsEnv development
      
         Options -MultiViews
      
   
重启apache,sudo service apache2 restart,访问localhost/simple-cms成功。

推荐阅读
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • 本文探讨了为何相同的HTTP请求在两台不同操作系统(Windows与Ubuntu)的机器上会分别返回200 OK和429 Too Many Requests的状态码。我们将分析代码、环境差异及可能的影响因素。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 本文介绍如何在Linux Mint系统上搭建Rust开发环境,包括安装IntelliJ IDEA、Rust工具链及必要的插件。通过详细步骤,帮助开发者快速上手。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 本文详细介绍了如何在预装Ubuntu系统的笔记本电脑上安装Windows 7。针对没有光驱的情况,提供了通过USB安装的具体方法,并解决了分区、驱动器无法识别等问题。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 2012年7月30日,语言岛团队宣布其智能记单词软件V0.3.4.554版本正式开源。该版本不仅支持跨平台使用,还引入了多项创新功能,旨在帮助用户更高效地记忆单词。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • 本文详细介绍了如何在Ubuntu的Enlightenment (E17) 桌面环境中管理和优化桌面图标及根菜单。通过本文,您将了解这些功能的作用及其配置方法。 ... [详细]
  • 搭建Jenkins、Ant与TestNG集成环境
    本文详细介绍了如何在Ubuntu 16.04系统上配置Jenkins、Ant和TestNG的集成开发环境,涵盖从安装到配置的具体步骤,并提供了创建Windows Slave节点及项目构建的指南。 ... [详细]
author-avatar
我叫柒薇安2001
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有