git 저장소에 변화가 생기면, 서버에 자동으로 업데이트하는 스크립트.


소스가 변경될 때 마다, 라이브서버에 소스를 업데이트 하는 일은 참 귀찮은 일이다.
그래서 보통 cron을 이용해 서버에 소스 자동 업데이트를 하곤 한다.
이번에도 cron을 이용해 자동 업데이트를 구축하려다가 한가지 문제에 부딪혔다.
crontab에서 스크립트를 돌릴경우 상대경로를 쓰지 못한다는 거다.
그래서 비슷한 걸 찾아 헤매다가 shell-jobs를 발견했고,
이를 이용해 git 저장소가 갱신될 때마다 서버를 자동 업데이트하도록 구축했다.


작동 순서

  1. shell-jobs 데몬 실행.
  2. shell-jobs에서 일정 시간마다 ~/update.sh를 호출.
  3. ~/update.sh에서 원격 저장소를 업데이트하고 변경사항이 있다면 update_platform.sh를 호출.
  4. update_platform.sh에서 소스를 업데이트하고 서버를 재구동.

shell-jobs(https://github.com/azer/shell-jobs)

설치

npm install -g shell-jobs

설정파일 작성

update.jobs
~/update.sh > ~/cron.log # => 10 minutes

shell-jobs 데몬으로 구동

shell-jobs update.jobs -d

리눅스 시동시에 자동으로 구동되도록 하려면, /etc/rc.local파일에도 위 코드를 추가한다.

update.sh

원격 저장소를 업데이트하고 git diff를 통해 로컬과 다른점을 검사한다.
grep -v 뒤에는 로컬 변경을 무시할 파일명을 넣는다.
만약 원격 저장소와 다른 점이 있다면 update_platform.sh를 실행한다.
#!/bin/sh
cd /home/project
git remote update
diff=$(git diff remotes/origin/master master | grep -v <무시할 변경사항>)
if ["$diff" == ""]
then
echo "no diffs"
else
echo "have diffs"
~/update_platform.sh
fi


update_platform.sh

소스를 최신으로 업데이트하고, 서버를 재구동하는 스크립트.
sed를 이용해 debug플래그와 project.wsgi파일을 변경하기 때문에,
git reset --hard로 로컬 변경사항을 무시한다.
#!/bin/sh
cd /home/project
git checkout master
git reset --hard master
git pull
pip2 install -r requirements.txt
alembic revision --autogenerate -m "Alembic initilized boilerplate tables."
alembic upgrade head
sed -i "s/^DEBUG = .*/DEBUG = False/" ./application/config/debug_flag.py
sed -i "s/^sys.path.insert.*/sys.path.insert\(0, '\/home\/project'\)/" ./project.wsgi
chown me -R .
~/restart_server.sh


resteart_server.sh

간혹 서버를 직접 재구동하기도 하니, 서버 재구동용 스크립트는 따로 작성한다.
#!/bin/sh
service apache2 restart



by


Tags : , , , , , , , ,

  • 재미있게 읽으셨나요?
    광고를 클릭해주시면,
    블로그 운영에 큰 도움이 됩니다!

모질라 파이어폭스 포터블을 상위 버젼으로 업데이트 할 때, 쓰던 환경 설정을 그대로 사용 하는 간단한 방법을 소개합니다.

오랫동안 파이어폭스 3.6.18버젼을 써 오다가 이번에 파이어폭스를 두 차례나 업데이트 했습니다.
파이어폭스 5.0.1버젼으로 버젼을 올렸을땐 왠지 모르게 엄청 버벅이더군요.
오랫동안 친하게 지내왔던 모질라 파이어폭스를 외면해 버리고 싶을 정도로...
그래서 6.0b를 다운받아 사용해 보니 아주 만족스럽네요.
설정에 대한 이야기를 하기 전에 우선,버젼별 메모리 점유율과, 모양을 비교해 보겠습니다.
by 月風


파이어폭스 포터블 설정

3.6.18 메모리 점유율-'파이어폭스 포터블 설정'
파이어폭스 3.6.18에서의 메모리 점유율
5.0.1 메모리 점유율-'파이어폭스 포터블 설정'
파이어폭스 5.0.1에서의 메모리 점유율
6.0b 메모리 점유율-'파이어폭스 포터블 설정'
파이어폭스 6.0b에서의 메모리 점유율

아무래도. 6.0b를 쓸 때 부가기능을 하나 지우고,
부가기능 하나는 옵션을 조정한 것이 크게 도움이 된 것 같습니다.
지워버린 파이어폭스 부가기능은 SeoQuake에요. 사이트의 페이지랭크와 인바운드 링크등을 보여주는 SEO도우미죠.
그런데 제가 쓰기엔 너무 무거운 부가기능 입니다. 그래서 과감히 지웠죠. 체감속도가 바로 올라가는군요.
그리고 설정을 변경한 부가기능은 Yslow에요. 페이지 로딩 속도를 빠르게 하기 위한 체크리스트를 보여주는 툴로 아주 유용합니다.
하지만 사용할 때만 켜서 써도 충분해요. 페이지를 로딩할 때 마다 몇 초 걸리는지 계산을 할 필요는 없죠.
이렇게 부가기능을 정리하고 나니 확실히 체감 속도가 올라갔습니다.

3.6.18 화면-'파이어폭스 포터블 설정'
모질라 파이어폭스 3.6.18 화면

5.0.1 화면-'파이어폭스 포터블 설정'
모질라 파이어폭스 5.0.1 화면

6.0b 화면-'파이어폭스 포터블 설정'
모질라 파이어폭스 6.0b 화면

파이어폭스 3.6.18에서 5.01로 바꾸었을땐 '꼭 크롬 같이 바뀌었네.' 라는 생각이 들었고,
5.01버젼과 6.0b버전은 보기에 별 차이가 없네요.
그럼 이제 본론으로 들어가겠습니다.
버전을 올릴 때 마다 설정을 다시 해 줘야 한다면 여간 귀찮은 일이 아니죠?
원래 있던 파이어폭스의 폴더 하나만 새 버젼의 파이어폭스 폴더에 복사하면 쓰던 설정 그대로 사용 할 수 있습니다.
 

FirefoxPortable\Data\profile
 

이 설정 폴더를 새로운 버전의 파이어폭스에 복사하시면 됩니다.
이제 설정은 쓰던 그대로 인데, 버전이 올라가면서 부가기능을 사용할 수 없게 되는 경우가 있어요.
그럴 땐 호환성을 관리해주는 Add-on Compatibility Reporter 부가기능을 설치하시면,
낮은 버전에서 쓰던 부가기능을 사용할 수 있어요.:D

파이어폭스 포터블 테스트 버젼 다운로드 (6.0b)

파이어폭스 포터블 다운로드(5.01)



by


Tags : , , , , , ,

  • 재미있게 읽으셨나요?
    광고를 클릭해주시면,
    블로그 운영에 큰 도움이 됩니다!