- 浏览: 2083726 次
- 性别:
- 来自: NYC
-
文章分类
- 全部博客 (628)
- Linux (53)
- RubyOnRails (294)
- HTML (8)
- 手册指南 (5)
- Mysql (14)
- PHP (3)
- Rails 汇总 (13)
- 读书 (22)
- plugin 插件介绍与应用 (12)
- Flex (2)
- Ruby技巧 (7)
- Gem包介绍 (1)
- javascript Jquery ext prototype (21)
- IT生活 (6)
- 小工具 (4)
- PHP 部署 drupal (1)
- javascript Jquery sort plugin 插件 (2)
- iphone siri ios (1)
- Ruby On Rails (106)
- 编程概念 (1)
- Unit Test (4)
- Ruby 1.9 (24)
- rake (1)
- Postgresql (6)
- ruby (5)
- respond_to? (1)
- method_missing (1)
- git (8)
- Rspec (1)
- ios (1)
- jquery (1)
- Sinatra (1)
最新评论
-
dadadada2x:
user模型里加上 protected def email ...
流行的权限管理 gem devise的定制 -
Sev7en_jun:
shrekting 写道var pattern = /^(0| ...
强悍的ip格式 正则表达式验证 -
jiasanshou:
好文章!!!
RPM包rpmbuild SPEC文件深度说明 -
寻得乐中乐:
link_to其实就是个a标签,使用css控制,添加一个参数: ...
Rails在link_to中加参数 -
aiafei0001:
完全看不懂,不知所然.能表达清楚一点?
"$ is not defined" 的问题怎么办
鸣哥独白 写道
最近在看nginx,本来是要配置PAM MODULE,就是把自己系统的用户权限系统和Linux本身的用户权限系统结合起来。可以从Linux系统添加和管理用户。登录如同windows的域帐号。然后,有了下面的整理。我就简单的陪了一下就通了。
注意的有点,
要用mongrel的负载均衡,可以不用陪public的目录
流程概况:
1. 下载 nginx-0.7.64.tar.gz
2. 配置编译环境
3.
./configure make sudo make install
4. vim /usr/local/nginx/conf/nginx.conf
5. /usr/local/nginx/sbin/nginx
如果:

则参考 Nginx 重启 nginx 停止 修改配置后生效killall -HUP nginx
主要参考下文
配置nginx+mongrel的rails部署环境
或许,你对这个也兴趣
freeBSD下配置nginx+mongrel的rails部署环境
nginx是什么?
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
引用
启动与停止nginx的命令
假设nginx安装在/usr/local/nginx目录里。将如下命令加到~/.bashrc(linux)、 ~/.bash_profile(Mac)
增加应用的host到/etc/hosts,如:
假设nginx安装在/usr/local/nginx目录里。将如下命令加到~/.bashrc(linux)、 ~/.bash_profile(Mac)
alias sn='sudo /usr/local/nginx/sbin/nginx' alias kn='sudo kill `cat /usr/local/nginx/logs/nginx.pid `' alias rn='kn; sn'
增加应用的host到/etc/hosts,如:
127.0.0.1 app1 127.0.0.1 app2
这样,在开发时,可以在浏览器中,直接用app1, app2去访问各个应用,再也不用去script/server之类的了。
nginx 接受公网上的http请求,然后nginx通过反向代理用http协议再把这些请求转发给 mongrel,mongrel上启动的Rails对请求进行处理完后再把响应逆向返回,如果如果在高负载的情况下还可以通过mongrel_cluster启动的mongrel集群,并且在nginx上启动负载均衡以成倍的提高处理请求的能力。
1.先点这里下载nginx并安装:
我下载的是development版本。我的安装路径:/local/Program_Files/nginx/nginx
把/local/Program_Files/nginx/nginx/sbin设置到环境变量中。
2.安装mongrel:
gem install mongrel gem install mongrel_cluster
3. 配置nginx:
我安装nginx的路径是:/local/Programe_Files/nginx
打开:/local/Program_Files/nginx/nginx/conf/nginx.conf
配置如下:
nginx.conf(红色标记为重要配置) ------------------------------------------------------------------------------ #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] $request ' # '"$status" $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream mongrel { //因为我要通过别的机子来通过nginx来请求mongrel,所以 server 192.168.1.10:8000; // 不是127.0.0.1了 server 192.168.1.10:8001; } server { listen 80; server_name 192.168.1.10; #charset koi8-r; #access_log logs/host.access.log main; [color=red]location / { root /local/Program_Files/aptana/workspace/depot/public; index index.html index.htm; }[/color] location / { [color=red]proxy_pass [url]http://mongrel;[/url] proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;[/color] } location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov)$ { root /local/Program_Files/aptana/workspace/depot/public; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
------------------------------------------------------------------------------------------------
4.配置mongrel:
执行下列命令,会在/local/Program_Files/aptana/workspace/depot/config/中生成mongrel_cluster.yml文件 :
# mongrel_rails cluster::configure -e development -p 8000 -N 3 \ -c /local/Program_Files/aptana/workspace/depot -a 127.0.0.1
注:-e 指定environment。-p 端口 。 -N mongrel服务进程数
文件内容为:
---
cwd: /local/Program_Files/aptana/workspace/depot log_file: log/mongrel.log port: "8000" environment: development //此为开发模式,改为production即为生产模式 address: 127.0.0.1 pid_file: tmp/pids/mongrel.pid servers: 3
5.命令mongrel_rails cluster::start启动mongrel集群
6.到/local/Program_Files/nginx/nginx/sbin下启动nginx
7.本地机:http://localhost
局域网内别的机器:http://192.168.1.10
尝试http://192.168.1.10/admin,depot的登录界面会出现,大功告成了!!!
由此可发现nginx+mongrel的配置是多么简便。。。
-------------------------------------附带nginx配置说明----------------------------
#运行用户
user nobody nobody;
#启动进程
worker_processes 2;
#全局错误日志及PID文件
error_log logs/error.log notice; pid logs/nginx.pid;
#工作模式及连接数上限
events { use epoll; worker_connections 1024; }
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型
include conf/mime.types; default_type application/octet-stream;
#设定日志格式
log_format main '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" ' '"$gzip_ratio"'; log_format download '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" ' '"$http_range" "$sent_http_content_range"';
#设定请求缓冲
client_header_buffer_size 1k; large_client_header_buffers 4 4k;
#开启gzip模块
gzip on; gzip_min_length 1100; gzip_buffers 4 8k; gzip_types text/plain; output_buffers 1 32k; postpone_output 1460;
#设定access log
access_log logs/access.log main; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65;
#设定负载均衡的服务器列表
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
#本机上的Squid开启3128端口
server 192.168.8.1:3128 weight=5; server 192.168.8.2:80 weight=1; server 192.168.8.3:80 weight=6; }
#设定虚拟主机
server { listen 80; server_name 192.168.8.1 [url]www.yejr.com;[/url] charset gb2312;
#设定本虚拟主机的访问日志
access_log logs/www.yejr.com.access.log main;
#如果访问 /img/*, /js/*, /css/* 资源,则直接取本地文件,不通过squid
#如果这些文件较多,不推荐这种方式,因为通过squid的缓存效果更好
location ~ ^/(img|js|css)/ { root /data3/Html; expires 24h; }
#对 "/" 启用负载均衡
location / { proxy_pass [url]http://mysvr;[/url] proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; }
#设定查看Nginx状态的地址
location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus"; auth_basic_user_file conf/htpasswd; } } }
备注:conf/htpasswd 文件的内容用 apache 提供的 htpasswd 工具来产生即可,内容大致如下:
3.) 查看 Nginx 运行状态
输入地址 http://192.168.8.1/NginxStatus/,输入验证帐号密码,即可看到类似如下内容:
Active connections: 328 server accepts handled requests 9309 8982 28890 Reading: 1 Writing: 3 Waiting: 324
第一行表示目前活跃的连接数
第三行的第三个数字表示Nginx运行到当前时间接受到的总请求数,如果快达到了上限,就需要加大上限值了。
第四行是Nginx的队列状态
本文出自 “{ :Alex Space => " Ruby Notes " }” 博客,请务必保留此出处http://blackanger.blog.51cto.com/140924/40089
发表评论
-
Destroying a Postgres DB on Heroku
2013-04-24 10:58 951heroku pg:reset DATABASE -
VIM ctags setup ack
2012-04-17 22:13 3269reference ctags --extra=+f --e ... -
alias_method_chain方法在3.1以后的替代使用方式
2012-02-04 02:14 3315alias_method_chain() 是rails里的一个 ... -
一些快速解决的问题
2012-01-19 12:35 1484问题如下: 引用Could not open library ... -
API service 安全问题
2011-12-04 08:47 1398这是一个长期关注的课题 rest api Service的 ... -
Module方法调用好不好
2011-11-20 01:58 1368以前说,用module给class加singleton方法,和 ... -
一个ajax和rails交互的例子
2011-11-19 01:53 1918首先,这里用了一个,query信息解析的包,如下 https: ... -
Rails 返回hash给javascript
2011-11-19 01:43 2287这是一个特别的,不太正统的需求, 因为,大部分时候,ajax的 ... -
关于Rubymine
2011-11-18 23:21 2287开个帖子收集有关使用上的问题 前一段时间,看到半价就买了。想 ... -
ruby中和javascript中,动态方法的创建
2011-11-18 21:01 1256class Klass def hello(*args) ... -
textmate快捷键 汇总
2011-11-16 07:20 8165TextMate 列编辑模式 按住 Alt 键,用鼠标选择要 ... -
Ruby面试系列六,面试继续面试
2011-11-15 05:55 2040刚才受到打击了,充分报漏了自己基础不扎实,不肯向虎炮等兄弟学习 ... -
说说sharding
2011-11-13 00:53 1517这个东西一面试就有人 ... -
rails面试碎碎念
2011-11-12 23:51 1961面试继续面试 又有问ru ... -
最通常的git push reject 和non-fast forward是因为
2011-11-12 23:29 17254git push To git@github.com:use ... -
Rails 自身的many to many关系 self has_many
2011-11-12 01:43 2751简单点的 #注意外键在person上people: id ... -
Rails 3下的 in place editor edit in place
2011-11-12 01:20 962第一个版本 http://code.google.com/p ... -
Heroku 的诡异问题集合
2011-11-11 07:22 1706开个Post记录,在用heroku过程中的一些诡异问题和要注意 ... -
SCSS 和 SASS 和 HAML 和CoffeeScript
2011-11-07 07:52 12976Asset Pipeline 提供了内建 ... -
Invalid gemspec because of the date format in specification
2011-11-07 02:14 2144又是这个date format的错误。 上次出错忘了,记录下 ...
相关推荐
实现Nginx+Mongrel的负载均衡配置,你需要做以下步骤: 1. **安装Nginx和Mongrel**:首先确保你的系统已经安装了这两个组件,可以通过包管理器或者源码编译安装。 2. **启动Mongrel**:在Rails应用目录下,使用`...
在Rails环境里,Monit确保了Nginx、Mongrel和MySQL等关键服务的健康运行。 在部署这个环境时,首先需要在Ubuntu上安装必要的软件包,包括Ruby、Rails、Nginx、MySQL以及Monit。然后,配置Nginx作为反向代理来分发...
配置Nginx作为反向代理和负载均衡器,需要在Nginx的配置文件中添加`upstream`块。在`http`上下文中,指定Mongrel Cluster的服务器列表,例如: ```nginx http { ... # upstream段定义负载均衡的服务器组 ...
博文链接:https://swachian.iteye.com/blog/175033
3. **负载均衡**:Mongrel集群的设置,如何通过如HAProxy或Nginx实现请求分发以提高可用性和性能。 4. **安全和性能**:最佳实践,如限制并发连接数、防止DDoS攻击等。 5. **日志管理和错误处理**:如何收集和分析...
nginx 是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力tomcat 技术先进、性能稳定,而且免费IIS(windows)安全...
这本书旨在教育开发者如何有效地部署和扩展RoR应用,特别是在Nginx和Mongrel集群环境中实现高可用性和可伸缩性。通过使用虚拟化技术,如Linux虚拟机,他们建议将数据库、应用服务器和Web服务器分隔开,以提高系统的...
他们增加了服务器,并通过Nginx的Proxy模块实现负载均衡,以分配用户请求。为了保持数据的一致性,他们使用NFS(网络文件系统)作为统一的写文件源,同时借助Sersync和rsync进行实时文件同步,确保多台服务器间的...
Deprec-2.x是对项目的完整重写,可以实现以下目的: 支持Capistrano 2 生成的配置文件存储在本地以启用编辑和版本控制支持更多服务(心跳,nagios,nginx,ntp,postfix等) 多个Rails部署选项(Passenger + Apache...