문제

내 컴퓨터와 SSH를 사용하는 웹 서버에 웹 앱이 있습니다.문제는 내 컴퓨터에서 로컬로 앱을 개발 중이고 FTP를 통해 파일을 복사하는 방식이 아닌 서버와 동기화하고 싶다는 것입니다.다른 방법이 있나요?자식?

도움이 되었습니까?

해결책

당신은 관련된 OS 또는 언어가 무엇인지 지정하지 않으므로 구체적이기가 어렵습니다.

GIT (및 SVN 및 Mercurial 등)는 버전 제어에 적합하지만 시스템을 동기화하려면 종종 버전 제어 이상이 필요합니다. 당신이 파이썬 유형의 사람이라면 당신은 독서를 즐길 수 있습니다. 최신 파이썬 해커의 도구 : Virtualenv, 직물 및 핍. 이것은 코드뿐만 아니라 전체 환경을 동기화하는 것에 대해 이야기합니다.

단순히 두 시스템에 파일을 동기화하려면 권장합니다. rsync. 나는 단일 시스템과 기계 간의 디렉토리 백업/동기화에 모든 종류의 작업에 사용합니다. 우리는 Socal에있는 고객이 있으며 5 개의 테라 바이트 이상의 데이터의 3 단계 백업 전략 (2 개, 사이트 1 오프 사이트)을 수행하고 있으며 그 핵심은 rsync이며 rsnapshot.

댓글 업데이트 :

귀하의 사이트가 무엇인지는 중요하지 않으며 여전히 확인해야합니다. 모두 당신의 변화가 생산에 이르렀습니다. 이것은 종종 다단계 프로세스입니다. 직물은 이러한 단계를 캡슐화하고 단일 명령으로 줄 이도록 특별히 설계되었습니다. PIP 및 VirtualEnV는 추가 라이브러리 변경 등을 캡처하는 데 더 많은 파이썬이지만 루비/레일은 아마도 동등한 것이있을 수 있습니다. 목표는 단일 명령을 갖는 것입니다 모든 것 DEV에서 준비로 이동해야하며 다른 단일 명령은 스테이징에서 프로덕션으로 이동해야합니다.

주의의 말 : ~ 아니다 Dev 시스템에서 프로덕션 디렉토리로 직접 자동 동기화됩니다. 항상 중간 단계 스테이징 디렉토리로 이동하십시오 생산 기계에서 첫 번째. 두 기계에는 100% 동일한 환경이 없으며 DEV에서 작동하는 것이 생산 기계에서 전혀 작동하지 않을 수 있습니다. 전체 생산 사이트가 500 오류로 이동하지 않고 스테이징에서 테스트하는 데 1 분 또는 2 분을 더 걸리는 것이 좋습니다.

다른 팁

개발 및 생산 빌드 모두에 대한 소스 코드 저장소의 자동 빌드가 있어야합니다.

또한 개발 및 생산 환경에 배포 할 자동 스크립트가 있어야합니다.

그런 다음 프로덕션에 배치하려면 개발자 코드를 확인하고 빌드 스크립트를 실행 한 다음 프로덕션 배포 스크립트를 실행하는 간단한 문제입니다.

사용중인 소프트웨어/환경/도구에 관계없이 유지됩니다.

나는 할 것이다 보통 유지해야합니다 git 개발 환경을 위해.

빌드는 배치 가능한 일부를 구성합니다 (a.tar.gz, 아마도) 빌드 할 태그를 지정하여 (빌드가 감사하고 반복 될 수 있도록)를 사용하여 서버를 사용하여 복사합니다. ssh/scp.

나는 단지 개발 환경에서 동기화되지 않을 것입니다. 당신은 개발중인 물건, 실험하고있는 것들, 도구 및 파일 지원 등을 원합니다.

Capistrano, originally built to deploy Rails applications in particular, has since been extended to deploy any kind of web application (called a rails-less deployment).

Once you set it up, the workflow looks like this:

  1. Edit the source of the program.
  2. Check-in your changes and push them to the central repository (git/mercurial/svn/whatever)
  3. Run cap deploy on your program.

Step 3 is where the magic happens, and this is what Capistrano was built to do. Capistrano will check out a new copy of your code from the repository, copy that code to a new "release" directory (named something like 20091028230834, a timestamp) and finally link the directory current to your latest copy. In the middle, it may run migrations if they exist. You're left with a directory setup like this:

...deploy-to-path/current  ->  ./releases/20091028230834
...deploy-to-path/releases/
    20091028230834/
    20091028225623/
    ...    # You can configure the number of releases kept after deployment.
...deploy-to-path/shared/
    cached-copy/  # A cached copy of your repository, which Capistrano updates
    ...           # Any shared data, like file uploads, for your application.

The documentation for Capistrano is not great. They really need someone to come along and write it cohesively. Essentially, though, what you're doing is writing a file (deploy.rb) with the following information:

  • Where is the server? (e.g. www.example.com)
  • What are your ssh credentials? (user, password)
  • Where is your code stored? (your repository URL)
  • Where do you want the code on the server?

To get started, I suggest running capify on your application (giving yourself the default files) and running it on a test server (or a test directory on the server) to see what it does. Once you get it deploying something, you can customize it to do extra moving/symlinking of things.

또한 제품을 어떻게 릴리스할지에 대해서도 생각해야 합니다. 지속적으로 변경 사항을 프로덕션에 적용하면 문제가 발생했을 때 추적하기가 매우 어려울 수 있습니다.

다른 사람들이 언급했듯이 git을 사용하여 동기화하여 코드를 관리할 수 있습니다.준비가 되었다고 생각되는 새로운 변경 사항 세트가 있으면 해당 사항을 브랜치로 이동하거나 최소한 태그를 지정하여 어떤 변경 사항이 함께 적용되었는지 알 수 있습니다.

그런 다음 해당 변경 사항을 스테이징 디렉터리로 동기화하고 해당 디렉터리에서 씬이 검증되면 스위치를 전환할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top