@akimdi

Не проходит deploy на DigitalOcean c помощью Capistrano?

Делаю по этой инструкции, но ничего не выходит.


Сначала пишет что на сервере у меня нет символической ссылки на файл **database.yml**

00:03 deploy:check:linked_files
    ERROR linked file /home/demo/myproject/shared/config/database.yml does not exist on 188.226.140.17


Прочитал что нужно создать вручную файл **database.yml**

Я создал.

touch /home/demo/myproject/shared/config/database.yml

И вписал туда содержимое:
spoiler
production:
      adapter: postgresql
      encoding: utf8
      database: myproject_db
      username: postgres
      password: 1234567890postgres
      host: localhost
      pool: 5
      min_messages: WARNING

Дальше он пишет что нет символической ссылки на файл **secrets.yml**:

00:03 deploy:check:linked_files
          ERROR linked file /home/demo/myproject/shared/config/secrets.yml does not exist on 188.226.140.17

Создал **secrets.yml** на сервере

touch /home/demo/myproject/shared/config/secrets.yml

И данные перенес те, которые были в проекте в файле **secrets.yml**

# Be sure to restart your server when you modify this file.
    
    # Your secret key is used for verifying the integrity of signed cookies.
    # If you change this key, all old signed cookies will become invalid!
    
    # Make sure the secret is at least 30 characters and all random,
    # no regular words or you'll be exposed to dictionary attacks.
    # You can use `rake secret` to generate a secure secret key.
    
    # Make sure the secrets in this file are kept private
    # if you're sharing your code publicly.
    
    development:
      secret_key_base: 1bbe19e548182eb986995dfef00bb0bb0ed410e25c8cdbf4e9f2e92290ce69f91b84c0fa76fdd50a18d49fea3906f57a0cba9398562fa39492a3472b680d8112
    
    test:
      secret_key_base: ed1b6e6ca1dfd6c1b939414ffd69fa92dadfeb61fe7e819ac7d08c515a169f8648ec29b21e89a34d8649585916b6485dfc74f9eded1ecf83a87e315500e1b64a
    
    # Do not keep production secrets in the repository,
    # instead read values from the environment.
    production:
      secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>


Дальше он пишет что нет символической ссылки на файл **nginx.conf**:

00:03 deploy:check:linked_files
          ERROR linked file /home/demo/myproject/shared/config/nginx.conf does not exist on 188.226.140.17

По поводу файла **nginx.conf** на
Tutorials DigitalOcean написано, что нужно создать ссылку немного в другом месте, не в том, в котором указано у меня в ошибке, а по поводу **secrets.yml** ничего вообще не сказано.

Путь у меня:

/home/demo/myproject/shared/config/nginx.conf

Путь как написано в туториале:

sudo ln -nfs "/home/deploy/apps/appname/current/config/nginx.conf" "/etc/nginx/sites-enabled/appname"

Подставляю в команду вместо **deploy** имя своего юзера и вместо **appname** имя своего приложения. Получается:

sudo ln -nfs "/home/demo/apps/myproject/current/config/nginx.conf" "/etc/nginx/sites-enabled/myproject"

Все равно пишет ошибку:

00:03 deploy:check:linked_files
          ERROR linked file /home/demo/myproject/shared/config/nginx.conf does not exist on 188.226.140.17

Тогда я создаю не ссылку, а файл **nginx.conf**

touch /home/demo/mypoject/shared/config/nginx.conf

И заполняю его следующим содержимым:

spoiler
upstream puma {
      server unix:///home/demo/apps/myproject/shared/tmp/sockets/myproject-puma.sock;
    }
    
    server {
      listen 80 default_server deferred;
      # server_name example.com;
    
      root /home/demo/apps/myproject/current/public;
      access_log /home/demo/apps/myproject/current/log/nginx.access.log;
      error_log /home/demo/apps/myproject/current/log/nginx.error.log info;
    
      location ^~ /assets/ {
        gzip_static on;
        expires max;
        add_header Cache-Control public;
      }
    
      try_files $uri/index.html $uri @puma;
      location @puma {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
    
        proxy_pass http://puma;
      }
    
      error_page 500 502 503 504 /500.html;
      client_max_body_size 10M;
      keepalive_timeout 10;
    }


***И вот тут начинается самое интересное!*** При попытке стянуть gem'ы с помощью Gemfile - деплой зависает. Я сначала думал что это так и должно быть, но после длительного ожидания понял, что здесь что-то не ладно.

00:21 bundler:install
          01 ~/.rvm/bin/rvm default do bundle install --gemfile /home/demo/myproject/releases/20170525093300/Gemfile --path /home/demo/myproject/shared/bundle --without development test --deployment --quiet

Я попытался тогда выполнить команду на сервере напрямую, а не через Capistrano с клиентской машины.

~/.rvm/bin/rvm default do bundle install --gemfile /home/demo/myproject/releases/20170525093300/Gemfile --path /home/demo/myproject/shared/bundle --without development test --deployment --quiet

Вроде бы дальше пошел, но опять начал выдавать ошибки:

00:31 deploy:assets:precompile
          01 ~/.rvm/bin/rvm default do bundle exec rake assets:precompile
          01 rake aborted!
          01 ActiveRecord::AdapterNotSpecified: 'production' database is not configured. Available: []
          01 /home/demo/myproject/shared/bundle/ruby/2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:248:in `resolve_symbol_connection'
          01 /home/demo/myproject/shared/bundle/ruby/2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:211:in `resolve_connection'

Выполняю эту команду на сервере:

demo@test8CPU:~$ ~/.rvm/bin/rvm default do bundle exec rake assets:precompile
Could not locate Gemfile or .bundle/ directory

Но у меня присутствует Gemfile и в репозитории на Github и в моём проекте!

Начал гуглить ошибку и наткнулся на раз
два
три похожих вопроса, сделал как там советовали, но всё равно деплой не проходит. Всё та же ошибка.


Помогите мне пожалуйста. Я в этом деле новичок.
  • Вопрос задан
  • 492 просмотра
Решения вопроса 1
HighQuality
@HighQuality
☁ Ниндзя девелопер
В предлагаемой статье есть метод, который грузит конфиг к базе на сервер с локальной машины

cap production deploy:upload_yml

Выполняю эту команду на сервере:

demo@test8CPU:~$ ~/.rvm/bin/rvm default do bundle exec rake assets:precompile
Could not locate Gemfile or .bundle/ directory

Но у меня присутствует Gemfile и в репозитории на Github и в моём проекте!


Но выполняется команда же не из корня проекта, а из домашней директории пользователя (demo@test8CPU:~$)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы