在我的公司,我们目前有一个主要的项目是一个巨大的Rails应用程序。 部署非常简单,我们有几个Capistrano部署到/var/www/<hostname>/current的前端服务器(使用Puppet进行安装)。 然后重新启动Unicorn(零停机部署!),每个人都很高兴。 不幸的是有一个问题。 应用程序的单一性质开始咬我们。 现在运行所有testing需要30分钟以上,并且正在减慢我们的速度。 我们希望将其分成更小的块,并采用更多的μService体系结构。 不过这让我想起了我们的部署策略。 现在看来: Rails应用程序和Nginx作为www-data用户运行 任何有权访问该框的用户都可以进行部署(在Capistrano中,我们会在部署期间将应用程序的内容分发给用户) 这样做的安全性相当低(一切以同一用户身份运行,每个人都可以访问所有内容)。 这也让我想起我们以前的公司做过的事情 – 这是一个噩梦,因为所有的应用程序都被困在Ruby 1.6上,因为它们共享相同的版本。 我想我们可以通过安装rbenv让每个应用程序运行它自己的Ruby版本,并让每个应用程序的用户来提高安全性。 但是我在实践中还没有真正看到这个例子。 例如, 37signals以同一用户身份运行所有应用程序 – 我担心应用程序不能作为不同用户运行的充分理由。 总结: 在μService风格体系结构中将多个Rails应用程序部署到服务器的最佳方式是什么? 什么是隔离每个应用程序(在Ruby版本和用户安全方面)的最佳方式? 提前致谢!
在使用capistrano进行部署之后,我有一个正在重新启动瘦服务器的部署任务,刚刚部署的更改没有被瘦服务器获取。 即使我手动从新的部署目录运行瘦重新启动命令: bundle exec thin restart -S /tmp/app.sock -e production -d 我可以看到进程更改的PID,但它似乎继续提供旧的部署目录中的文件。 如果我停止瘦服务器,并再次启动它的工作,但我想零宕机部署工作。 作为后续工作,似乎只是使用上次部署所使用的相同代码库进行重新启动。 我尝试使用“ – chdir”强制它使用新的部署目录,但它没有效果。
我有一个rails应用程序通过capistrano在aws ec2实例上部署,并且在服务器上也安装了nginx客户端。 每当我尝试使用提供的DNS或公共IP访问我的应用程序时,我所得到的只是浏览器加载了一段时间而没有响应,甚至没有从nginx的错误页面。 这里是我的nginxconfiguration(/ etc / nginx / sites-enabled / default) server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; server_name <public ip>; passenger_enabled on; rails_env production; root /home/ubuntu/myapp/current/public; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } 在运行命令“sudo nginx”时,这是我得到的回应: […]
试图获得部署的Rails应用程序。 一切安装nginx,独angular兽,设置。 错误获取: [109.etc] env RAILS_ENV=production sh -c 'kill -s USR2 '\''cat /tmp/unicorn.pid'\''' sh: line 0: kill: cat /tmp/unicorn.pid: arguments must be process or job IDs 这怎么解决? 我search了一个小时,阅读了很多文档和博客,仍然没有find解决办法。 deploy.rb # config/deploy.rb require "bundler/capistrano" set :scm, :git set :repository, "[email protected]:/srv/paintings.git" set :branch, "origin/master" set :migrate_target, :current set :ssh_options, { :forward_agent => true } set :rails_env, "production" […]
我想在我的Capistrano部署上创build一个任务,将我的公网IPconfiguration到我的NGINX服务器的地理模块configuration上,而不用重启NGINX,可以吗? 例如,我的/etc/nginx/nginx.conf: geo $geo { default no; include /home/deploy_user/appname/shared/ip_list; } 我将在部署期间提供/ home / deploy_user / appname / shared / ip_list文件。 我需要这个,因为我的公共IP可以改变很多次。 问候,若昂
使用它的工作原理: $ ssh [email protected] password: > echo ping ping 与capistrano: # set :use_sudo, true set :pty, true set :user, 'user' set :password, 'password' set :stage, :production role :web, 'remote.vm.net' task :ping do on roles(:web) do execute 'echo ping' end end 它不: $ cap production ping INFO [7db945a1] Running /usr/bin/env echo ping on remote.vm.net DEBUG [7db945a1] […]
当我尝试通过capistrano部署一个rails应用程序时遇到问题。 以下是我的当前configuration文件与编辑服务器名称: configuration/ deploy.rb lock '3.2.1' set :application, "my_app" set :repo_url, "my.server.example.com:/path/to/my_app.git" set :branch, 'master' set :use_sudo, false set :deploy_to, "/srv/#{fetch(:application)}" configuration/部署/ production.rb role :app, "my.server.example.com" role :web, "my.server.example.com" role :db, "my.server.example.com", :primary => true server 'my.server.example.com', user: 'root', roles: %w{web app}, ssh_options: { user: 'me', # overrides user setting above keys: %w(/home/me/.ssh/id_rsa), forward_agent: false, […]
我一直在寻找工具来replace一些旧版脚本,用于在大学计算机实验室生态系统中创build和维护帐户,其中包括如下内容: LDAP和Kerberos进行身份validation 用户家庭存储和网页 SQL数据库上的条目 打印配额 邮寄名单等 如果可能,我还想自动化Kerberos和Puppet的机器和VM成员资格。 我发现了Capistrano,尽pipe通过SSH在远程主机上运行任务的基本原理似乎是合适的,而Ruby中的DSL看起来相当不错,但我发现大多数文档与应用程序部署有关,而不是通用任务。 我也不知道有任何好的方法来参数化任务,所以我可以传递用户信息进行创build。 是关于卡皮斯特拉诺我失踪,还是不是这个工作的正确工具? 有没有更多的用户select?
我想分发一些我的计算机程序在多台机器上,当一个特定的进程从web gui启动时。 为此,我需要启动几个aws e2c机器,部署我的软件(docker),运行程序,然后再closurese2c实例。 在任何时候,我想有一个API来查询集群的状态(可视化在我自己的Web GUI中的ruby on rails上)。 现在我已经看到了像卡皮斯特拉诺,绝食,厨师,傀儡这样的几个系统…但是由于我对这个主题很陌生,所以我很难为我的任务select一个系统。 我希望保持pipe理简单,不要过分深入基础设施科学。 有人可以推荐一个最适合所描述的任务的特定系统吗?
当我login我的ArchLinux服务器并键入: $echo $PATH I get… /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin/core_perl 但是,当我没有login,并尝试: ssh myyser@mysever 'echo $PATH' i get.. /usr/bin:/bin:/usr/sbin:/sbin PATH在我的/ etc / profile中是正确的,但ssh似乎没有加载。 有没有办法解决所有的用户/ SSH会话? 当我使用Ubuntu的时候不会发生这种情况 按照Eugene Mayevski的EldoS Corp的build议在这里发帖