Heroku처럼 배치하고 싶어요.

배치는 신경을 사용하는 작업이므로 안전해야 할 명령이라도 불안해하면서 실행해야 한다.
Capistrano,fleet 등 배치를 사용하는 사람들에게 이 글은 읽을 가치가 없을 수도 있다
원격 서버에 들어가는 git pull 로컬에서 다양한 예처리를 한 후rsync로 원격 배치한 사람에게는 이 글이 가치가 있을 수 있다.
중요한 것은 수중에 있는 컴퓨터에서
$ git push production master
에서 기술한 장면은 다음과 같은 절차를 이용하여 명세표를 작성하여 개념 디자인에서 체량의 부피를 분석하도록 한다.
Node.js 응용 프로그램을 기반으로 기술했지만 루비, PHP는 무엇이든 다시 읽을 수 있다고 생각합니다.

배치 구성


배포 구성은 다음과 같습니다.

배치된 서버에 연결된bare 저장소가 준비되어 있습니다.post-receive 갈고리의 내용은 같은 서버 내의public 디렉터리에서 서명+예처리+응용 프로그램의 재시작입니다.로컬 PCpost-receive의 말git push에서 최신 상태 응용 프로그램으로 이동합니다.(Upstart를 사용했지만 pm2 같은 것도 마찬가지였다면)

예제 응용 프로그램


다음은 이번 샘플 응용 프로그램입니다.
이 응용 프로그램은 방문post-receive하면'Hello, world'와 환경 의존 변수를 출력하는 아주 좋은 간단한 응용 프로그램입니다. 그러나 몇 개의 모듈에 의존하고 bootstrap을 이용하여less의 컴파일을 밟지 않는 작업은 정상적인 동작을 할 수 없습니다. 로컬에서 시작하는 느낌은 다음과 같습니다.
$ cd ~/git
$ git clone https://[email protected]/p_baleine/sample-app.git
$ cd sample-app
$ npm install # 依存関係ある(npmとbowerの)モジュールをインストール
$ grunt less  # lessのコンパイル
$ npm start   # 起動
배포할 때도 이 작업을 반복해야 합니다.

원격 준비


원격 서버에 저장소 만들기
$ mkdir ~/git/sample-app.git && cd ~/git/sample-app.git
$ git init --bare
그리고 실제 응용 프로그램 원본을 배치하는 디렉터리를 만듭니다.
$ mkdir /var/www/sample-app
업데이트 스크립트 만들기
$ cat /etc/init/sample-app.conf
author "Tajima Junpei"
description "sample-app"
setuid "nonrootuser"

start on (local-filesystems and net-device-up IFACE=eth0)
stop on shutdown

respawn
console log
env NODE_ENV=production

chdir /var/www/sample-app
exec npm start
/ 연결, 서명,less 컴파일 및 서버 재시작 만들기
$ cat hooks/post-receive
#!/bin/sh
export SAMPLE_APP_DIR=/var/www/sample-app
GIT_WORK_TREE=$SAMPLE_APP_DIR git checkout -f
(cd $SAMPLE_APP_DIR; npm install && grunt less && sudo restart sample-app)
$ chmod a+x hooks/post-receive

임시 배치


원격 저장소 추가
$ cd ~/git/sample-app
$ git remote add production <リモートリポジトリ>
실제 배포 (로컬 PC에서) 는 다음 명령으로 수행됩니다.
git push production master # パスワードを求められたら入力

좋은 웹페이지 즐겨찾기