小例子可以部署在rails自带的WEBrick上,逐渐往后走还得上Apache。

安装apache服务器

命令是sudo apt-get install apache2

安装passenger插件

安装完毕还不能立刻用,因为想运行rails应用的话,还要为apache服务器安装插件passenger

passenger是一个gem包,安装命令是gem install passenger

passenger集成进Apache

执行命令passenger-install-apache2-module,进入安装程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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.

回车确定之后,会进行依赖关系的检查,有部分内容不通过没有关系,回车之后会提示如何解决。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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这三个包。

1
2
3
4
5
6
7
8
9
10
11
12
--------------------------------------------
 
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.

程序也给出了解决方法。虽然是分别给出的,但我们可以一并执行。你的环境可能和我不一样,按照上面的提示来九成。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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的配置文件中。

1
2
3
4
5
6
7
8
9
10
11
12
13
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是这样的。

1
2
3
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的根目录,回头要往这个目录中放置各个站点。

1
2
3
4
5
6
7
<VirtualHost *:80>
      ServerName localhost
      DocumentRoot /var/www
      <Directory /var/www>
         Allow from all
      </Directory>
</VirtualHost>

接下来把一个具体的站点挂在web根目录下面,比如这个simple-cms。还是向/etc/apache2/httpd.conf配置,后面的四行是新加的。/simple-cms是相对于上面localhost的访问地址

1
2
3
4
5
6
7
8
9
10
11
12
<VirtualHost *:80>
   ServerName localhost
   DocumentRoot /var/www
   <Directory /var/www>
      Allow from all
   </Directory>
    
   RailsBaseURI /simple-cms
   <Directory /var/www/simple_cms>
      Options -MultiViews
   </Directory>
</VirtualHost>

/var/www/test_site是一个软连接,指向开发环境中的public目录。

1
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,所以正确的配置是。

1
2
3
4
5
6
7
8
9
10
11
12
13
<VirtualHost *:80>
   ServerName localhost
   DocumentRoot /var/www
   <Directory /var/www>
      Allow from all
   </Directory>
    
   RailsBaseURI /simple-cms
   RailsEnv development
   <Directory /var/www/simple_cms>
      Options -MultiViews
   </Directory>
</VirtualHost>

重启apache,sudo service apache2 restart,访问localhost/simple-cms成功。

apache服务器安装以及使用passenger插件部署rails应用的更多相关文章

  1. 使用Apache Tomcat Maven插件部署运行 Web 项目

    什么是Apache Tomcat Maven Plugin? Maven Plugin 是Apache Tomcat 提供的一个Maven插件,它可以在你没有tomcat容器时将任何一个war项目文件 ...

  2. eclipse maven项目中使用tomcat插件部署项目

    maven的tomcat插件部署web项目,我简单认为分两种,一种是部署到内置tomcat,另一种是部署到安装的tomcat. 第一种部署,默认是部署在内置tomcat的8080端口,如果不需要改端口 ...

  3. centos6 vps部署rails

    centos 6 vps初始化部署rails应用1 ssh登录 vpsssh -p port root@server_ip_address 2 添加用户 adduser usernamepasswd ...

  4. Apache服务器安装SSL证书

    Apache服务器安装SSL证书 在证书控制台下载Apache版本证书,下载到本地的是一个压缩文件,解压后里面包含_public.crt文件是证书文件,_chain.crt是证书链(中间证书)文件,. ...

  5. PassengerNginxdebian快速部署Rails

    Passenger/Nginx/Debian快速部署Rails   PassengerNginxdebian快速部署Rails     安装所需的linux包 sudo apt-get install ...

  6. Apache服务器安装配置

    Apache服务器安装 1.Apache服务器安装      在Linux系统下,apache服务器的安装方式比较灵活,可以使用二进制包安装,比如:rpm包.deb包.已编译好的包.也可以简单的使用y ...

  7. 使用rsync+inotify+apache做分布式图片服务器的部署方法

    图片服务器一般是做成分布式的,但要使得所有的图片服务器的文件一致,可以由一个主服务器将文件推送到各个备份服务器上. rsync:文件差异检查及文件推送 inotify:事件触发,实时检测到添加.删除. ...

  8. zz将 VSTO 插件部署给所有用户

    原文:zz将 VSTO 插件部署给所有用户 注:本文原作者 Misha Shneerson 是 VSTO 团队的工程师.原文可以在下列地址找到:http://blogs.msdn.com/mshnee ...

  9. 插件部署【BE、BP、UI】

    1.BE插件部署 XML部署位置:D:\yonyou\U9V50\Portal\bin: DLL部署位置:D:\yonyou\U9V50\Portal\ApplicationServer\Libs; ...

随机推荐

  1. ubuntu启动tomcat出错解决方案

    从终端进入tomcat的bin目录,然后执行startup.sh,出现以下异常: Cannot find ./catalina.sh The file is absent or does not ha ...

  2. iis配置js支持读取json文件配置

    默认情况下,iis不支持解析.json文件,这就需要我们自己在iis下配置方法一:iis配置1.点击开始菜单选择控制面板: 2.控制面板内点击管理工具,选择Internet信息服务(IIS)管理器. ...

  3. c++减法高精度算法

    c++高精度算法,对于新手来说还是一大挑战,只要克服它,你就开启了编程的新篇章,算法. 我发的这个代码并不是很好,占用内存很多而且运行时间很长(不超过0.02秒),但是很好理解,很适合新手 高精算法的 ...

  4. jquery cdn/////////////////zzz

    jquery-2.1.1 注:jquery-2.0以上版本不再支持IE 6/7/8)百度引用地址 (推荐目前最稳定的,不会出现延时打不开情况) 百度压缩版引用地址:<script src=&qu ...

  5. 在Ubuntu 12.04下采用apt-get的方法安装Qt4

    在Ubuntu 12.04下采用apt-get的方法安装Qt4 注:之前发表的一篇博客是采用编译源码的方式安装Qt4,这是很有用的方式,因为源码安装对于所有系统都是通用的,其次,在使用交叉编译器的时候 ...

  6. mysql 触发器示例和注解

    -- 格式 CREATE TRIGGER 触发器名称 AFTER|before insert|update|delete ON 触发表 FOR EACH ROW BEGIN insert into 处 ...

  7. 在Ubuntu14.04_ROS_indigo上安装Kinect2驱动和bridge

    小乌龟:大乌龟,你这两周干么呢? 大乌龟:在Ubuntu14.04 ROS_indigo上装Kinect2的驱动和bridge 小乌龟:就装个驱动有什么难的 大乌龟:你说的对小乌龟,这确实不是问题,但 ...

  8. ios 使用AFN上传图片到服务器

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSe ...

  9. angularJS——自定义服务provider之$get

    可以认为provider有三个部分: 第一部分是私有变量和私有函数,这些变量和函数会在以后被修改. 第二部分是在app.config函数里可以访问的变量和函数,所以,他们可以在其他地方使用之前被修改. ...

  10. gitlab多人协作开发

    gitlab多人协同工作 本文为亨利向<Git权威指南>的作者蒋鑫老师的答疑邮件写成. 这里特别感谢蒋鑫老师对我询问gitlab的协同工作流程问题的详细解答. 蒋鑫老师的细致专业的解答让我 ...