@Dimka5

Как настроить сервера не от root и файл настроек Caistrano для проекта на NodeJS, что бы успешно развернуть приложение?

Сразу говорю что во всём этом новичок, делаю это всё первый раз, не знаю как надо, так что хочется максимально подробного ответа.
Хочу развернуть NodeJS приложение на тестовом сервере, а затем на боевом.
Что я хочу и что есть сейчас
К - компьютер
К1 - на Windows, здесь редактирую код в VSCode и отсюда пишу cap ... deploy и получаю удалённый доступ по SSH к остальным
K2 - виртуалка с CentOS 6.1 на нём настроен и работает GitLab с уже загруженным репозиторием проекта, создан пользователь с правами администратора (nameusr ALL=(ALL) ALL), не добавлен в группу wheel (кажется это более безопасно), к root удалённый доступ закрыл
К3 - виртуалка c CentOS 6.1 это тестовый сервер приложения, там есть nvm, node, npm, собранный Git (2.19.0), nginx, пользоваель сделан так же
K4 - сервер VPS, боевой, пока не задействуется, тренируюсь на тестовом.
Всё настраивал сам. Хочется приблизится к реальной разработке.

Итак на К1 проект с подключённым Git и с Capistrano для развёртывания. Я не понимаю что писать в конфигах deploy.rb, production.rb и как создать и заставить работать какой нибудь dev.rb, не понимаю какими они должны быть. Однако когда я использовал root на машинах я писал cap production deploy и всё как то работало, сменил на других пользователей сразу пошли ошибки доступа, многие я решил и упёрся в последнюю ума не приложу как разрешить доступ (с linux почти нет опыта).
(названия сейчас не очень соответсвуют действительности)
# Файл deploy.rb
lock "~> 3.11.0"

set :application, "nameproject"
set :repo_url, "http://000.000.000.002/root/nameproject.git" # Это K2
set :password, "****" # Тут я сделал пароль что бы постоянно его не вводить но так не делают, верно?
# Какой-то SSH ключ надо? как это делается? куда его в Capistrano вписывать?

# Путь на К3 где хранится проект
set :deploy_to, "/var/www/nameproject/data/www/nameproject"

task :dev do
  on "user@000.000.000.003" do # настроен на К3
    execute "node #{release_path}/index.js" # пока без PM2 просто через node
  end
end

after "deploy:cleanup", :dev # Получилось запустить приложение после этого шага,
# после какого надо не знаю, подскажите

# Файл production.rb # Но по существу это должен быть dev.rb, я не знаю как Capistrano подхватывает
# файлы что бы написать cap dev deploy
server "000.000.000.003", user: "username", password: "****", roles: %w{app web}
# Тут тоже нужен SSH ключ? А его куда?

Как разделить на файлы и подключить dev.rb для K3 и production.rb для K4?
Ошибка
Сейчас, с этими конфигами и настройками серверов возникает ошибка при выполнении с K1 cap production deploy Получается что при выполнении команды
git ls-remote http://000.000.000.002/root/nameproject.git HEAD
с К3, то есть с тестового сервера я так понимаю идёт запрос к K2 где GitLab и на это не хватает прав, верно я понял? Но если я зайду через удалённый доступ на K3 и выполню такую же команду, введу логин и пароль от root(он такой по умолчанию) аккаунта в GitLab, всё сработает. Не пойму что делать с правами?
PS D:\путь к проекту> cap production deploy
00:00 git:wrapper
      01 mkdir -p /tmp
    ✔ 01 userK3@000.000.000.003 10.899s
      Uploading /tmp/git-ssh-nameproject-production-winusr.sh 100.0%
      02 chmod 700 /tmp/git-ssh-nameproject-production-winusr.sh
    ✔ 02 userK3@000.000.000.003 0.421s
00:11 git:check
      01 git ls-remote http://000.000.000.002/root/nameproject.git HEAD
      01 remote: HTTP Basic: Access denied
      01 fatal: Authentication failed for 'http://000.000.000.002/root/nameproject.git/'
#<Thread:0x00000000044c0e88@C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sshkit-1.17.0/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
        1: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sshkit-1.17.0/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute'
C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sshkit-1.17.0/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as userK3@000.000.000.003: git
exit status: 128 (SSHKit::Runner::ExecuteError)
git stdout: Nothing written
git stderr: remote: HTTP Basic: Access denied
fatal: Authentication failed for 'http://000.000.000.002/root/nameproject.git/'
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as userK3@000.000.000.003: git exit status: 128
git stdout: Nothing written
git stderr: remote: HTTP Basic: Access denied
fatal: Authentication failed for 'http://000.000.000.002/root/nameproject.git/'


Caused by:
SSHKit::Command::Failed: git exit status: 128
git stdout: Nothing written
git stderr: remote: HTTP Basic: Access denied
fatal: Authentication failed for 'http://000.000.000.002/root/nameproject.git/'

Tasks: TOP => deploy:check => git:check
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as userK3@000.000.000.003: git exit status: 128
git stdout: Nothing written
git stderr: remote: HTTP Basic: Access denied
fatal: Authentication failed for 'http://000.000.000.002/root/nameproject.git/'


** DEPLOY FAILED
** Refer to log/capistrano.log for details. Here are the last 20 lines:


  INFO [24577c0e] Finished in 0.861 seconds with exit status 0 (successful).

  INFO [cb0a2907] Running /usr/bin/env git ls-remote http://000.000.000.002/root/nameproject.git HEAD as userK3@000.000.000.003

 DEBUG [cb0a2907] Command: ( export GIT_ASKPASS="/bin/echo" GIT_SSH="/tmp/git-ssh-nameproject-production-winusr.sh" ; /usr/bin/env git ls-remote http://000.000.000.002/root/nameproject.git
HEAD )

 DEBUG [b9fda019]       remote: HTTP Basic: Access denied

fatal: Authentication failed for 'http://000.000.000.002/root/nameproject.git/'

  INFO ---------------------------------------------------------------------------

  INFO START 2018-09-19 13:45:48 +0300 cap production deploy

  INFO ---------------------------------------------------------------------------

  INFO [a8fe0d90] Running /usr/bin/env mkdir -p /tmp as userK3@000.000.000.003

 DEBUG [a8fe0d90] Command: /usr/bin/env mkdir -p /tmp

  INFO [fc9791c0] Finished in 10.899 seconds with exit status 0 (successful).

 DEBUG Uploading /tmp/git-ssh-nameproject-production-winusr.sh 0.0%

  INFO Uploading /tmp/git-ssh-nameproject-production-winusr.sh 100.0%

  INFO [1b17c9c5] Running /usr/bin/env chmod 700 /tmp/git-ssh-nameproject-production-winusr.sh as userK3@000.000.000.003

 DEBUG [1b17c9c5] Command: /usr/bin/env chmod 700 /tmp/git-ssh-nameproject-production-winusr.sh

  INFO [a7a946fa] Finished in 0.421 seconds with exit status 0 (successful).

  INFO [1c1909ea] Running /usr/bin/env git ls-remote http://000.000.000.002/root/nameproject.git HEAD as userK3@000.000.000.003

 DEBUG [1c1909ea] Command: ( export GIT_ASKPASS="/bin/echo" GIT_SSH="/tmp/git-ssh-nameproject-production-winusr.sh" ; /usr/bin/env git ls-remote http://000.000.000.002/root/nameproject.git
HEAD )

 DEBUG [2f23f4d6]       remote: HTTP Basic: Access denied

fatal: Authentication failed for 'http://000.000.000.002/root/nameproject.git/'

Помогите пожалуйста
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
1. Никто не будет читать такой поток сознания. Уважайте людей, которым задаете вопросы - а иначе Ваш вопрос просто пропустят.
2. Настроить сервер не от рута невозможно.
(Поток сознания пропущен)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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