rails의 배치 실천 총결산

3321 단어
최근에 Rails의 자동 배치를 실천했습니다. 자신이 이것에 대해 반쯤 알고 있기 때문에 그 동안 많은 실천적인 문제와 개념적인 문제에 부딪혔습니다. 여기서 이 문제들을 모두 기록해서 나중에 다시 부딪히지 않도록 합니다.이 글은 주로capstrano반자동배치rails프로그램을 참조하여 절차에 따라 배치합니다.

일단 캡스트라노가 뭘 도와줄 수 있는지 얘기해볼까요? ##


우리가 rails를 사용하여 간단한 서버를 만들 때, 마지막으로 우리는 그것을 우리 자신의 서버에 똑같이 세워야 한다.capstrano는 이러한 장면에서 발생한 것이다. 최종적으로 우리는 우리의 응용 프로그램의 메인 디렉터리에서 직접 호출cap production deploy(production은 우리의 개발 환경을 가리킨다)만 하면 서버에서 우리가 변경한 실행 프로그램을 직접 볼 수 있다. 물론 그 전에 레일스에서 필요한 설정을 해야 한다.

주요 문제 기록

  • cap를 설정하는 원격 연결은cap의 배치 과정에서 우리의git 원격 창고가 있는 주소를 읽고 서버에서 지정한 위치로 컴파일해야 합니다.만약nginx를 설정했다면,nginx의 설정에 프록시 프로그램의 설정을 추가합니다.여기에는 몇 가지 세부 문제가 있습니다. 1)git 창고 ssh 키의 추가를 주의하십시오.예를 들어 만약에 우리가github를 응용 프로그램의 창고로 설정했다면github에 서버에 대응하는 ssh 키를 추가해야 한다. 이렇게 하면github 창고에서 최신 코드를 얻을 수 있다.2) cap는 원격 ssh를 설정합니다.내가 사용하는 것은 아마존의aws이다. 그의 ssh는 사용자 이름과 비밀번호를 통해 연결되지 않는다. 이것은 나로 하여금 한참 동안 멍해져서 줄곧 나의 사용자 이름과 비밀번호를 찾고 있다.그러나 마지막으로 설정에서 키의 설정을 보고 직접 사용할 생각을 했습니다.pem 파일, 괜찮은지 성공했는지 신기해요.주요 코드 설정은 다음과 같다. 이렇게 하면 사용자 이름과 비밀번호를 입력할 필요가 없다.
  • # The server-based syntax can be used to override options:
    # ------------------------------------
     server 'ec2-52-193-240-0.ap-northeast-1.compute.amazonaws.com',
       user: 'ubuntu',
       roles: %w{web app db},
       ssh_options: {
         #user: '****', # overrides user setting above
         keys: %w(~/.ssh/david.pem),
         forward_agent: false,
         auth_methods: %w(publickey password),
         #password: '****'
       }
    

    PS: 여기서 사용하는 .pem 파일은aws가 제공하는 개인 키 파일로 ssh 연결에 사용됩니다.
  • nginx의 사용은 먼저nginx의 주요 역할을 이해하고 우리의 서비스 에이전트를 제공하며 우리의 응용 서비스 프로그램의 점프 필터와 에이전트 설정을 해야 한다.여기에서 가장 얕은 예를 들면, 우리의 rails 프로그램이 시작된 후에 흔히 기본 3000 포트가 된다. 그러나, 우리는nginx를 통해 80 포트만 외부에 노출하고, 동시에 우리의 응용 이름을 숨긴다. 상응하는 루트 규칙을 설정하여 우리 본지의 3000 포트를 방문하게 하면 된다. 그러나 사용자가 보기에는 80 포트밖에 없다. 신기하게도 나무가 있다.여기서 주의하는 것은nginx는 일반적으로 우리의 정적 파일에 캐시를 하는 전역 에이전트입니다. 또한 우리의 동적 프로그램에 접근하려면nginx의 설정에서 서버 노드에 우리의 응용 프로그램 대응 규칙을 추가해야 합니다. 여기에서 proxy_pass 이 절을 직접 수정하고 우리의 주소를 가리키면 됩니다.
  • proxy_pass http://localhost:3000;
    

    다음은 우리 로컬 서비스의 3000 포트를 시작해야 합니다.
  • rails 서비스가 시작되기 전에 실행cap deploy하면 저희 서버 프로그램도 자동으로 시작된다고 생각했습니다.그런데 그럼 내 포트는 몇 개야, 어떻게 설정했어?결국 내가 너무 순진해서 여기가 스스로 작동해야 한다는 것을 발견했다.서버 프로그램/var/www/app/current 디렉터리로 이동하여 실행bundle exec rails s -e production을 통해 프로그램을 시작합니다.우리의 rails 프로그램이 시작된 상태인지 확인하고, 프로세스를 통해 명령을 실행하여 해당하는 프로세스가 있는지 확인할 수 있습니다.

  • 일반적인 명령

  • nginx의 리셋 작업 실행
  • sudo service nginx restart
    
  • nginx의 정보ps -ef | grep railsnginx의 접근 로그와 오류 로그의 디렉터리를 볼 수 있습니다
  • nginx 유지보수 설정 디렉터리: nginx -V
  • nginx의 프로세스를 보기: /etc/nginx/sites-enabled/
  • 서버에서 rails의 실행: ps -ef | grep nginx
  • Rails 서버를 백그라운드에서 실행시키는 명령 screen. screen 명령을 통해 ssh 연결이 끊어질 때 우리가 시작한 서비스가 실행되고 있음을 피할 수 있습니다.일반적인 screen 명령은 다음과 같습니다.
  • screen +   // 。
    screen -dmS {name} // , 。
    screen -list // 。
    screen -r {name} // 。
    ctrl +ad // ctrl +a d, 。
    exit // exit 。
    

    마지막으로, 우리의 프로그램은 이미 완전하게 서버에서 뛰기 시작했는데, 과정은 여전히 꽤 우여곡절이 많다.그 동안 linux 명령에 대한 익숙함과 동시에 그 이름만 알았던 프로그램을 깊이 이해하게 되었고, 코드를 많이 사용해야 한다고 느꼈다.마지막으로 마지막으로 이 풋내기에게 벽돌을 두드리는 것을 환영합니다.

    좋은 웹페이지 즐겨찾기