最近准备帮朋友开发一个小型的应用,考虑再三决定使用ROR,因为朋友提供的独立主机是FreeBSD6.1,只好研究在FreeBSD下怎么安装production级别的ROR部署环境。
至于基本的软件怎么安装我这里就不多说了,网上的资源、信息很多,我这里提一下的是由于对FreeBSD不熟悉,使用ports安装的软件总是无法正确配置(还有就是可安装的软件版本太低),所以全部源码安装最新版本的软件。最终安装组合是:Nginx+Mongrel+Rails+MYSQL。
小型应用,数据库就不说了MYSQL,重点就是WEB Server的前后端组合方案的的选择上了,查阅了大量网上资料,考虑了以下两种种备选方案:
lighttpd + fcgi 或者 nginx +mongrel,
首先想优先考虑速度性能,毕竟都在传说ROR的速度性能差,准备挑选lighttpd+FastCGI方案,但大佬说FastCGI会因各种原因爆炸在发射台上(想必是一个难配置、难维护的翻案),还有lighttpd和FastCGI的通信是一个专有的通信协议(tcp/unix socket?fcgi协议?),想一想java WEB应用的ajp就有点怕,我等小虾米碰到通信出了问题只能抓瞎。还有rail装在什么上面(用后面来表达更好?)运行呀?协议还要一个东西接受转发给rails呀,估计配置肯定麻烦,我理解的ROR本质就是简单,不简单的肯定走不远。所以目前速度最优的方案放弃。
下面就选择通信性能较差的,但稳定,并且配置简便的使用proxy http通行的 nginx+Mongrel架构。备选方案中除了lighttpd+fcgi 就是nginx +mongrel主要是看了《Xen and the Art of Rails Deployment》中的:The year of the dog这句话,有点感想呀(也有人推荐 Swiftiply,说是性能更好,下一篇我会讲一下简单的配置过程)。
讲一下我对nginx +mongrel的理解,其实就是nginx 接受公网上的http请求,然后nginx通过反向代理用http协议再把这些请求转发给mongrel,mongrel上启动的Rails对请求进行处理完后再把响应逆向返回,如果如果在高负载的情况下还可以通过mongrel_cluster启动的mongrel集群,并且在nginx上启动负载均衡以成倍的提高处理请求的能力。
安装步骤:
1,首先在http://nginx.net/上下载nginx,并安装。(本例安装在 /usr/local/nginx),通过/usr/local/nginx/sbin/nginx 启动,测试,(这个地方我不知道怎么停止nginx服务,只有kill进程)
2,配置/usr/local/nginx/conf/nginx.conf,如下:
-
worker_processes 1;
-
error_log logs/error.log debug;
-
-
-
-
events {
-
worker_connections 1024;
-
}
-
http {
-
include conf/mime.types;
-
default_type application/octet-stream;
-
sendfile on;
-
-
keepalive_timeout 65;
-
tcp_nodelay on;
-
gzip on;
-
gzip_min_length 1100;
-
gzip_buffers 4 8k;
-
gzip_types text/plain;
-
upstream mongrel {
-
server 127.0.0.1:8000;
-
server 127.0.0.1:8001;
-
}
-
server {
-
listen 80;
-
server_name XXX.XXX.XXX.XXX;
-
root /usr/local/depot/public;
-
index index.html index.htm;
-
location / {
-
proxy_set_header X-Real-IP $remote_addr;
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-
proxy_set_header Host $http_host;
-
proxy_redirect false;
-
if (-f $request_filename/index.html) {
-
rewrite (.*) $1/index.html break;
-
}
-
if (-f $request_filename.html) {
-
rewrite (.*) $1.html break;
-
}
-
if (!-f $request_filename) {
-
proxy_pass http://mongrel;
-
break;
-
}
-
}
-
error_page 500 502 503 504 /50x.html;
-
location = /50x.html {
-
root html;
-
}
-
}
-
}
3,通过下面命令安装mongrel和mongrel_cluster 以上内容我就不用解释了,网上都有
首先测试mongrel是否安装成功。通过应用的主目录(本例/usr/local/depot)下通过mongrel_rails start 启动mongrel服务,用户应该在http://XXX.XXX.XXX.XXX:3000/ 下可以访问到ror的welcome aboard页面。
4,如果以上通过,通过一下命令配置mongrel集群。
-
mongrel_rails cluster::configure -e development -p 8000 \
-
-a 127.0.0.1 -N 2 -c /usr/local/depot
这句执行后在/usr/local/depot/config目录下应该多一个mongrel_cluster.yml文件,其中内容应该是:
-
---
-
cwd: /usr/local/depot
-
log_file: log/mongrel.log
-
port: "8000"
-
environment: development
-
address: 127.0.0.1
-
pid_file: tmp/pids/mongrel.pid
-
servers: 2
5,在应用主目录下通过命令mongrel_rails cluster::start启动mongrel集群,启动成功后netstat 应该可以看到127.0.0.1的8000和8001处于监听状态。最后启动nginx
6,提供一点简单的测试代码
-
rugy script/generate controller Say
编辑 depot/app/controllers/say_controller.rb
ruby 代码
-
class SayController < ApplicationController
-
def hello
-
end
- end
编辑depot/app/views/say/hello.rhtml
-
<html>
- <head>
- <title>Hello,Rails!title>
- head>
- <body>
-
<h1>Hello from Rails!h1>
-
<p>
-
It is nwo <%=Time.now %>
-
p>
- body>
- html>
最后,说点自己的感受。
1,通过nginx.conf的配置你可以把http请求反向代理到任何一个内网的已在服务的web server上甚至web service上,很有点SOA的感觉
2,配置简单
分享到:
相关推荐
根据给定的信息,本文将详细解释FreeBSD操作系统上部署Nginx、PHP、MySQL和Zend环境的方法,并介绍如何通过系统优化来防止DDoS攻击。同时,我们也会介绍一种简便的Ports安装方法。 ### 一、FreeBSD + Nginx + PHP +...
在本文中,我们将深入探讨如何在CentOS 5.3操作系统上配置一套完整的邮件系统,包括Nginx作为Web服务器,Postfix处理SMTP服务,以及Extmail作为邮件系统前端。这个配置还包括其他关键组件,如MySQL数据库存储用户...
在 FreeBSD 7.0 中编译安装 Nginx、PHP 和 MySQL 需要具备一定的技术基础,需要了解 FreeBSD 的 ports 系统、编译安装软件包的过程 본文将指导您如何从源代码编译安装 Nginx、PHP 和 MySQL,并进行基本配置。...
通过上述步骤,我们已经成功在 FreeBSD 8 上安装并配置了一个基本的 Nginx 和 PHP 运行环境。这个环境包括了 MySQL 数据库服务以及必要的 PHP 扩展。这些步骤对于初学者来说是非常实用的,可以帮助他们快速搭建起...
freeBSD配置php mysql apache nginx,里面有详细的说明,一步步告诉大家怎样配置。freeBSD配置php mysql apache nginx,里面有详细的说明,一步步告诉大家怎样配置。
1. **事件模型**:Nginx 使用多进程模型配合epoll(Linux系统下的高效I/O事件模型)或kqueue(FreeBSD下的事件模型),实现高并发处理能力。 2. **反向代理**:Nginx 可以作为反向代理,将用户的请求转发到后端...
在本教程中,我们将深入探讨如何在FreeBSD 7.0操作系统上手动编译和安装Nginx、PHP和MySQL,构建一个基本的Web服务器环境。这种方法不依赖于FreeBSD的ports系统,而是直接从源代码编译安装,这对于那些希望自定义...
这是一个适用于熟悉Unix/Linux环境且希望自定义安装配置的用户的过程。 首先,我们来看一下每个组件的下载和编译步骤: 1. **MySQL**: - 下载源代码并解压到指定目录。 - 使用`./configure`命令设置安装路径和...
3.这里只需要修改Nginx的配置,让它通过tomcat来转发,所以我们在这一步只需要在nginx.conf中添加几行代码就行。 如果看不懂 。建议直接拿我替来用。 Copy下面的内容 替换 你的nginx.conf注意黄色端口要改为你的。 ...
在FreeBSD操作系统中搭建一套完整的开发和测试环境,包括Apache web服务器、PHP脚本语言解析器、SVN...通过这样的环境,开发者可以在FreeBSD上搭建一个功能完备的开发和测试平台,支持各种Web应用程序的开发和部署。
接下来,"第二节(nginx安装)"应该会指导如何在不同的操作系统上安装Nginx,包括下载安装包、配置环境、启动服务等步骤。在Linux系统中,通常通过编译源码或者使用包管理器如apt-get(Ubuntu/Debian)、yum(CentOS/...
NGINX + LUA 实现复杂的控制 NGINX 是一款流行的 Web 服务器软件,而 LUA 是一种轻量级的脚本语言。通过将 NGINX 与 LUA 结合,可以实现复杂的控制功能。在本文中,我们将介绍如何使用 NGINX + LUA 实现复杂的控制...
首先需要确保两台服务器的配置保持一致,包括nginx的配置、PHP的运行环境以及MySQL的同步设置。在nginx和PHP的配置中,需要注意的是保持处理请求的脚本、配置文件的一致性。对于MySQL,需要设置主从复制或使用基于...