2016-11-01 4 views
0

현재 프로덕션 환경에 배포하려는 Apostrophe-CMS의 인스턴스가 있습니다. 실행 sudo npm start 잘 작동하고 응용 프로그램이 부팅됩니다. 내가 심볼릭 링크 오류를 받고 있어요 내가 가지고하려고 할 때 그러나, PM2 데몬이 실행 :프로덕션 환경에서 pm2로 노드 앱을 시작하는 데 문제가 있음

Error: EEXIST: file already exists, symlink '/var/sites/hackday-2016-microsite/node_modules/apostrophe/lib/modules/apostrophe-assets/public' -> '/var/sites/hackday-2016-microsite/public/modules/apostrophe-assets' hackday2016-28 at Error (native) hackday2016-28 at Object.fs.symlinkSync (fs.js:1048:18) hackday2016-28 at Object.self.linkAssetFolderOnUnix (/var/sites/hackday-2016-microsite/node_modules/apostrophe/lib/modules/apostrophe-assets/index.js:447:10) hackday2016-28 at Object.self.linkAssetFolder (/var/sites/hackday-2016-microsite/node_modules/apostrophe/lib/modules/apostrophe-assets/index.js:424:14) hackday2016-28 at /var/sites/hackday-2016-microsite/node_modules/apostrophe/lib/modules/apostrophe-assets/index.js:402:14 hackday2016-28 at /var/sites/hackday-2016-microsite/node_modules/lodash/index.js:3073:15 hackday2016-28 at baseForOwn (/var/sites/hackday-2016-microsite/node_modules/lodash/index.js:2046:14) hackday2016-28 at /var/sites/hackday-2016-microsite/node_modules/lodash/index.js:3043:18 hackday2016-28 at Function.<anonymous> (/var/sites/hackday-2016-microsite/node_modules/lodash/index.js:3346:13) hackday2016-28 at self.symlinkModules (/var/sites/hackday-2016-microsite/node_modules/apostrophe/lib/modules/apostrophe-assets/index.js:398:9) hackday2016-28 at /var/sites/hackday-2016-microsite/node_modules/async/lib/async.js:718:13 hackday2016-28 at iterate (/var/sites/hackday-2016-microsite/node_modules/async/lib/async.js:262:13) hackday2016-28 at async.forEachOfSeries.async.eachOfSeries (/var/sites/hackday-2016-microsite/node_modules/async/lib/async.js:281:9) hackday2016-28 at _parallel (/var/sites/hackday-2016-microsite/node_modules/async/lib/async.js:717:9) hackday2016-28 at Object.async.series (/var/sites/hackday-2016-microsite/node_modules/async/lib/async.js:739:9) hackday2016-28 at Object.self.afterInit (/var/sites/hackday-2016-microsite/node_modules/apostrophe/lib/modules/apostrophe-assets/index.js:349:20)

+0

음, 명확한 질문은? pm2를 사용하여 동시에 여러 인스턴스를 시작하고로드 균형을 조정합니까? 그것은 나쁘지는 않지만 다음에 제안 할 내용과 관련이 있습니다. –

+0

PM2는 단일 서버에서 다중 노드 응용 프로그램을 관리하지만 아포스트로피 응용 프로그램은 하나만 관리합니다. – jerikojones

+0

아포스트로피를 실행하는 사용자에게 공개/모듈에 적합한 권한이없는 경우 권한 문제 일 수 있습니다. 또한 pm2가로드 균형 조정을 위해 둘 이상의 프로세스를 실행하도록 구성 될 수도 있습니다. 이는 이전에 요청한 것입니다. 배포 후 및 서버 프로세스를 시작하기 전에 "노드 app apostrophe : generation"을 실행하는 것이 좋습니다. 이것은 경쟁 조건을 피할 수 있습니다. –

답변

0

너무 ApostropheCMS 꽤 새로운 오전 가끔 주위를 연주하고있다. 아포스트로피 자산 폴더를 공용 폴더에 연결하기 위해 만든 심볼릭 링크가있는 것 같습니다. 나는 그 필요성을 이해하지 못합니다. AposCMS 자동/공공 및

은/var/사이트/hackday-2016 마이크로/공공/모듈/아포스트로피-자산 폴더

node_modules/아포스트로피/lib 디렉토리/모듈/아포스트로피-자산에서 모든 자산을 집어 들고 .

당신이해야 할 모든 /var/sites/hackday-2016-microsite/lib/modules/apostrophe-pages/index.js

에서 당신은 당신의 프로젝트에 추가하는 자산을 선언하고 있는지 확인하다 여기

가 내 파일

module.exports = { 
     park: [{ 
      slug: '/search', 
      type: 'apostrophe-search', 
      label: 'Search', 
      published: true 
     }], 
     types: [{ 
       name: 'default', 
       label: 'Default' 
      }, 
      { 
       name: 'home', 
       label: 'Home' 
      }, 
      { 
       name: 'apostrophe-blog-page', 
       label: 'Blog' 
      } 
     ], 

    //construct is one of the nunjucks functions that gets called when app.js starts 
    construct: function(self, options) { 

     //push assets to for use in front end - e.g. lib/modules/apostrophe-pages/public/js/site.js 

     self.pushAsset('script', 'site', { scene: 'always' }); 
     self.pushAsset('script', 'jquery.easing', { scene: 'always' }); 
     self.pushAsset('script', 'jquery.scrollTo', { scene: 'always' }); 
     self.pushAsset('script', 'bootstrap', { scene: 'always' }); 
     self.pushAsset('script', 'jquery.easing', { scene: 'always' }); 
     self.pushAsset('script', 'jquery.matchHeight', { scene: 'always' }); 
     self.pushAsset('script', 'jquery.easy-autocomplete', { scene: 'always' }); 
    } 
}; 

을 아래에 그리고 CSS 파일을 추가하기위한이 코드입니다, 당신은

에서

은/var/사이트/hackday-2016 마이크로/공공/모듈을 수행 할 수 있습니다 /apostrophe-assets/public/css/site.less 파일의 코드는 다음과 같습니다 :

@import 'utilities/_index.less'; 
@import 'typography/_index.less'; 
@import 'layout/_index.less'; 
@import 'templates/_index.less'; 
@import 'components/_index.less'; 
@import 'global/_index.less'; 
@import 'components/easy-autocomplete.less'; 
@import 'components/easy-autocomplete.themes.less'; 
// this is the place were we are adding the css syles so that they get automatically compiled 
// and are minified and send out as one file 
@import 'custom/bootstrap.less'; 
@import 'custom/font-awesome.less'; 
@import 'custom/jquery.autocomplete.less'; 
@import 'custom/simple-sidebar.less'; 
@import 'custom/style.less'; 

.apos-slideshow-item 
{ 
    h4 
    { 
    display: none; 
    } 
}