디버깅, 자동화(EOTD No.6)

이거 아메타!6번째 EOTD(Error Of The Day)다.


다음은 잡담.
오늘 deploy를 테마로 선택했기 때문에 글 아이콘을 선택할 때'deploy'로 검색해 보세요
왜 위의 배가 그려졌는지 나는 매우 놀랐다.
신경쓰여서 투덜거리는 데서 depro에서'펼친다'는 뜻 이외에
(부대·병력 등)배치/source:Weblio영일사전
그런 뜻이 있는 것 같아요.
특히 해군의 군사 전개는'Navy Deployment'로 불리는데, 아마도 이곳에 배의 아이콘이 있을 것이다
이것은 유래가 아닌가?내 생각엔
참고로 미국의 해군 병사들은 해군학교에서 다양한 훈련을 쌓은 후에
배와 잠수함을 배치하는 데 6, 7개월 이상이 걸린다.
https://www.militaryonesource.mil/military-life-cycle/friends-extended-family/deployment-basics-by-service-branch/

...멋있어요.


이상은 잡담입니다.
그러니까 우리 곧 갑시다...

오늘의 잘못



장면


이 오류는 Capistrano라고 불리는 자동 설계 도구를 사용할 때 발생합니다.
https://en.wikipedia.org/wiki/Capistrano_(software)
그 전에 AWS에서 생성된 EC2 실례에 로그인하여 공식 환경의 응용 프로그램을 수동으로 설계했습니다.
EC2 인스턴스란?
AWS에서 생성할 수 있는 가상 서버입니다.가상 머신이라는 소프트웨어를 이용하여 리눅스 서버를 가상적으로 만들었다.또한 기본 케이스는 zsh가 아니라 bash이기 때문에 환경 구축에 사용되는 명령은 이에 대응해야 한다.한편, zsh를 조개껍질로 지정하는 방법도 있는 것 같다.
그러나 Capistrano를 사용하는 경우 EC2 인스턴스에 액세스하지 않고 로컬에서 단일 코드로 디버깅할 수 있습니다.너무 좋아요.
이 명령은
 % bundle exec cap production deploy

하지만 이 지령은 잘못된 도화선이었다.


고찰하다.


**DEPLOY FAILED 정보 아래에 캐피톨라노의 최신 로그 20줄이 나와 있는 것 같아서 먼저 확인했어요.
그래서 수상한 줄을 발견했다.
Gem::Exception: can't find executable unicorn for gem unicorn. unicorn is not included in the bundle.
유니콘은 밴드에 들어가지 않았다.
왜?(수동으로 디버깅할 때unicorn_rails 분명히 명령을 사용했다.)
저는 그렇게 생각해요. 하지만 Gemufile를 보러 가면...
group :test do
  gem 'unicorn', '5.4.1'
end

아!정식 공연이 아니라 경합이야.


나는 이곳을 수정했다.
group :production do
  gem 'unicorn', '5.4.1'
end
상기 변경push를 마스터 지점으로 변경한 후 다시 이 명령을 시도했지만 같은 오류가 발생했습니다.
이후 EC2의 Uniccorn과 웹 서버가 다시 시작되었지만 반응은 변하지 않았다.
EC2에 로그인, 유니콘.로그를 검사했지만 이상이 없습니다.
이게 무슨 일이야...

해결 (오류 63;)


결론은 EC2 실례에서pull master 분기 후
 % bundle exec cap production deploy
로컬 환경에서 상기 명령을 다시 실행하면 정식 환경에서 디버깅을 할 수 있습니다!

다만, Capistrano를 사용하면 EC2 인스턴스에 액세스하지 않아도 DEPRO를 수행할 수 있습니다!


이 점은 매우 매력적이어서 근본적인 해결이라고 할 수 없다

오늘은 됐어요.(편안한 수면을 위해)


SOTD(Summary Of The Day)


이번 해결 방법은 정말 이해하기 어렵다.


다만, 캐피탈로 자체가 편리한 도구라고 느껴져 능숙하게 사용하려고 한다.

이전의 오류와 달리 이번처럼 두 환경을 뛰어넘는 조작은 오류의 원인을 확정하기 어렵다.오늘의 공부.


만약 누군가가 잘못된 원인에 관심을 가지고 있다면 평론란에서 교수님!

좋은 웹페이지 즐겨찾기