Сразу говорю что во всём этом новичок, делаю это всё первый раз, не знаю как надо, так что хочется максимально подробного ответа.
Хочу развернуть 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/'
Помогите пожалуйста