2009-08-15 3 views
5

저는 로컬 컴퓨터, 스테이징 서버 및 여러 프로덕션 서버가있는 웹 개발 회사에서 일했습니다. 우리는 Mac에서 perl로 작업했고 svn을 사용하여 무대에 올랐으며 perl 스크립트를 프로덕션 서버에로드했습니다. 이제는 내 프로젝트를 진행하고 있으며 공유 웹 호스팅을 사용하고 유닉스 기반 환경 (펄/bash 스크립팅/cron 작업 등으로 할 수있는 모든 마법)으로 작업하지 않을 때 웹 개발을위한 우수 사례를 찾고 싶습니다.공유 호스팅에 대한 (php/mysql) 배포 우수 사례?

나는 적어도 하나의 다른 사람과 함께하고 있어요 내가 SSH (액세스) 외부 업체에서 웹 호스팅 공유 하나의 표준
  • 을 사용하고

    • : 있습니다

      그래서 제 질문이 주어 내 조건, 소스 제어를 위해 SVN을 사용하려고합니다.

    • Windows에서 PHP/MySQL을 개발 중입니다. 리눅스가 가능함)

    코드/데이터의 테스트, 배포, 마이그레이션을 위해 어떤 설정을 권장합니까? 내 로컬 컴퓨터에 xampp 서버가 설치되어 있지만 어떤 방법으로 Windows에서 데이터 등을 마이그레이션하는 데 사용할 수 있는지 확실하지 않았습니다.

  • 답변

    10

    공유 호스팅에 PHP personnal-projects가 있습니다. 여기에 몇 가지 생각이 있는데, 그 중 하나에서 내가 뭘하는지 (하나는 가장 활성화되어 있고, 적어도 반자동 동기화 방식이 필요하다) :

    내 설정에 대한 몇 마디 :

    • 얼마 전까지 만해도 SVN에는 모든 것이있었습니다. 지금, 나는 bazaar을 사용하고있다; 하지만 아이디어는 동일
    • (바자와 함께, 내가 지역의 역사와 모든이를 제외하고) 당신은 내가 리눅스에서 작동
    • 을하는 것처럼 내가 프로덕션 서버에 ssh를 액세스 할 수 exclusivly (그래서입니다 가지고

      • 모든 것이 프로덕션 서버 (소스 코드, 이미지에있을 테 .. : 내가하는 일은 내가 일을 어떻게 지금)

      창문이 쉽게되지 않을 수도 있습니다 .)은/bazarr/

    • 제가 아파치/PHP와 로컬 작업은/MySQL을
    • (내가 한 동안 로컬로 한 번에 가져올 생산 DB의 덤프를 사용하는) 어떤 내가 유일 SVN에 최선을 다하고 그 프로젝트에서 일하고; 2/3 개발자의 소규모 팀은 괜찮 겠지만 그 이상은 아닙니다.

    내가 무슨 짓을하기 전에 : 좀 PHP의 사이에 수정을 위해 SVN 서버를 확인 스크립트 "최종 개정 생산 푸시"와 HEAD

    • 나는이 만든 같은데요했다

      • PHP 스크립트는 현재 usng하고있는 Perl 스크립트처럼 보입니다 ^^
    • 이 스크립트는 프로덕션에 업로드 할 디렉토리/파일 목록을 만들었습니다.
    • 그리고 FTP 액세스를 통해 업로드했습니다.
    • 이것은 매우 만족스러운 것이 아닙니다. (제 스크립트에는 버그가있었습니다. 나는 그것들을 바로 잡는 데 시간이 걸리지 않았다); 내가 지금 무엇을 (^^ 그렇게하지 어려운, 잘, 그것은 자동으로 스크립트 파일에 저장)

    를 내가 마지막으로 생산 에 밀려 당시의 개정 번호를 기억하는 저를 강제로 :

    • 바자로 전환 할 때, 나는 프로덕션 서버에 SSH 액세스를 가지고 내가 스크립트 완전히
    • 을 떨어졌다 어쨌든 잘
    • 작동하지 않았다 스크립트를 다시하고 싶지 않았다 , rsync을 사용하여 동기화합니다. 내 개발 컴퓨터에서 프로덕션 서버로, 내가 로컬로 가지고있는 것이 안정적/생산 준비가 완료된 것으로 간주 될 때.

    하고 가지의 방법에 대한 참고 사항 몇 :

    • 내가 준비 서버가없는 : 내 로컬 설치가 생산의 하나
    • 필요하지 스테이징 서버에 충분히 가까운 나는 아마로 가고 싶어 내가 스테이징 서버를 가지고 있다면 하나 또는 두 개의 개발자와
    • 간단한 프로젝트에 대한 확인을한다 : 당신이 역을 할 때
      • 하면에 "SVN 업데이트"할 GE의
      • 이 확인되면, 더와, 더 큰 프로젝트 (최신 "안정적인"버전에서 바, 그래서 OK 생산에 푸시 할 것이다) 스테이징 서버에서 rsync를 명령
    • 를 시작 developpers, 나는 아마 그런 종류의 설정으로 가지 않을 것입니다; 하지만 (너무 크지 않은) 개인 프로젝트에 대해서는 꽤 괜찮습니다.


    "리눅스 지향은"rsync를 사용하고있을 수 있습니다 여기에 "특별한"유일한 것은,; 빠른 검색은 윈도우에 설치할 수있는 rsync 실행 파일이 있음을 나타냅니다. http://www.itefix.no/i2/node/10650

    나는 한번도 해보지 않았습니다.내가 공개/개인 키 mecanism을 사용하고, 그래서 rsync를가 BTW, 암호를 요구하지 않습니다

    rsync --checksum \ 
        --ignore-times \ 
        --human-readable \ 
        --progress \ 
        --itemize-changes \ 
        --archive \ 
        --recursive \ 
        --update \ 
        --verbose \ 
        --executability \ 
        --delay-updates \ 
        --compress --skip-compress=gz/zip/z/rpm/deb/iso/bz2/t[gb]z/7z/mp[34]/mov/avi/ogg/jpg/jpeg/png/gif \ 
        --exclude-from=/SOME_LOCAL_PATH/ignore-rsync.txt \ 
        /LOCAL_PATH/ \ 
        [email protected]:/REMOTE_PATH/ 
    

    하십시오 (!) 참고로


    , 여기처럼 내 rsync를 명령 보이는거야.

    그리고 물론, 나는 일반적으로 옵션 "--dry-run"

    으로, synchorised 될 것입니다 무엇을보고, 최초의 "드라이 실행"모드에서 동일한 명령을 사용하고 ignore-rsync.txt은 목록이 포함되어 있습니다 내가 원하지 않는 파일이 생산에 푸시 될 : 생산에 푸시 할 그냥 캐시 디렉토리를 방지, 여기

    .svn 
    cache/cbfeed/* 
    cache/cbtpl/* 
    cache/dcstaticcache/* 
    cache/delicious.cache.html 
    cache/versions/* 
    

    - 생산 데이터 개발과 동일하지 않습니다 같은 사람들을 보내지에 논리적 인 것 같습니다 데이터.


    희망 (난 그냥 SVN을 사용하지 않는 한 ".svn는"이 파일에 ... 나는이 프로젝트 ^^ 위해 더 이상 그것을 제거 할 수 있습니다 아직 거기에 주목하고 있습니다) 이것은 당신이 콩나무 같은 전용 SVN 호스트로 이동하거나 모두 개발자가 그것을 떨어져 작업 할 수 있도록 SVN 서버를 실행하는 동일한 서버 시스템을 사용하는 것이 좋습니다 것, 조금 ... SVN에 관한

    +1

    감사합니다. 당신이 그런 세부 묘사와 명확성을 가지고 답을 찾길 원하는 사람들의 노력이 때때로 저를 놀라게합니다. – zenna

    +1

    당신은 환영합니다 :-) (내가 얻은 약간의 대답 및/또는 너무 나를 놀라게하는 참조 ;-) 그래서, 내가 도울 수있을 때 ... 글쎄, 그게 무엇을위한거야!) –

    1

    을하는 데 도움이됩니다. 후자의 경우

    , 배포 스크립트는 단순히 라이브 웹 디렉토리에 그것을 움직일 수 (beta.mysite.com를 통해 액세스 할) 준비 웹 폴더 다음 다른 배포 스크립트에 비트를 이동합니다. 라이브 사이트에 직접 배포하는 것은 좋은 생각이 아닙니다. 당신은 전용 호스트로 이동하기로 결정 또는 서버 컴퓨터에서 배포 할 경우

    , rsync를 사용합니다. 이것은 또한 현재 나의 설정입니다. rsync를은 (SSH를 통해) 차동 동기화를 수행 그래서 빨리 그리고 그것은 물건의 단지 이런 종류의 위해 지어졌습니다. 당신이 단위 테스트와 이것 저것와 빌드 도구를 사용할 수 있습니다 성장함에 따라

    . 이렇게하면 데이터 동기화 문제 만 남게됩니다.

    로컬 -> 로컬의 데이터 만 동기화하고 mysqldump을 사용하여 SSH를 통해이 작업을 수행하는 DOS 배치 파일을 사용합니다. Cygwin은 Windows 컴퓨터에 유용하지만 건너 뛸 수 있습니다. SQL 가져 오기 스크립트는 또한 로컬 배포를 위해 hostname 및 web root와 같은 일부 셀을 업데이트하기 위해 한 줄의 쿼리를 실행합니다.

    일단이 설정을 사용하면 코드 작성 및 원격 배포 또는 로컬 동기화에 초점을 맞출 수 있으며 배포는 한 번의 클릭 과정이됩니다.

    +0

    감사합니다. SVN 호스트에 대해 assembla를 사용하여 실제로 해당 서버에서 스크립트를 실행할 수 없습니다. – zenna

    +0

    코드가 컴퓨터에서 동기화되기 때문에 자신의 컴퓨터에서 스크립트를 실행하거나 파트너가 컴퓨터에서 스크립트를 실행할 수 있습니다. 스크립트는 저장소에 체크인 할 수도 있습니다. – aleemb

    1

    하나의 옵션은 작업을위한 전용 프레임 워크를 사용하는 것입니다. Capistrano은 PHP와 같은 스크립팅 언어에 매우 잘 어울립니다. Ruby를 기반으로하지만 검색을 수행하면 PHP 응용 프로그램을 배포하는 데 사용 방법에 대한 지침을 찾을 수 있어야합니다.