Skip to content

CHICPRO

  • Life Log
  • Cycling Log
  • Photo Log
    • Portrait
    • Landscape
    • Flower
    • Etc
  • Coding Log
  • Information

[PHP] github webhook을 이용한 소스코드 서버 자동배포

2018-05-16 by 편리
  • 우분투 16.04, git 2.7.4 환경을 기준으로 테스트 했습니다.

서비스에 사용되는 서버가 소수 일 때는 각 서버에 접속해서 git pull 명령어를 실행하면 됐지만 점점 더 많아지니까 소스 배포도 일이 되기에 github 를 이용해 소스코드를 서버에 자동 배포할 수 있는 환경을 구축하기로 했다. github 에서 제공하는 webhook 을 이용하면 문제를 해결할 수 있다. 환경 구축에 참고한 내용은 https://github.com/mboynes/github-deploy 이다.

#0. 준비

보통 웹서버는 www-data 등의 사용자로 실행이 된다. 웹루트의 소유자가 www-data 등의 사용자가 아니라면 퍼미션이 없기 때문에 바로 git pull 의 명령어를 실행시킬 수 없다. 이를 위해 www-data 사용자가 sudo 명령어를 사용할 수 있도록 수정했다. 배포 명령을 실행하는 deploy.php 파일은 웹루트에 위치한다.

# visudo

위 명령어를 실행한 후 아래 라인을 추가한다. www-data 사용자에게 비밀번호 입력없이 git 명령어를 사용할 수 있도록 한다.

www-data   ALL=(ALL) NOPASSWD: /usr/bin/git

다음으로 각 서버에서 git 사용을 위한 기본적인 설정을 한다.

$ git config --global user.email "example@example.com"
$ git config --global user.name "Example"
$ git config --global push.default simple

위에서 이메일과 이름은 변경한다. deploy 로그를 기록하기 위해 deploy.php 파일의 상위 디렉토리에 logs 디렉토리를 생성하고 www-data 사용자가 파일을 쓸 수 있도록 퍼미션을 수정한다. 보통은 chmod 707 logs 와 같이  실행한다. logs 디렉토리 안에 deploy.log 파일을 생성해 둔다. 소유권은 www-data 에게 준다. (more…)

Continue Reading

[Ubuntu] Monit 설치 및 설정

2017-06-28 by 편리

서버 모니터링 용도로 오픈소스 monit 을 사용하고 있다. 설치 및 설정이 간단하지만 기능은 강력하다. monit 공식사이트는 https://mmonit.com/monit/ 이다.

설치

$ sudo apt-get install monit

우분투 환경에서는 위 명령을 실행해서 monit을 설치할 수 있다. monit 설정은 /etc/monit 에서 한다. 설정 파일은 monitrc 이며 모니터링할 서비스 설정은 conf-available 디렉토리에 제공되고 있다. 아래는 기본 제공되는 설정 파일이다. 이 중 php7.0-fpm 파일은 별도로 추가한 것이다.

-rw-r--r-- 1 root root  481  2월 17  2016 acpid
-rw-r--r-- 1 root root  640  2월 17  2016 apache2
-rw-r--r-- 1 root root  455  2월 17  2016 at
-rw-r--r-- 1 root root  691  2월 17  2016 cron
-rw-r--r-- 1 root root  602  2월 17  2016 mdadm
-rw-r--r-- 1 root root  669  2월 17  2016 memcached
-rw-r--r-- 1 root root  703  2월 17  2016 mysql
-rw-r--r-- 1 root root  521  2월 17  2016 nginx
-rw-r--r-- 1 root root  471  2월 17  2016 openntpd
-rw-r--r-- 1 root root  950  2월 17  2016 openssh-server
-rw-r--r-- 1 root root  683  2월 17  2016 pdns-recursor
-rw-r--r-- 1 root root  305  6월 28 12:13 php7.0-fpm
-rw-r--r-- 1 root root 1421  2월 17  2016 postfix
-rw-r--r-- 1 root root  867  2월 17  2016 rsyslog
-rw-r--r-- 1 root root  501  2월 17  2016 smartmontools
-rw-r--r-- 1 root root  306  2월 17  2016 snmpd

monit 에서 모니터링할 서비스는 conf-enabled 에 넣어주면 되는데 나의 경우는 아래처럼 심볼릭 링크를 이용했다. (more…)

Continue Reading

Ubuntu 16.04 에서 리부팅 때 ufw 시작되지 않는 문제

2017-06-28 by 편리

적잖이 황당했다. ufw enable 명령으로 활성화를 해둔 상태인데 재부팅을 하면 다시 inactive 상태??? @.@ 더구나 설정한 rule도 적용되지 않는 문제가 생겨서 구글링하다가 아래 답변을 보고 적용했더니.. 해결!! https://askubuntu.com/questions/851164/ufw-remains-disabled-after-a-reboot-using-ubuntu-server-16-04/851166?sfb=2#851166 아래처럼 netfilter-persistent 서비스가 ufw 서비스를 무력화시켜서 시작도 되지 않고 rule 도 적용되지 않았던 것이다. 아래 명령어를 통해 netfilter-persistent 서비스를 disable 시킨다. $ sudo systemctl disable netfilter-persistent

[PHP] 랜덤 시간으로 프로그램 실행 중지하기

2017-07-14 by 편리

PHP 7.0 이상에서 사용할 수 있는 random_int()함수를 이용해 랜덤 시간으로 프로그램 실행을 일시 중지하는 함수이다. <?php function randomSleep($n=5) { $int1 = random_int(21, 39); $int2 = random_int(21, 30); usleep(floor(bcdiv($int1, $int2, 6) * pow(10, $n))); } 위 함수를 사용하기 위해서는 bcmath 모듈이 설치되어 있어야 한다. <?php function randomTime() { $int1 = random_int(23, 43); $int2 = random_int(54, 74); return …

[PHP] 아마존 Product Advertising API 간단 예제

2017-06-15 by 편리

아마존의 Product Advertising API 를 사용하기 위한 멋진 오픈소스가 존재하지만 서비스 구현 중에 그 오픈소스를 사용하면 네트웍 문제인지 간혹 제대로된 작업이 되지 않는 듯 하여 간단하게 코드를 작성해서 테스트를 해보기로 했다. 아래 코드는 테스트를 위해 작성한 것으로 최소한의 기능만 포함되어 있다. <?php class AMAZON { protected $country; protected $accessKey; protected $secretKey; protected $associateTag; protected $operation; protected …

Continue Reading

Posts pagination

  • Previous
  • 1
  • …
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • …
  • 748
  • Next

Recent Posts

  • SK 세븐모바일 유심 셀프교체
  • php 배열 연산에서 + 와 array_merge 의 차이
  • pcntl_fork 를 이용한 다중 프로세스 실행
  • 아이폰 단축어를 이용하여 주중 공휴일엔 알람 울리지 않게 하기
  • 구글 캘린더 전체일정 재동기화
  • OpenLiteSpeed 웹서버에 HTTP 인증 적용
  • OpenLiteSpeed 웹어드민 도메인 연결
  • WireGuard를 이용한 VPN 환경 구축
  • Ubuntu 22.04 서버에 OpenLiteSpeed 웹서버 세팅
  • 맥 vim 세팅

Recent Comments

  • 편리 on 업무관리용 그누보드 게시판 스킨
  • 임종섭 on 업무관리용 그누보드 게시판 스킨
  • 캐논 5D 펌웨어 | Dslr 펌웨어 업그레이드 방법 82 개의 베스트 답변 on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • Top 5 캐논 5D 펌웨어 Top 89 Best Answers on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • 편리 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 임팀장 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 편리 on Notepad++ NppFTP 플러그인 수동 설치
  • paul-j on Notepad++ NppFTP 플러그인 수동 설치
  • YS on Windows 10 iCloud 사진 저장 폴더 변경
  • 편리 on Docker를 이용한 Centos7 + httpd + php 5.4 개발환경 구축

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
© 2025 CHICPRO | Built using WordPress and SuperbThemes