设为首页 收藏本站
查看: 1240|回复: 0

[经验分享] Rails每周一题(三): Mongrel & Apache on jruby

[复制链接]

尚未签到

发表于 2017-1-9 09:36:14 | 显示全部楼层 |阅读模式
  用Apache和Mongrel搭建jruby on rails服务器平台。
  为什么要Apache

  主要是用apache作反向代理
,个人觉得主要有两点。(什么是反向代理?与forward proxy相比,反向代理是处理in-bound的request,不需要客户端进行任何配置,reverse proxy主要用于cache和load balancer。而forward proxy的存在,大都是因为internal client因为某些原因不能或不应访问外部资源。)
  1. 让apache处理静态文件。
  2. 利用apache的mod_proxy_balancer作负载均衡。
  手把手

  不再赘述mongrel的安装以及apache的安装等。
  

1. 启动多个mongrel server。
  一般最佳实践是使用mongrel_jcluster
,但可惜的是Ola Bini老兄的更新总是不及时:mongrel_jcluster does not work in JRuby
1.1。

  好吧,写个脚本吧。但在jruby下又有另外一个问题:jruby daemon gem problem
.
  没错,就启动它成为一个linux后台守护进程吧。
  我写了这样一个简单的脚本。

mongrel_rails start -p 3000 -e development &
mongrel_rails start -p 3001 -e development &

  2. apache配置
  apache需要的模块有:mod_proxy,mod_proxy_connect,mod_proxy_balancer以及一些被依赖的module。

ubuntu@ubuntu-laptop:/etc/apache2$ ls mods-enabled/
alias.conf       authz_default.load    autoindex.conf  dir.conf   mime.load            proxy.conf          setenvif.conf
alias.load       authz_groupfile.load  autoindex.load  dir.load   negotiation.conf     proxy_connect.load  setenvif.load
auth_basic.load  authz_host.load       cgid.conf       env.load   negotiation.load     proxy_http.load     status.conf
authn_file.load  authz_user.load       cgid.load       mime.conf  proxy_balancer.load  proxy.load          status.load

  编辑proxy.conf,去掉deny all。

<Proxy *>
AddDefaultCharset off
Order deny,allow
# Deny from all
Allow from all
</Proxy>

  添加一个VirtualHost,在sites-available下添加一个文件叫myapp,然后在sites-enabled下建立一个symbolic link到这个文件。

ProxyRequests off  # 关闭forward proxy
<VirtualHost *:80>
DocumentRoot "/path/to/rails_root/public"      
ServerName myapp.com
ServerAlias www.myapp.com
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
ProxyPass /images !
ProxyPass /stylesheets !
ProxyPass /javascripts !     # donot proxy static files to cluster.
ProxyPass / http://localhost:3000/   # proxy request to one mongrel server
ProxyPassReverse / http://localhost:3000/
ProxyPreserveHost on
ErrorLog /var/log/apache2/myapp_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/myapp_access.log combined
</VirtualHost>

  增加load balancer。 


ProxyRequests off
<Proxy balancer://myapp_cluster>
BalancerMember http://127.0.0.1:3000
BalancerMember http://127.0.0.1:3001
</Proxy>
<VirtualHost *:80>
DocumentRoot "/path/to/rails_root/public"      
ServerName myapp.com
ServerAlias www.myapp.com
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
ProxyPass /images !
ProxyPass /stylesheets !
ProxyPass /javascripts !
ProxyPass / balancer://myapp_cluster/     # proxy request to mongrel cluster, don't forget to add the last '/'
ProxyPassReverse / balancer://myapp_cluster/
ProxyPreserveHost on
ErrorLog /var/log/apache2/myapp_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/myapp_access.log combined
</VirtualHost>
  最后,在/etc/hosts加上:

127.0.0.1       www.myapp.com
  重启apache,ok啦:)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-325826-1-1.html 上篇帖子: 找到了一个apache解析域名到目录的方法 下篇帖子: 用Apache的Jakarta Commons-Email开源框架发送Email
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表