프로젝트 요약 블로그 사이트 배포 문제

koa2 + mysql을의 최근 사용 + nodejs + weback + VUE + 문제가 발생, 지금 몇 십일 요약 이후 블로그 사이트를 구축, 이에 레디 스 기술 :

질문 1. ecosystem.json 프로파일 배포 프로젝트,  " POST-배포 " : " NPM 설치 && PM2 startOrRestart의 ecosystem.json --env 생산의를 " , // 서버에서 명령을 실행하는 프로젝트를 게시 

네트워크에 의해 주어진 구성 파일이나 튜토리얼에서 발견, 웹 사이트에 액세스 할 수 있으며, 웹 사이트의 nginx 프록시 문제, 또는 단순히 502보고  잘못된  게이트웨이 ;

 

인쇄 PM2 로그 :

 

 

 검색 서비스는 겉으로 살해 후 살해하고 연상하고 있었다. . . . .

질문 2. 그런 다음 문제가 명령을 실행하는 것입니다 의심, 구성 파일을 수정합니다

" POST-배포 " : " 고궁 박물원 고궁 박물원 설치 && & & RUN PRD PM2 startOrRestart의 ecosystem.json --env 생산의 " , // 프로젝트 문제는 서버에서 실행되는 명령

참고 NPM 실행 PRD 파일에 package.json 해당 명령보다 더 많은 것을 :

" PRD " : " 크로스 ENV NODE_ENV = 생산 PM2 시작 빈 / www가 --watch " ,

즉, 명령은 서비스를 시작하고 페이지에 액세스 할 수 있지만, 몇 가지 질문이있을 것입니다 수 있습니다 :

  문제 : 서버에서 PM2 LS 원래 myblog 과정에 www가 프로세스보다 더 찾을 수 있습니다 :

유사은 물론,이 사실 후 올바른보기가, 위, 하나 이상의 라인이있을 것이다 , www가 프로세스 이름 사실,이 프로세스가 실행되는  NPM 실행 PRD-오는 과정을.

서버 측 WWW / 웹 사이트에서 실행 유사 NPM 실행 PRD는 / myblog / 현재 폴더는 동일한 서비스를 담당 할 것입니다, 다음 과정은 WWW입니다;

음, 우리는 NPM 실행 PRD는 서비스를 연상하지만, 다음과 같은 질문이 아직 없습니다 사용하는 경우에도 :

  질문 1 : JS, CSS 및 기타 정적 리소스 웹 사이트 참조를 캐시 할 수 없습니다;

  질문 2 : 각 실행 명령에 대한 코드 배포   PM2 배포 ecosystem.json 생산의를  프로세스 서버가 NPM 실행 PRD를 [즉] 실행하라는 메시지가 표시됩니다, 모든 시간은 서버 프로세스를 종료하고 다음 명령을 실행하거나 -f 명령 너무 많은 프로세스를 주도하고있다.

  질문 3 : 가장 치명적인는 오랜 시간 동안 실행 한 후 사이트입니다 만 모든 정적 CSS, JS 및 기타 리소스, API 인터페이스의 KOA 비계에 액세스 할 수 있습니다하면 방문 할 수 있습니다! ! ! ! !

------------

그래서, 그것은 어디에 문제인가?

오랫동안 던져, PM2 프로파일 시도뿐만 아니라, nginx를 구성 파일, 또는 디스크, 재 빌드 환경을 포맷의 다양한 변형이 작동하지 않습니다. . . . .

서버가 인터페이스 API에 액세스 할 수 없습니다 때까지, 나는 pm2日志看了一下를 인쇄 :

 

 

 나니? ? ? loveNum가 정의되지 않은, 후 다음 로그를 확인 : 그것은 오류를보고했습니다 :

 

 

 너무 많은 오류 때문에 서버가 중단 될 수. . . . 그는 전화를 끊었다. . . . . .

마지막으로 내가 원래 논리 자체가 문제가 있음을 깨달았다 값 loveNum의 코드는 시작도 실행할 수 있습니다 얻을 수 있지만, 오랜 시간 후, 붙어 서비스 오류의 수가 증가하고, 너무 자주 오랫동안 성능 주위를 실행할 수 없습니다, 인터페이스는 전화를 끊었다.

글쎄, 이유까지 조사 비즈니스 로직 코드는, loveNum에게 버그, 다음 ecosystem.json 구성 파일을 수정 NPM 실행 PRD을 삭제하고, "스크립트"수정 "./bin/www",// 시작 항목 스크립트, 궁극적으로 ecosystem.json 구성 파일은 다음과 같습니다 :

{
   "애플 리케이션" : [{
     "이름": "MyBlog", // 의 응용 프로그램의 배포의 이름을 
    "스크립트": "./bin/www는" // 항목 스크립트가 시작 
    "시계" true로 , // 수신 여부 파일이 변경 
    "ENV을" : {
       "COMMON_VARIABLE": "참으로" // 수신 시작 변수 
    }
     // 변수가 주입 된 때부터 시작하여 환경 생산의 --env 
    // http://pm2.keymetrics.io/docs / 사용 / 파일 애플리케이션 선언 / #은 https://adwords.google.com/support/aw/bin/answer.py?answer=50328&hl=ko - 투 - 다른 환경 
    "env_production" : {
       "NODE_ENV": "생산"// 생산 환경 변수 
    }
  }]
  // 배포 파트 
  // 다음은 각 환경 DESCRIBE 
  "배포는": { // 배포 작업 
    "생산의" : {
       "사용자": "ZYL", // 서버의 사용자 이름이 게시하는 데 사용 
      // 멀티 호스트이 가능합니다 는 그냥 배열로 된 IP / 호스트 이름을 전달하여 
      "호스트": [ "39.106.194.136"], // 호스트 IP 
    "포트": "22", // 포트 번호 
// 지점 
      "REF": "원산지 / 마스터" , // 마스터의 주요 지점 지정 
      // 복제 힘내 저장소 
      "의 repo": "[email protected] : zhenyulei / KOA-blog.git을"// 창고의 주소 
      //대상 서버에서 응용 프로그램의 경로 
      "경로": "/ 홈 / ZYL / WWW / 웹 사이트 / myblog", // 把项目部署到服务器的那个目录下
      // 형 구성에 사용되는 형식 옵션을 제공하는 데 사용할 수 있습니다 - 
      // 기 파일. 이 거기에있는 옵션을 지정하는 데 유용합니다 
      // 별도의 명령 줄 플래그입니다을, '남자 SSH'를 참조 
      //은 단일 문자열 또는 문자열의 배열이 될 수 있습니다 
      "ssh_options": "StrictHostKeyChecking = 아니오", // 把ssh를的키校验取消掉
      // 필요한 소프트웨어를 설치하여 호스트를 준비하려면 (예 :
      
      
      // 또는 로컬 컴퓨터에서 스크립트 경로 
      "사전 설정": "" ,
       // 호스트 시스템에서 스크립트에 명령 / 경로 
      // 이것은 호스트에서 실행됩니다 저장소 복제 후 
      // 배치 : 예를 공유 디렉토리 등의 구성 
      "설치 후": "LS -la는" ,
       // (당신이 일을 배포 동일한 시스템에) 로컬로 실행 명령 
      // ";"문자로 구분 된 여러 명령 할 수 
      "사전 배포 로컬": "에코"이 로컬 실행 명령 인 '' ,
      
      "POST-배포": "NPM 설치 && PM2 startOrRestart의 ecosystem.json --env 생산의" // 서버에서 명령을 실행하는 프로젝트 게시 
// 는이 ENV의 모든 응용 프로그램이 필요한 것을 변수에 주입 된 환경 
      "ENV을": { "NODE_ENV": "생산의" }}}
}

다시 수행합니다 :

PM2 ecosystem.json 생산 설치를 배포 

PM2 ecosystem.json 생산을 배포

binggo! ! 이 사이트는 마지막으로 방문 할 수 있었다!

뿐만 아니라 방문하는 사이트의 문제를 해결하고, 사이트는 다시보기뿐만 아니라, 정적 자원의 캐시 된 LS의 PM2에서

 

 

자신의 로그 봐, 우리는 정상이 :

 

 

 마지막으로 좋은.

---

다른 문제, 서버의 캐시에 설정하고 발견

 

상기 식에서 conf.d의 nginx를 폴더로 라우팅 배치와의 nginx의 프로필 설정 nginx.conf에 http입니다.

그래서 세트 캐싱 및 압축 파일 설정 nginx.conf 배치해야합니다.

또한,에서 favicon.icon과 : 프로젝트에서 favicon.icon을 설정하는 방법 웹팩 포장 한 페이지 문서를 사용하여

가장 쉬운 방법은, 표준의 이름에주의하시기 바랍니다 말 KOA 공용 폴더에 직접 배치되어에서 favicon.icon를

 

상류 myblog {
    서버 127.0.0.1:8000 ;
}
서버 {
    듣기 (80) ;
    서버 _ www.blog.xiaozhumaopao.com; 
    위치 / {
        proxy_set_header X -Real- IP $ REMOTE_ADDR;
        proxy_set_header X -Forward- $ proxy_add_x_forwarded_for를 들어;
        proxy_set_header 호스트 $ HTTP_HOST;
        proxy_set_header X -Nginx - 프록시 사실 ;
        proxy_set_header X -Forwarded- 호스트 $의 서버 _;

        proxy_pass HTTP : // myblog; 
        오프 proxy_redirect;
    }

    위치 ~ * ^ + \.. (JPG | JPEG | GIF | PNG | ICO | CSS | JS | PDF | TXT) {
      루트 / 홈 / ZYL / WWW / 웹 사이트 / myblog / 공공 / 현재;
    }

}

 

추천

출처www.cnblogs.com/xiaozhumaopao/p/11785537.html