- 浏览: 696673 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
qgm168:
...
Ruby中HmacMD5加密 -
lucky_god:
感谢楼主,写的很详细!
Redhat安装gem包报错“no such file to load — zlib”以及ruby的openssl扩展等错误的修正 -
liaozhaijk:
$("某一个dom").change() ...
jquery绑定input 文本域(text),检测值的变化 -
avalonzst:
...
Mysql启动失败Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysq -
zdz8207:
非常感谢,我的也是磁盘满了导致的问题,顺便分享下查看磁盘的命令 ...
Mysql启动失败Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysq
使用nginx搭配unicorn来启动多个工程,同时还要照顾过去那些使用lighttpd启动的项目
一、nginx的安装配置
默认在/usr/local/nginx/sbin下
执行命令
如是想更换端口 编辑配置文件/usr/local/nginx/conf/nginx.conf 中的配置即可
下面要配置一个工程,通过nginx和unicorn来启动
创建这个目录待用/tmp/nginx/sockets/
在nginx配置文件中添加一个
server中添加
二、安装unicorn并在项目中添加对应的配置
安装很简单,直接
在工程里面 配置路径下添加(这个是github的配置文件,有很多没用的都贴出来了)
unicorn.rb
内容如下:
配置完成后 访问http://***.***.com/config,会出现config路由不存在,可在工程项目中的config/environment.rb中添加这么一句
再放个简约的配置
配置完成之后,打开工程目录后,运行:unicorn_rails -c config/unicorn.rb -E production
三、nginx反向代理lighttpd
现在要改用 nginx 做 web server,但是有一些老项目用的 lighttpd。
可以用 nginx 反向代理功能,把一些请求叫给 lighttpd 处理
1 修改 lighttpd 的配置文件
# /etc/lighttpd/lighttpd.conf
2 修改 nginx 的配置文件
# /usr/local/nginx/conf/nginx.conf
小问题:配出来之后的工程,如果长时间不访问会502错误,我们写了脚本,定期去访问这些工程
一、nginx的安装配置
tar zxvf nginx-0.7.67.tar.gz cd nginx-0.7.67/ ./configure make make install
默认在/usr/local/nginx/sbin下
执行命令
cd /usr/local/nginx/sbin ./nginx
如是想更换端口 编辑配置文件/usr/local/nginx/conf/nginx.conf 中的配置即可
下面要配置一个工程,通过nginx和unicorn来启动
创建这个目录待用/tmp/nginx/sockets/
在nginx配置文件中添加一个
upstream config_manager { server unix:/tmp/nginx/sockets/config_manager_unicorn.sock fail_timeout=0; }
server中添加
server { listen 80; server_name ***.******.com; ……… …… location ~ ^/config { (注:这是一个正则表达式 匹配浏览器地址访地址 的path,这里以config开头的path在这里面处理,也可以直接写成 location /config) proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://config_manager;(注:这个config_manager 对应上面的upstream) }
二、安装unicorn并在项目中添加对应的配置
安装很简单,直接
gem install unicorn
在工程里面 配置路径下添加(这个是github的配置文件,有很多没用的都贴出来了)
unicorn.rb
内容如下:
# unicorn_rails -c /data/github/current/config/unicorn.rb -E production -D rails_env = ENV['RAILS_ENV'] || 'production' # 16 workers and 1 master worker_processes (rails_env == 'production' ? 16 : 4) # Load rails+github.git into the master before forking workers # for super-fast worker spawn times preload_app true # Restart any workers that haven't responded in 30 seconds timeout 30 # Listen on a Unix data socket !!!!!!!!!!!!!!!!!!!!!!!=========下面这个地址要与nginx.conf的upstream相对应 listen '/tmp/nginx/sockets/config_manager_unicorn.sock', :backlog => 2048 ## # REE # http://www.rubyenterpriseedition.com/faq.html#adapt_apps_for_cow if GC.respond_to?(:copy_on_write_friendly=) GC.copy_on_write_friendly = true end before_fork do |server, worker| ## # When sent a USR2, Unicorn will suffix its pidfile with .oldbin and # immediately start loading up a new version of itself (loaded with a new # version of our app). When this new Unicorn is completely loaded # it will begin spawning workers. The first worker spawned will check to # see if an .oldbin pidfile exists. If so, this means we've just booted up # a new Unicorn and need to tell the old one that it can now die. To do so # we send it a QUIT. # # Using this method we get 0 downtime deploys. old_pid = RAILS_ROOT + '/tmp/pids/unicorn.pid.oldbin' if File.exists?(old_pid) && server.pid != old_pid begin Process.kill("QUIT", File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH # someone else did our job for us end end end after_fork do |server, worker| ## # Unicorn master loads the app then forks off workers - because of the way # Unix forking works, we need to make sure we aren't using any of the parent's # sockets, e.g. db connection !!!!!!!!!!!!!!!!!!!=====注释掉了第二行,主要是因为没有开启相应的memcache服务之类======!!!!!!!!!!!!!!! ActiveRecord::Base.establish_connection #CHIMNEY.client.connect_to_server # Redis and Memcached would go here but their connections are established # on demand, so the master never opens a socket ## # Unicorn master is started as root, which is fine, but let's # drop the workers to git:git begin uid, gid = Process.euid, Process.egid user, group = 'root', 'root' target_uid = Etc.getpwnam(user).uid target_gid = Etc.getgrnam(group).gid worker.tmp.chown(target_uid, target_gid) if uid != target_uid || gid != target_gid Process.initgroups(user, target_gid) Process::GID.change_privilege(target_gid) Process::UID.change_privilege(target_uid) end rescue => e if RAILS_ENV == 'development' STDERR.puts "couldn't change user, oh well" else raise e end end end
配置完成后 访问http://***.***.com/config,会出现config路由不存在,可在工程项目中的config/environment.rb中添加这么一句
ENV['RAILS_RELATIVE_URL_ROOT'] = "/config"
再放个简约的配置
worker_processes 3 listen '/tmp/nginx/sockets/*****.sock', :backlog => 2048 timeout 30 preload_app true before_fork do |server, worker| old_pid = pid_file + '.oldbin' if File.exists?(old_pid) && server.pid != old_pid begin Process.kill("QUIT", File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH # someone else did our job for us end end end
配置完成之后,打开工程目录后,运行:unicorn_rails -c config/unicorn.rb -E production
三、nginx反向代理lighttpd
现在要改用 nginx 做 web server,但是有一些老项目用的 lighttpd。
可以用 nginx 反向代理功能,把一些请求叫给 lighttpd 处理
1 修改 lighttpd 的配置文件
# /etc/lighttpd/lighttpd.conf
# 只允许本机访问 server.bind = "localhost" # 从81端口启动 server.port = 81
2 修改 nginx 的配置文件
# /usr/local/nginx/conf/nginx.conf
http { # 新的项目 对应 new.domain.com 域名 server { listen 80; server_name new.domain.com; access_log logs/domain1.access.log main; index index.html; root /var/www/domain1.com/htdocs; } # 旧的项目 对应 old.domain.com 域名 server { listen 80; server_name old.domain.com; location / { proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; # 转发给 81 端口的 lighttpd 处理 proxy_pass http://127.0.0.1:81; } } }
- nginx-0.7.67.tar.gz (594.2 KB)
- 下载次数: 1
- nginx常见应用技术指南.pdf (257.9 KB)
- 下载次数: 72
评论
2 楼
hotsunshine
2011-04-25
夜鸣猪 写道
good
学习留
学习留
小问题:配出来之后的工程,如果长时间不访问会502错误,我们写了脚本,定期去访问这些工程
1 楼
夜鸣猪
2011-04-25
good
学习留
学习留
发表评论
-
反向代理的nginx日志设置显示源ip
2018-12-03 14:35 2349外层代理A设置为 location /*** { ... -
ubuntu下中文文件乱码
2015-12-01 13:36 1442从windows上传上去的文件名如果是中文会有乱码的情况出现, ... -
Redhat远程sftp连接失败
2015-11-23 09:40 2839服务器设置ssh之后,远程sftp连接失败 引用 Connec ... -
Ubuntu下rails程序链接oracle数据库
2015-09-17 15:32 2509rails支持oracle数据库连接 一、下载安装(解压)依 ... -
ubuntu设置为unity 2D
2015-01-29 17:06 1117vbox安装完ubuntu之后,unity 3d支持不好 编 ... -
ubuntu中ruby使用文字生成图片以及汉字不显示(或者乱码)的问题
2014-12-23 10:29 2344ruby中使用IMGKit这个gem可以完成文字以及html生 ... -
alias在bashrc中设置后无效的问题
2014-09-02 09:32 2199在用户目录的.bashrc中添加一一堆alias命令,但是每次 ... -
linux系统性能监控
2014-06-03 16:18 1018linux服务器在运转过程中,总要监控一些性能方面的东西,比如 ... -
Ubuntu的crontab日志
2013-10-12 12:36 1267Ubuntu的crontab日志是关闭的 打开crontab日 ... -
vim安装airline插件
2013-09-02 17:58 7875https://github.com/bling/vim-ai ... -
vim安装FuzzyFinder 插件
2013-09-02 14:29 2429FuzzyFinder 是一个非常强大的Vim插件 安装Fuz ... -
vim安装command-t插件
2013-09-02 13:05 4762commnad-t是一个很好的vim插件 安装的步骤似乎很简 ... -
使用Linux的logrotate拆分rails、nginx的log日志
2013-08-30 10:43 1993使用Linux的logrotate拆分rails、nginx的 ... -
libiconv.so.2 cannot open shared object file: No such file or directory
2013-08-02 17:04 4210libiconv.so.2: cannot open shar ... -
(转)Centos安装Git
2013-03-07 14:37 4285centos安装git 下载源代码安装后,git clo ... -
Curl和Wget访问HTTPS连接出现Unable to establish SSl connection错误
2013-03-07 11:22 34621问题如题: 解决方案: 他们都可以跳过这个验证 wget 使用 ... -
wkhtmltopdf 说明文档
2015-08-17 16:56 3620wkhtmltopdf 0.9.6 Manual This ... -
wkhtmltopdf专成pdf文件之后的页码显示问题
2012-08-29 11:06 3289在页面header或者footer上面添加page(当前页数) ... -
linux的一些命令 -查看cc攻击-网口ip统计等
2014-08-14 09:44 12825Linux判断CC攻击命令详解 2011年12月23日 ⁄ 安 ... -
vim使用笔记
2011-10-28 10:54 23171 首先 安装vim 安装vim很简单的命令 sudo ...
相关推荐
docker-rails-nginx-unicorn Docker Rails + Nginx + Unicorn(来自Ubuntu 16.04和Ruby 2.4.0) 易于使用的docker导轨。 较少的配置,负担得起的生产。 包括什么 独角兽,nginx,领班 mysql,PostgreSQL库 用法 在...
这个包的目的是用于提供一个本地 vagrant 环境,该环境将运行 Nginx + Unicorn 并支持带有 postgres 的 rails 应用程序。 您可以使用 puppet 目录中的 config.yml 文件修改其中的许多设置。 此存
capistrano-nginx-unicorn, 从 Capistrano 创建和管理nginx unicorn配置 Capistrano-Nginx-Unicorn用于配置和管理nginx unicorn的Capistrano 任务 Rails 应用程序的零停机部署的组合。将 Capistrano 任务提供给:...
Unicorn与Nginx结合使用,通常用于Ruby on Rails应用,实现负载均衡和高效的数据处理。 【描述】中的"nginx 1.17.9.1 Unicorn.zip"表明这是一个包含Nginx 1.17.9.1和Unicorn相关配置的压缩包,适用于Windows操作...
在Rails生产环境中,Unicorn通常与Nginx配合工作。创建一个Unicorn配置文件,例如`config/unicorn.rb`,包含以下内容: ```ruby worker_processes 2 timeout 30 APP_PATH = File.expand_path("../..", __FILE__) ...
标题中的“利用Unicorn和Nginx部署Redmine”指的是在服务器上安装并配置Redmine项目管理工具,通过Unicorn作为应用服务器,Nginx作为反向代理和负载均衡器,来提供高效、稳定的服务。这是一个常见的Web应用程序部署...
在部署Rails应用时,还需要考虑性能优化,比如启用HTTP缓存,调整Nginx的连接超时时间,配置Rails应用的线程池大小,以及使用如 unicorn 或 puma 这样的多进程或多线程服务器。 7. **部署工具**: 为了自动化部署...
然而,由于不再活跃维护,现在更多地被Passenger或Unicorn等其他服务器代替,但在本场景中,Mongrel可能是因为历史遗留或特定性能需求被选用。 4. **MySQL**:MySQL是一种流行的关系型数据库管理系统,广泛用于存储...
TheRails部署......Applications > Ruby on Rails on Ubuntu 14.04 (Nginx + Unicorn)查看你的邮件 Your new droplet has been created!You can access it using the following credentials:IP Addres
使用Ansible(1.8)使用Rails 4.1.6,Nginx,Unicorn和PostgreSQL构建单个框。 您可以在同一盒子上部署多个Rails应用程序。 此外,该项目可以创建不同的阶段: 流浪汉的发展 在EC2上测试) 在EC2上暂存(需要使用...
您可能需要按照以下步骤将 ruby on rails 应用程序部署到 Ubuntu + Nginx + Unicorn 环境。 在这里,我将 RVM 安装为多用户模式。 我使用www-data用户来运行我的应用程序(这是 Ubuntu 上 Apache 和 Nginx 的...
rails_stack 食谱 TODO:在此处输入食谱说明。 例如,这本食谱使您最喜欢的早餐三明治。 要求 TODO:列出您的食谱要求。 确保包含本说明书对平台、库、其他说明书、软件包、操作系统等的任何要求。 例如 包裹 ...
本页描述了 Nginx 与 Rails(通过 Unicorn)的配置(示例)。 nginx /etc/nginx/nginx.conf worker_processes 8 ; user nobody nobody; events { worker_connections 4096 ; accept_mutex on ; use epoll ; } ...
9. **Deployment**: 最后,书中还会介绍如何将开发完成的应用部署到生产环境,包括使用Capistrano进行自动化部署、配置服务器环境以及使用Nginx和Unicorn等服务器软件。 通过阅读《敏捷Web开发与Rails:程序指南 第...
5. **Web服务器**:Rails提供了内置的Webrick服务器用于开发,但在生产环境中,推荐使用如Puma、Unicorn或Nginx+Passenger等高性能服务器。 6. **开发工具**:如TextMate、Sublime Text、VS Code或Atom等文本编辑器...
在部署方面,Rails应用通常运行在如Passenger、Unicorn或Puma这样的服务器上,配合Nginx或Apache作为反向代理。Heroku、DigitalOcean和AWS等云平台为Rails应用提供了便捷的部署选项。 总的来说,Ruby on Rails实践...
10. **部署和运维**:如何将Rails应用部署到服务器,如使用Capistrano自动化部署,以及理解Nginx、Unicorn或Puma等Web服务器的工作原理。 11. **版本控制**:Git是Rails开发的标准版本控制系统,学习Git的基本操作...