`
helpbs
  • 浏览: 1191456 次
文章分类
社区版块
存档分类
最新评论

多机部署rails下的session处理实践

 
阅读更多
背景:rails部署在多个机器上,如何处理session?
如果单机部署那么不用理会这个问题,使用系统默认的session机制既可,如果多机情况下就不一样,处理不当很有可能出现, 用户在一台机器已经登陆,结果下次访问另一台机器,可能就会被迫再次登陆(因为这台机器并没有session数据)。用户只管使用,并不关心你的应用如何部署,所以出现这种情况会让用户很困惑,甚至会造成比较严重的后果。

我尝试采用了数据库存储session的方案。即多个rails共享一个数据库中的session表中的纪录。
无论用户访问哪台rails机器,rails都会取出同一行session数据

具体步骤如下:

step 1)修改 environment.rb
加上如下一行代码:
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:database_manager]=CGI::Session::ActiveRecordStore

step 2)在数据库加上如下一张表
CREATE TABLE `sessions` (
`id` int(11) NOT NULL auto_increment,
`sessid` varchar(255) default NULL,
`data` text,
`updated_at` datetime default NULL,
PRIMARY KEY (`id`),
KEY `session_index` (`sessid`)
) ;

关于session的过期清除
写一个脚本定时删除过期的session纪录,
sql语句如下:
delete from sessions where now()-update_at>3600

分享到:
评论

相关推荐

    Ruby on Rails 3.2 Tutorial

    《Ruby on Rails 3.2 Tutorial》是Michael Hartl撰写的一本经典教程,旨在通过实践教学的方式帮助初学者掌握Rails框架。Rails是一个基于Ruby语言的开源Web应用框架,遵循MVC(模型-视图-控制器)架构模式,以其DRY...

    基于Ruby On Rails的在线购书系统

    以上是《基于Ruby On Rails的在线购书系统》项目所涵盖的关键知识点,通过这个项目,开发者不仅可以深入学习RoR,还能全面了解电子商务应用的开发流程和最佳实践。提供的代码和报告将为学习者提供宝贵的实战经验,...

    Rails api 英文版

    8. **部署(Deployment)**:虽然文档可能不会深入到每个部署平台的细节,但会涵盖如何配置服务器环境、使用Capistrano进行自动化部署等基本概念。 9. **社区和资源**:Rails拥有活跃的社区,文档通常会列出一些...

    Rails 3 in Action

    ### Rails 3 in Action 关键知识点解析 #### 一、Ruby on Rails 框架简介 **Rails 3 in Action** 这本书介绍了 **Ruby on Rails**(简称 Rails)这一 Web 开发框架的核心概念和技术细节。Rails 自发布以来便以其...

    使用 rails进行敏捷开发(第三版)

    12. **部署与配置**:讲解如何将Rails应用部署到服务器,如Heroku或AWS,并进行生产环境的配置。 13. **安全与最佳实践**:涵盖CSRF防护、XSS防范、SQL注入预防,以及Rails的安全最佳实践。 14. **Rails社区和生态...

    Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rar

    在前两版的内容架构基础上,第3版增加了对Rails 2中新特性和最佳实践的内容介绍。相比第2版中的内容,Rails 2增加了REST、资源、轻量级web service等新特性。本书涵盖了这些全新的内容,因此能更好地体现出Rails框架...

    使用websockets创建和维护公共和私人聊天室的Rails.zip

    在本文中,我们将深入探讨如何使用WebSockets技术在Ruby on Rails框架中创建和维护公共与私人聊天室。...在实践中,你可能还需要关注性能优化、错误处理以及用户体验等方面的细节,确保聊天室的稳定性和易用性。

    RoR性能优化经验谈

    例如,Reiserfs文件系统在处理大量小文件时表现出色,这对于Rails的session文件存储尤其有利。为了进一步提高session处理性能,可以将临时目录链接到内存文件系统/dev/shm,实现内存中的操作。Rails 2.0引入了将...

    shop:使用Ruby On Rails购买回购

    在Rails中,可以使用`step_by_step`库或者自定义状态机来管理这个流程。每个步骤对应一个控制器的action,用户在每个阶段的数据保存到session或数据库中,直到最后生成订单。 5. **支付集成**: 结算过程中往往...

    Rails_friends

    标题 "Rails_friends" ...以上是基于标题和描述的基本分析,实际项目可能涉及更多细节,如错误处理、性能优化、前端框架(如Bootstrap或jQuery)、API集成等。对于学习和理解Rails框架,这个项目提供了很好的实践机会。

    互联网高并发架构技术实践

    - **应用程序打包方式**:依据应用使用的语言和框架进行打包部署,例如Java应用通常被打包成WAR文件,Ruby on Rails应用则为目录文件。 - **优势**:实现简单快速,便于开发、测试和部署。 - **劣势**:随着项目...

    e-commerce-on-rails:一个非常简单的 Ruby on Rails 电子商务,带有活动管理员

    总的来说,"e-commerce-on-rails"项目是一个实践性的教程,它涵盖了从基础的RoR应用开发到复杂的电子商务功能实现,对于学习Rails和电商开发的初学者来说是一个很好的起点。通过这个项目,开发者不仅可以掌握RoR的...

    oyk_2019_yaz_ruby_rails:坎普sürecindeanlatımıyapılankonularıyazılıbir kaynak haline getirerek saklar。 NotlarşuanHAMVERİaşamasındadır。 杜岑伦米米

    这个"oyk_2019_yaz_ruby_rails"项目不仅适用于初学者,也可能对有经验的Rails开发者有价值,因为它可能包含了项目开发过程中的最佳实践和常见问题解决方案。通过深入学习和理解这些笔记,开发者可以提升其在Ruby on ...

    ionicrailsauth-frontend:使用 Rails 和 ionic 进行简单身份验证的前端客户端

    Rails,则是 Ruby on Rails 的简称,是一个强大的 Web 开发框架,常用于后端服务器逻辑和数据处理。 描述中的“简单身份验证”提示我们,这个项目可能涉及用户登录、注册等基础的身份验证功能,这是任何需要用户...

    精品课程网(含视频转码与播放、上传,登录。注册等适合课设)

    可能采用的技术栈包括Node.js、Django、Ruby on Rails等,配合MySQL、PostgreSQL等数据库管理系统。设计合理的数据库模型,以高效存储和检索课程、用户信息及视频数据。 ### 7. 安全性与隐私保护 保护用户数据的...

    Microposts-源码.rar

    通过对"Microposts"源码的深入剖析,我们可以学习到Web开发中的多种实践和技巧,包括前端交互、后端逻辑处理、数据库设计、安全策略以及性能优化等。这不仅有助于理解项目本身,还能为自己的开发工作提供宝贵的参考...

    网站后台管理框架系统

    这样的框架可以帮助开发者遵循最佳实践,减少重复工作,使他们能够更专注于业务逻辑和用户体验。 2. MVC模式: MVC(Model-View-Controller)是一种设计模式,广泛应用于后台管理框架中。模型(Model)负责处理数据...

    linux安装redmine1.2.1.pdf

    在本文中,我们将详细探讨如何在Linux环境下安装Redmine 1.2.1。Redmine是一个开源项目管理软件,基于Ruby on Rails框架构建,适用于跟踪任务、管理版本控制和协调团队工作。 首先,我们需要安装Ruby运行环境。...

    完整的网上商店源码

    【标题】"完整的网上商店源码"所涉及的知识点涵盖了Web开发的核心技术,...综上所述,"完整的网上商店源码"不仅是一个实际的项目,它还是学习和理解Web开发、电子商务系统构建、安全性管理等多个领域的综合实践案例。

    网络服务器模块.rar

    网络服务器模块是构建互联网应用程序的核心组成部分,它负责处理来自客户端的请求并返回相应的响应。在本文中,我们将深入探讨网络服务器模块的概念、功能、常见类型以及如何在实际开发中运用这些模块。 网络服务器...

Global site tag (gtag.js) - Google Analytics