- 浏览: 2076221 次
- 性别:
- 来自: 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" 的问题怎么办
Ruby on Rails 在佈署上面,有兩種模型:出自ihower.tw
全自動模型 Apache/Nginx + Passenger
Passenger 又叫做 mod_rails,是目前佈署 Ruby on Rails 最方便的方式,直接將對 Rails 的支援變成 Apache 或 Nginx 的模組,就像 mod_php 一樣。
Apache 是一套功能非常豐富、非常多人使用的開放原始碼 HTTP 伺服器,要在 Ubuntu 上安裝 Apache + Passenger 指令如下:
sudo apt-get install -y apache2-mpm-prefork apache2-prefork-dev libapr1-dev libaprutil1-dev sudo gem install passenger sudo passenger-install-apache2-module
執行完 passenger-install-apache2-module 後會有一段設定,請將此設定加入 /etc/apache2/conf.d/mod_rails 檔案之中,例如:
passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15 PassengerRuby /usr/local/bin/ruby
假設你的 Rails 專案放在 /home/ihower/your_rails_app 目錄下,那麼可以新增 /etc/apache2/sites-enabled/your_rails_app.conf 這個專案的設定,例如:
<VirtualHost *:80> ServerAdmin ihower@gmail.com ServerName your_rails_app.ruby.tw DocumentRoot /home/ihower/your_rails_app/public ErrorLog /var/log/apache2/error-your_rails_app.log CustomLog /var/log/apache2/access-your_rails_app.log combined # Deflate AddOutputFilterByType DEFLATE text/html text/xml text/plain text/css application/x-javascript text/javascript; BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html <Directory "/home/ihower/your_rails_app/public"> Options FollowSymLinks Order allow,deny Allow from all AllowOverride all Options -MultiViews FileETag none </Directory> </VirtualHost>
注意到 DocumentRoot 和 Directory 是指向 public 這個靜態檔案的目錄。設定好之後,執行 sudo apache2ctl restart 便會啟用。如果之後你的 Rails 有任何修改要重新載入,但是並不想把 Apache 重開,請在你的 Rails 應用程式目錄下執行 touch tmp/restart.txt,這樣 mod_rails 就會知道要重新載入 Rails,而不需要重開 Apache。
Passenger 預設的 Rails 運行環境會是 production。在 production 環境下操作 Rails 指令有些必須加上環境變數,例如 rake db:migrate RAILS_ENV=production 或是主控台 rails console production
Nginx + Passenger
Nginx 則是另一套在 Rails 世界上還蠻常被使用的第二選擇,相較於 Apache 雖然功能較少,但執行效率更為良好。要讓 Nginx 裝上 Passgener 不需要先裝 Nginx,只需要執行以下指令:
sudo passenger-install-nginx-module
這是因為 Passenger 必須與 Nginx 一起編譯安裝的關係,所以 Passenger 的安裝指令就包括了安裝 Nginx。
反向代理(Reverse proxy)模型 Apache/Nginx + Mongrel/Thin/Unicorn
反向代理(Reverse proxy)模型就比較複雜了,它分成 Web 伺服器和 Application 伺服器,圖示如下:
其中 Web 伺服器會是 Apache 或 Nginx,但是它除了提供靜態檔案之外,其餘的任務就只是做 reverse proxy 將 request 分發到 Application 伺服器。
而 Application 伺服器負責執行 Ruby on Rails 程式,這有不少選擇:
- Mongrel http://mongrel.rubyforge.org/
- Thin http://code.macournoyer.com/thin/
- Unicorn http://unicorn.bogomips.org/
相較於 Passenger,設定上會比較複雜。
多執行序架構 和 EventMachine 架構
(TODO) 參考 Does Rails Performance Need an Overhaul? 這一篇文章
Ruby on Rails 主機代管服務
可以參考這篇文章 The Best Ruby on Rails Hosting Services ,這些服務可以概分為:
- Dedicated Server 專屬主機租用,一整台機器給你用
- VPS (Vitual private server),使用 VM 技術將一整台機器分租給多人,因此你可以獲得 root 權限安裝你想裝的軟體。
- Shared Host,提供固定的執行環境,例如只能執行 PHP 或 Rails。一台機器同時租用給非常多人。
相較於 PHP,Rails 的確是比較耗費資源的,所以會推薦 VPS 等級以上。
以上的租用方式都是以月來計算,比較沒有彈性。如果需要以小時計算、租用資源非常彈性的服務,那就是雲端了:
- IaaS,例如 Amazon EC2 服務,你可以獲得一整台的 root 權限。
- PaaS 則是固定的執行環境,例如比較有名的 Google App Engine (只提供 Java 和 Python 環境,如果要執行 Rails 需改用 JRuby)。而 Rails 也有專屬的 PaaS 服務, Heroku ,非常推薦一用,它的最基本方案是免費的。
Heroku
安裝步驟
- 安裝 Heroku 套件 gem install heroku
- 在你的 Rails 目錄下執行 heroku create your_app_name
如果是 Windwos 使用者,Heroku 可能會無法正確找到你的 public key 位置,請執行以下步驟手動上傳:
$ heroku keys:add "%homedrive%%homepath%/.ssh/id_rsa.pub"
發佈步驟
- git push heroku master (發佈程式到 Heroku 上)
- heroku rake db:migrate (第一次發佈或有新 migration 需要執行時)
第三方服務
處理例外
(TODO) 請參考這篇文章 Why? 主動攔截 Rails exception 錯誤
- Hoptoad http://www.hoptoadapp.com/
- Exceptional http://getexceptional.com/
效能監控
(TODO) NewRelic
自動化部署
- Capistrano http://www.capify.org
发表评论
-
Destroying a Postgres DB on Heroku
2013-04-24 10:58 935heroku pg:reset DATABASE -
VIM ctags setup ack
2012-04-17 22:13 3259reference ctags --extra=+f --e ... -
alias_method_chain方法在3.1以后的替代使用方式
2012-02-04 02:14 3295alias_method_chain() 是rails里的一个 ... -
一些快速解决的问题
2012-01-19 12:35 1472问题如下: 引用Could not open library ... -
API service 安全问题
2011-12-04 08:47 1386这是一个长期关注的课题 rest api Service的 ... -
Module方法调用好不好
2011-11-20 01:58 1349以前说,用module给class加singleton方法,和 ... -
一个ajax和rails交互的例子
2011-11-19 01:53 1908首先,这里用了一个,query信息解析的包,如下 https: ... -
Rails 返回hash给javascript
2011-11-19 01:43 2277这是一个特别的,不太正统的需求, 因为,大部分时候,ajax的 ... -
关于Rubymine
2011-11-18 23:21 2267开个帖子收集有关使用上的问题 前一段时间,看到半价就买了。想 ... -
ruby中和javascript中,动态方法的创建
2011-11-18 21:01 1241class Klass def hello(*args) ... -
textmate快捷键 汇总
2011-11-16 07:20 8147TextMate 列编辑模式 按住 Alt 键,用鼠标选择要 ... -
Ruby面试系列六,面试继续面试
2011-11-15 05:55 2026刚才受到打击了,充分报漏了自己基础不扎实,不肯向虎炮等兄弟学习 ... -
说说sharding
2011-11-13 00:53 1492这个东西一面试就有人� ... -
rails面试碎碎念
2011-11-12 23:51 1947面试继续面试 又有问ru ... -
最通常的git push reject 和non-fast forward是因为
2011-11-12 23:29 17217git push To git@github.com:use ... -
Rails 自身的many to many关系 self has_many
2011-11-12 01:43 2738简单点的 #注意外键在person上people: id ... -
Rails 3下的 in place editor edit in place
2011-11-12 01:20 947第一个版本 http://code.google.com/p ... -
Heroku 的诡异问题集合
2011-11-11 07:22 1697开个Post记录,在用heroku过程中的一些诡异问题和要注意 ... -
SCSS 和 SASS 和 HAML 和CoffeeScript
2011-11-07 07:52 12962Asset Pipeline 提供了内建� ... -
Invalid gemspec because of the date format in specification
2011-11-07 02:14 2122又是这个date format的错误。 上次出错忘了,记录下 ...
相关推荐
标题 "rails 部署 nginx" 涉及到的是在Web开发中使用Ruby on Rails框架结合Nginx服务器进行应用部署的相关知识。Nginx以其高性能、稳定性以及反向代理和负载均衡能力,常被用作Rails应用的前端服务器。下面将详细...
这是一个常见的Web应用程序部署方案,因为Unicorn能够处理多线程请求,而Nginx擅长静态资源的处理和反向代理。 首先,Redmine是一个基于Ruby on Rails框架的开源项目管理软件,支持多种版本控制系统如Git、SVN等,...
《再次发一本部署rails的书》是一本专注于Rails应用部署实践的书籍,旨在帮助开发者们理解和掌握将Rails项目上线到生产环境的全过程。Rails是Ruby编程语言的一个热门Web开发框架,以其“约定优于配置”(Convention ...
在部署方面,Rails应用通常运行在如Passenger、Unicorn或Puma这样的服务器上,配合Nginx或Apache作为反向代理。Heroku、DigitalOcean和AWS等云平台为Rails应用提供了便捷的部署选项。 总的来说,Ruby on Rails实践...
在构建高性能、高可用性的Web应用环境中,"基于Ubuntu Nginx Mongrel Mysql部署rails monit-5.0"的方案是一个常见的选择。这个方案结合了多种强大的工具和技术,以确保应用程序的稳定运行和高效管理。以下是这些关键...
Unicorn与Nginx结合使用,通常用于Ruby on Rails应用,实现负载均衡和高效的数据处理。 【描述】中的"nginx 1.17.9.1 Unicorn.zip"表明这是一个包含Nginx 1.17.9.1和Unicorn相关配置的压缩包,适用于Windows操作...
Rails是Ruby on Rails框架的简称,它是一种基于Ruby语言的开源Web开发框架,以其MVC(Model-View-Controller)架构而闻名,旨在简化Web应用的开发过程。在早期的Rails版本中,Mongrel是一个常用的HTTP服务器,用于...
"Unicorn"这一主题在IT领域中可能是指一种特定的设计元素、图标或者字体风格,尤其考虑到标签为“字体”。在本场景下,我们主要关注的是"Unicorn.ttf"这个文件,它是一个TrueType字体文件。TrueType是一种由苹果公司...
Unicorn Admin是一款备受推崇的前端开发框架,专为构建高效、响应式且用户友好的管理界面而设计。这款框架以其独特的设计风格、丰富的组件库和强大的功能,深受开发者喜爱,尤其适用于创建企业级后台管理系统。 在...
使用一个 rc.d 脚本运行多个 rails 应用程序 rails 应用程序使用bundle exec unicorn运行 #快速设置 将unicorn文件复制到/usr/local/etc/rc.d并使用chmod a+x unicorn将其标记为可执行文件。 编辑你的rc.conf 。 ...
capistrano-3-rails-template, 使用 Capistrano 3部署 Rails 应用程序的模板 Capistrano 3 Rails 配置概述这是部署带有的Ruby on Rails 应用程序的示例配置,包括使用Unicorn和Sidekiq后台员工部署的零停机。...
9. 布署与服务器配置:Rails应用通常部署在如Heroku、AWS或DigitalOcean等云平台上,使用Nginx或Apache作为反向代理,Passenger、Puma或Unicorn作为应用服务器。 10. 性能优化:Rails应用可以通过缓存、数据库索引...
《敏捷Web开发与Rails:程序指南 第四版》是一本深度探讨使用Ruby on Rails框架进行敏捷Web应用开发的专业书籍。本书旨在帮助开发者充分利用Rails 4的特性,提高开发效率,实现快速迭代和高质量的代码编写。 Rails是...
描述中提到的链接指向了一篇 CSDN 博客文章,文章详细介绍了如何将 CMake 和 Unicorn 结合,以在 x86 系统上模拟 ARM 代码。CMake 是一个跨平台的构建系统,用于管理项目的构建过程。对于多平台开发,如 ARM 和 x86...
标题 "rails web server deploy guide" 暗示了本文将关注如何部署Rails应用程序到Web服务器。Rails是Ruby on Rails的简称,是一个流行的开源Web开发框架,用于构建动态、数据驱动的网站。部署Rails应用通常涉及将...
10. **部署和运维**:如何将Rails应用部署到服务器,如使用Capistrano自动化部署,以及理解Nginx、Unicorn或Puma等Web服务器的工作原理。 11. **版本控制**:Git是Rails开发的标准版本控制系统,学习Git的基本操作...
描述进一步强调了Mina在部署Rails应用时的便捷性和速度优势。这暗示了Mina可能通过自动化流程,减少了手动操作,提高了部署效率,使得即便是新手开发者也能轻松应对复杂的服务器环境配置。 **标签解析:** "Ruby OS...