OpsWorks 中的部署问题

Posted

技术标签:

【中文标题】OpsWorks 中的部署问题【英文标题】:Problems deploying in OpsWorks 【发布时间】:2015-03-20 16:51:26 【问题描述】:

我创建了一个新的 Rails 应用程序并且我已经这样做了:

我将“sqlite3”gem 更改为“mysql2”并添加了“unicorn”。 我将应用程序推送到 bitbucket 我在 OpsWorks 中创建了 Stack、Rails 层并初始化了实例,还创建了应用程序(Ruby on rails 类型)并将其链接到 bitbucket 存储库。

然后,当我尝试进行第一次部署时,我收到以下错误:

    [2015-01-22T00:11:16+00:00] INFO: Starting chef-zero on port 8889 with repository at repository at /opt/aws/opsworks/current
    One version per cookbook
    data_bags at /var/lib/aws/opsworks/data/data_bags
    nodes at /var/lib/aws/opsworks/data/nodes

    [2015-01-22T00:11:17+00:00] INFO: Forking chef instance to converge...
    [2015-01-22T00:11:17+00:00] INFO: *** Chef 11.10.4 ***
    [2015-01-22T00:11:17+00:00] INFO: Chef-client pid: 3826
    [2015-01-22T00:11:17+00:00] INFO: Setting the run_list to ["opsworks_custom_cookbooks::load", "opsworks_custom_cookbooks::execute"] from JSON
    [2015-01-22T00:11:17+00:00] WARN: Run List override has been provided.
    [2015-01-22T00:11:17+00:00] WARN: Original Run List: [recipe[opsworks_custom_cookbooks::load], recipe[opsworks_custom_cookbooks::execute]]
    [2015-01-22T00:11:17+00:00] WARN: Overridden Run List: [recipe[opsworks_custom_cookbooks::load], recipe[opsworks_custom_cookbooks::execute]]
    [2015-01-22T00:11:17+00:00] INFO: Run List is [recipe[opsworks_custom_cookbooks::load], recipe[opsworks_custom_cookbooks::execute]]
    [2015-01-22T00:11:17+00:00] INFO: Run List expands to [opsworks_custom_cookbooks::load, opsworks_custom_cookbooks::execute]
    [2015-01-22T00:11:17+00:00] INFO: Starting Chef Run for rails-app1.localdomain
    [2015-01-22T00:11:17+00:00] INFO: Running start handlers
    [2015-01-22T00:11:17+00:00] INFO: Start handlers complete.
    [2015-01-22T00:11:17+00:00] INFO: HTTP Request Returned 404 Not Found: Object not found: /reports/nodes/rails-app1.localdomain/runs
    [2015-01-22T00:11:22+00:00] INFO: Loading cookbooks [apache2, dependencies, deploy, gem_support, mod_php5_apache2, mysql, nginx, opsworks_agent_monit, opsworks_aws_flow_ruby, opsworks_berkshelf, opsworks_bundler, opsworks_commons, opsworks_custom_cookbooks, opsworks_initial_setup, opsworks_java, opsworks_nodejs, opsworks_rubygems, packages, passenger_apache2, php, rails, ruby, scm_helper, ssh_users, unicorn]
    [2015-01-22T00:11:23+00:00] INFO: Not needed with Chef 11.x (x >= 8) anymore.
    [2015-01-22T00:11:23+00:00] INFO: Processing directory[/opt/aws/opsworks/current/site-cookbooks] action delete (opsworks_custom_cookbooks::load line 4)
    [2015-01-22T00:11:23+00:00] INFO: Processing ruby_block[merge all cookbooks sources] action run (opsworks_custom_cookbooks::load line 12)
    [2015-01-22T00:11:23+00:00] INFO: ruby_block[merge all cookbooks sources] called
    [2015-01-22T00:11:23+00:00] WARN: Skipping final node save because override_runlist was given
    [2015-01-22T00:11:23+00:00] INFO: Chef Run complete in 5.728910816 seconds
    [2015-01-22T00:11:23+00:00] INFO: Running report handlers
    [2015-01-22T00:11:23+00:00] INFO: Report handlers complete

    ---

    [2015-01-22T00:11:23+00:00] INFO: Starting chef-zero on port 8889 with repository at repository at /opt/aws/opsworks/current
    One version per cookbook
    data_bags at /var/lib/aws/opsworks/data/data_bags
    nodes at /var/lib/aws/opsworks/data/nodes

    [2015-01-22T00:11:24+00:00] INFO: Forking chef instance to converge...
    [2015-01-22T00:11:24+00:00] INFO: *** Chef 11.10.4 ***
    [2015-01-22T00:11:24+00:00] INFO: Chef-client pid: 3971
    [2015-01-22T00:11:24+00:00] INFO: Setting the run_list to ["opsworks_custom_cookbooks::load", "opsworks_custom_cookbooks::execute"] from JSON
    [2015-01-22T00:11:24+00:00] WARN: Run List override has been provided.
    [2015-01-22T00:11:24+00:00] WARN: Original Run List: [recipe[opsworks_custom_cookbooks::load], recipe[opsworks_custom_cookbooks::execute]]
    [2015-01-22T00:11:24+00:00] WARN: Overridden Run List: [recipe[deploy::default], recipe[opsworks_stack_state_sync], recipe[deploy::rails], recipe[test_suite], recipe[opsworks_cleanup]]
    [2015-01-22T00:11:24+00:00] INFO: Run List is [recipe[deploy::default], recipe[opsworks_stack_state_sync], recipe[deploy::rails], recipe[test_suite], recipe[opsworks_cleanup]]
    [2015-01-22T00:11:24+00:00] INFO: Run List expands to [deploy::default, opsworks_stack_state_sync, deploy::rails, test_suite, opsworks_cleanup]
    [2015-01-22T00:11:24+00:00] INFO: Starting Chef Run for rails-app1.localdomain
    [2015-01-22T00:11:24+00:00] INFO: Running start handlers
    [2015-01-22T00:11:24+00:00] INFO: Start handlers complete.
    [2015-01-22T00:11:24+00:00] INFO: HTTP Request Returned 404 Not Found: Object not found: /reports/nodes/rails-app1.localdomain/runs
    [2015-01-22T00:11:29+00:00] INFO: Loading cookbooks [apache2, dependencies, deploy, gem_support, mod_php5_apache2, mysql, nginx, opsworks_agent_monit, opsworks_aws_flow_ruby, opsworks_bundler, opsworks_cleanup, opsworks_commons, opsworks_initial_setup, opsworks_java, opsworks_nodejs, opsworks_rubygems, opsworks_stack_state_sync, packages, passenger_apache2, php, rails, ruby, scm_helper, ssh_users, test_suite, unicorn]

   ...removed some code for *** body limitation

    [2015-01-22T00:11:32+00:00] INFO: file[/home/deploy/.ssh/config] updated atime and mtime to 2015-01-22 00:11:32 +0000
    [2015-01-22T00:11:32+00:00] INFO: Processing execute[echo 'StrictHostKeyChecking no' > /home/deploy/.ssh/config] action run (deploy::rails line 23)
    [2015-01-22T00:11:32+00:00] INFO: execute[echo 'StrictHostKeyChecking no' > /home/deploy/.ssh/config] ran successfully
    [2015-01-22T00:11:32+00:00] INFO: Processing template[/home/deploy/.ssh/id_dsa] action create (deploy::rails line 27)
    [2015-01-22T00:11:32+00:00] INFO: template[/home/deploy/.ssh/id_dsa] created file /home/deploy/.ssh/id_dsa
    [2015-01-22T00:11:32+00:00] INFO: template[/home/deploy/.ssh/id_dsa] updated file contents /home/deploy/.ssh/id_dsa
    [2015-01-22T00:11:32+00:00] INFO: template[/home/deploy/.ssh/id_dsa] owner changed to 4000
    [2015-01-22T00:11:32+00:00] INFO: template[/home/deploy/.ssh/id_dsa] group changed to 497
    [2015-01-22T00:11:32+00:00] INFO: template[/home/deploy/.ssh/id_dsa] mode changed to 600
    [2015-01-22T00:11:32+00:00] INFO: Processing directory[/srv/www/ariadna/shared/cached-copy] action delete (deploy::rails line 48)
    [2015-01-22T00:11:32+00:00] INFO: Processing ruby_block[change HOME to /home/deploy for source checkout] action run (deploy::rails line 56)
    [2015-01-22T00:11:32+00:00] INFO: ruby_block[change HOME to /home/deploy for source checkout] called
    [2015-01-22T00:11:32+00:00] INFO: Processing deploy[/srv/www/ariadna] action deploy (deploy::rails line 65)
    [2015-01-22T00:11:34+00:00] INFO: deploy[/srv/www/ariadna] cloning repo git@bitbucket.org:viktorpr7/ariadna-beta.git to /srv/www/ariadna/shared/cached-copy
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] checked out branch: master onto: deploy reference: 6450219b5689de565864424e4fe48da22700e088
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] synchronizing git submodules
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] enabling git submodules
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] set user to deploy
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] set group to nginx
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] copied the cached checkout to /srv/www/ariadna/releases/20150122001132
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] set user to deploy
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] set group to nginx
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] running callback before_migrate
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] created directories before symlinking: tmp,public,config
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] linked shared paths into current release: system => public/system, pids => tmp/pids, log => log
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] made pre-migration symlinks
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] set user to deploy
    [2015-01-22T00:11:36+00:00] INFO: deploy[/srv/www/ariadna] set group to nginx
    [2015-01-22T00:11:36+00:00] INFO: Gemfile detected. Running bundle install.
    [2015-01-22T00:11:36+00:00] INFO: sudo su - deploy -c 'cd /srv/www/ariadna/releases/20150122001132 && /usr/local/bin/bundle install --path /home/deploy/.bundler/ariadna --without=test development'

    ================================================================================
    Error executing action `deploy` on resource 'deploy[/srv/www/ariadna]'
    ================================================================================


    Mixlib::ShellOut::ShellCommandFailed
    ------------------------------------
    Expected process to exit with [0], but received '5'
    ---- Begin output of sudo su - deploy -c 'cd /srv/www/ariadna/releases/20150122001132 && /usr/local/bin/bundle install --path /home/deploy/.bundler/ariadna --without=test development' 2>&1 ----
    STDOUT: Fetching gem metadata from https://rubygems.org/...........
    Installing rake (10.4.2)
    Installing i18n (0.7.0)
    Installing json (1.8.2)
    Installing minitest (5.5.1)
    Installing thread_safe (0.3.4)
    Installing tzinfo (1.2.2)
    Installing activesupport (4.1.9)
    Installing builder (3.2.2)
    Installing erubis (2.7.0)
    Installing actionview (4.1.9)
    Installing rack (1.5.2)
    Installing rack-test (0.6.3)
    Installing actionpack (4.1.9)
    Installing mime-types (2.4.3)
    Installing mail (2.6.3)
    Installing actionmailer (4.1.9)
    Installing activemodel (4.1.9)
    Installing arel (5.0.1.20140414130214)
    Installing activerecord (4.1.9)
    Installing coffee-script-source (1.8.0)
    Installing execjs (2.2.2)
    Installing coffee-script (2.3.0)
    Installing thor (0.19.1)
    Installing railties (4.1.9)
    Installing coffee-rails (4.0.1)
    Installing hike (1.2.3)
    Installing multi_json (1.10.1)
    Installing jbuilder (2.2.6)
    Installing jquery-rails (3.1.2)
    Installing kgio (2.9.2)

    Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /usr/local/bin/ruby extconf.rb 
    checking for ruby/thread.h... yes
    checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
    checking for rb_thread_blocking_region()... yes
    checking for rb_wait_for_single_fd()... yes
    checking for rb_hash_dup()... yes
    checking for rb_intern3()... yes
    checking for mysql_query() in -lmysqlclient... no
    checking for main() in -lm... yes
    checking for mysql_query() in -lmysqlclient... no
    checking for main() in -lz... yes
    checking for mysql_query() in -lmysqlclient... no
    checking for main() in -lsocket... no
    checking for mysql_query() in -lmysqlclient... no
    checking for main() in -lnsl... yes
    checking for mysql_query() in -lmysqlclient... no
    checking for main() in -lmygcc... no
    checking for mysql_query() in -lmysqlclient... no
    *** extconf.rb failed ***
    Could not create Makefile due to some reason, probably lack of necessary
    libraries and/or headers.  Check the mkmf.log file for more details.  You may
    need configuration options.

    Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=$opt-dir/include
    --with-opt-lib
    --without-opt-lib=$opt-dir/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/local/bin/ruby
    --with-mysql-dir
    --without-mysql-dir
    --with-mysql-include
    --without-mysql-include=$mysql-dir/include
    --with-mysql-lib
    --without-mysql-lib=$mysql-dir/lib
    --with-mysql-config
    --without-mysql-config
    --with-mysql-dir
    --without-mysql-dir
    --with-mysql-include
    --without-mysql-include=$mysql-dir/include
    --with-mysql-lib
    --without-mysql-lib=$mysql-dir/lib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mlib
    --without-mlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-zlib
    --without-zlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-socketlib
    --without-socketlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-nsllib
    --without-nsllib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mygcclib
    --without-mygcclib
    --with-mysqlclientlib
    --without-mysqlclientlib

    extconf failed, exit code 1

    Gem files will remain installed in /home/deploy/.bundler/ariadna/ruby/2.1.0/gems/mysql2-0.3.16 for inspection.
    Results logged to /home/deploy/.bundler/ariadna/ruby/2.1.0/extensions/x86_64-linux/2.1.0/mysql2-0.3.16/gem_make.out
    An error occurred while installing mysql2 (0.3.16), and Bundler cannot continue.
    Make sure that `gem install mysql2 -v '0.3.16'` succeeds before bundling.
    STDERR: 
    ---- End output of sudo su - deploy -c 'cd /srv/www/ariadna/releases/20150122001132 && /usr/local/bin/bundle install --path /home/deploy/.bundler/ariadna --without=test development' 2>&1 ----
    Ran sudo su - deploy -c 'cd /srv/www/ariadna/releases/20150122001132 && /usr/local/bin/bundle install --path /home/deploy/.bundler/ariadna --without=test development' 2>&1 returned 5


    Cookbook Trace:
    ---------------
    /var/lib/aws/opsworks/cache.stage2/cookbooks/opsworks_commons/libraries/shellout.rb:8:in `shellout'
    /var/lib/aws/opsworks/cache.stage2/cookbooks/rails/libraries/rails_configuration.rb:41:in `bundle'
    /var/lib/aws/opsworks/cache.stage2/cookbooks/deploy/definitions/opsworks_deploy.rb:105:in `block (3 levels) in from_file'


    Resource Declaration:
    ---------------------
    # In /var/lib/aws/opsworks/cache.stage2/cookbooks/deploy/definitions/opsworks_deploy.rb

    65:     deploy deploy[:deploy_to] do
    66:       provider Chef::Provider::Deploy.const_get(deploy[:chef_provider])
    67:       keep_releases deploy[:keep_releases]
    68:       repository deploy[:scm][:repository]
    69:       user deploy[:user]
    70:       group deploy[:group]
    71:       revision deploy[:scm][:revision]
    72:       migrate deploy[:migrate]
    73:       migration_command deploy[:migrate_command]
    74:       environment deploy[:environment].to_hash
    75:       purge_before_symlink(deploy[:purge_before_symlink]) unless deploy[:purge_before_symlink].nil?
    76:       create_dirs_before_symlink(deploy[:create_dirs_before_symlink])
    77:       symlink_before_migrate(deploy[:symlink_before_migrate])
    78:       symlinks(deploy[:symlinks]) unless deploy[:symlinks].nil?
    79:       action deploy[:action]
    80: 
    81:       if deploy[:application_type] == 'rails' && node[:opsworks][:instance][:layers].include?('rails-app')
    82:         restart_command "sleep #deploy[:sleep_before_restart] && #node[:opsworks][:rails_stack][:restart_command]"
    83:       end
    84: 



    Compiled Resource:
    ------------------
    # Declared in /var/lib/aws/opsworks/cache.stage2/cookbooks/deploy/definitions/opsworks_deploy.rb:65:in `block in from_file'

    deploy("/srv/www/ariadna") do
    params :deploy_data=>"deploy_to"=>"/srv/www/ariadna", "chef_provider"=>"Timestamped", "keep_releases"=>5, "current_path"=>"/srv/www/ariadna/current", "document_root"=>"public", "ignore_bundler_groups"=>["test", "development"], "absolute_document_root"=>"/srv/www/ariadna/current/public/", "rake"=>"/usr/local/bin/rake", "migrate"=>true, "migrate_command"=>"if [ -f Gemfile ]; then echo 'OpsWorks: Gemfile found - running migration with bundle exec' && /usr/local/bin/bundle exec /usr/local/bin/rake db:migrate; else echo 'OpsWorks: no Gemfile - running plain migrations' && /usr/local/bin/rake db:migrate; fi", "rails_env"=>"production", "action"=>"deploy", "user"=>"deploy", "group"=>"nginx", "shell"=>"/bin/bash", "home"=>"/home/deploy", "sleep_before_restart"=>0, "stack"=>"needs_reload"=>true, "enable_submodules"=>true, "shallow_clone"=>false, "delete_cached_copy"=>true, "purge_before_symlink"=>["log", "tmp/pids", "public/system"], "create_dirs_before_symlink"=>["tmp", "public", "config"], "symlink_before_migrate"=>"config/database.yml"=>"config/database.yml", "config/memcached.yml"=>"config/memcached.yml", "symlinks"=>"system"=>"public/system", "pids"=>"tmp/pids", "log"=>"log", "environment"=>"RAILS_ENV"=>"production", "RUBYOPT"=>"", "RACK_ENV"=>"production", "HOME"=>"/home/deploy", "environment_variables"=>, "ssl_support"=>false, "auto_npm_install_on_deploy"=>true, "nodejs"=>"restart_command"=>"monit restart node_web_app_ariadna", "stop_command"=>"monit stop node_web_app_ariadna", "port"=>80, "application"=>"ariadna", "application_type"=>"rails", "auto_bundle_on_deploy"=>true, "deploying_user"=>"arn:aws:iam::673556511701:root", "domains"=>["ariadna"], "mounted_at"=>nil, "restart_command"=>nil, "ssl_certificate"=>nil, "ssl_certificate_key"=>nil, "ssl_certificate_ca"=>nil, "scm"=>"scm_type"=>"git", "repository"=>"git@bitbucket.org:viktorpr7/ariadna-beta.git", "revision"=>"master", "ssh_key"=>"-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA56JKs1w7Bvvq4eRElpPcIQCLTIKD6JrnyuKA2RbNrRxTWX8k\n3rtk9MQabphAfc6yN/Upe4bOqakeiGjTNEnrOGM1qKa2YALFSH9ZfuulfMI4+hLd\ns9vsD5mlMi92ZmitwiAlqe0jhXQyO+6OfHIASY0kuThfCZnRMyHiRzUEeacpatSh\nE8Ygy2SIQBrYQ9XuhwMCWMIuT1IbgdUi5B4JLrj74hfFimW5aH1wRBqPkprfHVfg\n8YPGWKU+rLZMO9IA7OtpCUvXQGryyMQsOB5b/w3aCg4GlWmRVtcGONd8kW0vourg\nGJO7VDGZ3Y1m8PEryjncWTQwyv+XKu6+i5tmTQIDAQABAoIBAAbOqC9ZOIreAGsf\nEDz0n3WA1JctBr9hPgqiWXMHzoeV24U3zVeWXkMrODOj2dFYr7ghRlTRA2XNCI6t\ntfdFbNo9YChSre1oZ2/X/kNSnYxrEM2YnFda0TcsJsSwzGP6E5Eu7Kxvwal8XrWQ\nLzPNDeEbesbOt0xK7vD3v/SjxDvm9WqKVbf14eCqN1EYxOSTq4SqWq9+NvogAG09\ny2xyfSK5G5QsbJ41CGLxBSsk1SRyFvgXgHUPI05Gqz4EV8mKhp5nD9n7KYtbOH5I\nD7XvnlTLQNclB2db6+1zp0YWGbHgMoIZScPUI6XE653uXUNg5TuDV+lHnQVouANC\nqS+0BUECgYEA86tf65jH4f1uDN140LjDgmCMgb4IjpyfNDZ7M6iXtvpLJn8w2MRo\nuYOUDqEOWpYY6uYs4tEPgdmO786G3JgxAgzHWCgK9go+IS6BMjIRT77LjtJCHwF0\nZEF5q14zKDycuCcJiI80Oteo2p9xUQ0bZfAiQqgyOdLQF/2++zjMHdkCgYEA81sA\nxSAhW3EscvhJgeoqmdRWKBnw2u8t6YWKOm6TqxlIC3JR85nn622hU0KMk***y4S6\nvKgVlNtV6CoA8NnRW0NXEpoj93kQZPEdwrrol8KS5AVOF2B5qD+wMwNl4xafgHuk\nN8DyDA//ZDarNlssnrhBJbRCyehFGzmXYS5+35UCgYEAzk9+0pq0Oqr6P9hRD+Aw\nYTZgIQYGdsEzpuCuJcoMUrfPY1PzxsVdqh03Ab/pyFcn19N1k8HQ8G+FL5Pc6e/O\nJt8s9X5J8ZIwkqWubBKqR6vS7CUoKNpxcuVhH/CNPfc79kvPLZmabmvkot628ho3\n5XKRf4CrrfvJh1aoGks3v9kCgYEArwJkJF+9/X//YlMyse5QYr50k3RMZXaawxTZ\nWrpJEkQlLq4xR4oIYqQ93529b4ogNtumW6RZmOq/9i227X8H86UTCnq1oPR8mMta\nBr/aI8G3V6qFBYTJGPlsYtNvw4dyf7jrWXk12PzsQwqZyIZ7KU4C8/WWDpQulqyt\nNCN29J0CgYEAyUPOorkU1iwlg6pBgBKm5GVq8YGb8INzODrox+u8MJRFHT6BujY1\nQnF3sy84OWW9x79PQmzvYSpjVsD3GtIcvd4mDQ5GdB+XJaldO//3LhQl9yNG/OAd\nodNSsgut3SfHUR5uCb06Q+FJo8CHus/r1vzNpfL9er01RpXhVZOYUoY=\n-----END RSA PRIVATE KEY-----", "user"=>nil, "password"=>nil, "database"=>, "memcached"=>"host"=>nil, "port"=>11211, :app=>"ariadna", :name=>nil
    provider Chef::Provider::Deploy::Timestamped
    action [:deploy]
    updated true
    updated_by_last_action true
    retries 0
    retry_delay 2
    deploy_to "/srv/www/ariadna"
    environment "RAILS_ENV"=>"production", "RUBYOPT"=>"", "RACK_ENV"=>"production", "HOME"=>"/home/deploy"
    repository_cache "cached-copy"
    purge_before_symlink ["log", "tmp/pids", "public/system"]
    create_dirs_before_symlink ["tmp", "public", "config"]
    symlink_before_migrate "config/database.yml"=>"config/database.yml", "config/memcached.yml"=>"config/memcached.yml"
    symlinks "system"=>"public/system", "pids"=>"tmp/pids", "log"=>"log"
    revision "master"
    migrate true
    remote "origin"
    enable_submodules true
    scm_provider Chef::Provider::Git
    keep_releases 5
    enable_checkout true
    checkout_branch "deploy"
    cookbook_name "deploy"
    recipe_name "rails"
    repo "git@bitbucket.org:viktorpr7/ariadna-beta.git"
    user "deploy"
    group "nginx"
    migration_command "if [ -f Gemfile ]; then echo 'OpsWorks: Gemfile found - running migration with bundle exec' && /usr/local/bin/bundle exec /usr/local/bin/rake db:migrate; else echo 'OpsWorks: no Gemfile - running plain migrations' && /usr/local/bin/rake db:migrate; fi"
    restart_command "sleep 0 && ../../shared/scripts/unicorn clean-restart"
    before_migrate #<Proc:0x007f21fcfabcc8@/var/lib/aws/opsworks/cache.stage2/cookbooks/deploy/definitions/opsworks_deploy.rb:100>
    shared_path "/srv/www/ariadna/shared"
    destination "/srv/www/ariadna/shared/cached-copy"
    current_path "/srv/www/ariadna/current"
    end



    [2015-01-22T00:12:05+00:00] INFO: Running queued delayed notifications before re-raising exception
    [2015-01-22T00:12:05+00:00] ERROR: Running exception handlers
    [2015-01-22T00:12:05+00:00] ERROR: Exception handlers complete
    [2015-01-22T00:12:05+00:00] FATAL: Stacktrace dumped to /var/lib/aws/opsworks/cache.stage2/chef-stacktrace.out
    [2015-01-22T00:12:05+00:00] ERROR: deploy[/srv/www/ariadna] (deploy::rails line 65) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '5'
    ---- Begin output of sudo su - deploy -c 'cd /srv/www/ariadna/releases/20150122001132 && /usr/local/bin/bundle install --path /home/deploy/.bundler/ariadna --without=test development' 2>&1 ----
    STDOUT: Fetching gem metadata from https://rubygems.org/...........
    Installing rake (10.4.2)
    Installing i18n (0.7.0)
    Installing json (1.8.2)
    Installing minitest (5.5.1)
    Installing thread_safe (0.3.4)
    Installing tzinfo (1.2.2)
    Installing activesupport (4.1.9)
    Installing builder (3.2.2)
    Installing erubis (2.7.0)
    Installing actionview (4.1.9)
    Installing rack (1.5.2)
    Installing rack-test (0.6.3)
    Installing actionpack (4.1.9)
    Installing mime-types (2.4.3)
    Installing mail (2.6.3)
    Installing actionmailer (4.1.9)
    Installing activemodel (4.1.9)
    Installing arel (5.0.1.20140414130214)
    Installing activerecord (4.1.9)
    Installing coffee-script-source (1.8.0)
    Installing execjs (2.2.2)
    Installing coffee-script (2.3.0)
    Installing thor (0.19.1)
    Installing railties (4.1.9)
    Installing coffee-rails (4.0.1)
    Installing hike (1.2.3)
    Installing multi_json (1.10.1)
    Installing jbuilder (2.2.6)
    Installing jquery-rails (3.1.2)
    Installing kgio (2.9.2)

    Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /usr/local/bin/ruby extconf.rb 
    checking for ruby/thread.h... yes
    checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
    checking for rb_thread_blocking_region()... yes
    checking for rb_wait_for_single_fd()... yes
    checking for rb_hash_dup()... yes
    checking for rb_intern3()... yes
    checking for mysql_query() in -lmysqlclient... no
    checking for main() in -lm... yes
    checking for mysql_query() in -lmysqlclient... no
    checking for main() in -lz... yes
    checking for mysql_query() in -lmysqlclient... no
    checking for main() in -lsocket... no
    checking for mysql_query() in -lmysqlclient... no
    checking for main() in -lnsl... yes
    checking for mysql_query() in -lmysqlclient... no
    checking for main() in -lmygcc... no
    checking for mysql_query() in -lmysqlclient... no
    *** extconf.rb failed ***
    Could not create Makefile due to some reason, probably lack of necessary
    libraries and/or headers.  Check the mkmf.log file for more details.  You may
    need configuration options.

    Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=$opt-dir/include
    --with-opt-lib
    --without-opt-lib=$opt-dir/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/local/bin/ruby
    --with-mysql-dir
    --without-mysql-dir
    --with-mysql-include
    --without-mysql-include=$mysql-dir/include
    --with-mysql-lib
    --without-mysql-lib=$mysql-dir/lib
    --with-mysql-config
    --without-mysql-config
    --with-mysql-dir
    --without-mysql-dir
    --with-mysql-include
    --without-mysql-include=$mysql-dir/include
    --with-mysql-lib
    --without-mysql-lib=$mysql-dir/lib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mlib
    --without-mlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-zlib
    --without-zlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-socketlib
    --without-socketlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-nsllib
    --without-nsllib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mygcclib
    --without-mygcclib
    --with-mysqlclientlib
    --without-mysqlclientlib

    extconf failed, exit code 1

    Gem files will remain installed in /home/deploy/.bundler/ariadna/ruby/2.1.0/gems/mysql2-0.3.16 for inspection.
    Results logged to /home/deploy/.bundler/ariadna/ruby/2.1.0/extensions/x86_64-linux/2.1.0/mysql2-0.3.16/gem_make.out
    An error occurred while installing mysql2 (0.3.16), and Bundler cannot continue.
    Make sure that `gem install mysql2 -v '0.3.16'` succeeds before bundling.
    STDERR: 
    ---- End output of sudo su - deploy -c 'cd /srv/www/ariadna/releases/20150122001132 && /usr/local/bin/bundle install --path /home/deploy/.bundler/ariadna --without=test development' 2>&1 ----
    Ran sudo su - deploy -c 'cd /srv/www/ariadna/releases/20150122001132 && /usr/local/bin/bundle install --path /home/deploy/.bundler/ariadna --without=test development' 2>&1 returned 5
    [2015-01-22T00:12:05+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

更新:

我使用的是 Ubuntu 14.04,我添加了 libmysqlclient-dev 但尝试部署时仍然出现同样的错误,在这里你可以看到层配置:

我需要重启实例

【问题讨论】:

【参考方案1】:

您需要安装相关的操作系统包。

步骤:

    登录 Opsworks 点击左侧边栏的Layers。 在Rails App Server(或任何您的服务器)中找到并单击Recipes。 点击Edit按钮。 从那里到底部,您必须添加所需的包。

我认为会是:

mysql-devel
mysql

编辑您稍后在问题中添加的正确包是libmysqlclient-dev

这应该可以解决您的问题。

【讨论】:

【参考方案2】:

您需要安装 mysql 客户端库。确切的包名称因操作系统而异,但类似于package 'mysql-client-dev'

【讨论】:

以上是关于OpsWorks 中的部署问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 opsworks 部署时仅在特定层中的第一个实例上运行命令?

如何使用 Opsworks(亚马逊)使用“自定义”层部署 python 应用程序?

每次都在 AWS opsworks 上进行部署

如何将应用程序限制为 AWS Opsworks 中的一种类型的层?

OpsWorks / Chef PHP 部署流程

OpsWorks 在部署时运行挂钩