Deployer로 로컬 호스트에 디버깅

13845 단어 PHPdeployDeployer

PHP Deployer 소개


PHP로 제작된 설계 도구
공식 링크: https://deployer.org/
문서: https://deployer.org/docs
소스 코드: https://github.com/deployphp/deployer
(영어지만 크롬의 일본어 번역을 사용하면 거의 다 읽을 수 있다.)

오래전


기트가 아직 사용되지 않았을 때 PHP, >>, css가 수동(SFTP)으로 서버에 업로드되는 것을 많이 보고 힘들어해 지원하는 도구를 제작해 편리하게 이용할 수 있도록 했다.

그리고 수년 후


어떤 프로그램 수정을 지원할 때 서버에 파일을 올려야 해서 예전 순서대로 해봤는데 여전히 귀찮아서 지령으로 한 번에 끝내려고 프로그램을 사용하기 시작했어요.

왜 Deployer


여러 가지 도구를 연구한 적은 없지만 평소 PHP에 익숙해졌고 시도해 보니 충분한 기능이 있음

왜?로컬 호스트 디버깅


터치
  • 서버가 없는 사람
  • 서버 연결 불량으로 인한 정체
  • SSH에서 서버에 로그인한 후 간단한 디버깅을 수행하고자 합니다
  • Deployer가 무엇을 할 수 있는지 로컬에서 누구나 쉽게 테스트할 수 있기 때문에localhost deproy를 결정합니다.

    그럼 도입부터 (OS X에서 진행 중)


    내 PHP 버전

    $ php -v
    PHP 7.1.23 (cli) (built: Feb 22 2019 22:19:32) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    

    Deployer 다운로드


    정식 규정
    curl -LO https://deployer.org/deployer.phar
    mv deployer.phar/usr/local/bin/dep
    chmod +x/usr/local/bin/dep
    그러나/usr/local/bin은 여러 가지 이유로 설정할 수 없습니다
    curl -LO https://deployer.org/deployer.phar
    mv deployer.phar dep
    chmod +x dep
    ./dep list
    
    해도 돼.(다음은 같은 폴더에 설치된 상태에서 진행됨)
    겸사겸사 말씀드리겠습니다.
    php dep list
    
    그래서 +x 권한이 필요 없어요.

    컬의 옵션. - LO가 뭐예요?

  • -L, --location
    Follow redirects (H)
    새로운 방향을 추구하다.
  • -O, --remote-name
    Write output to a file named as the remote file
    원격 파일을 씁니다.
  • 무심결에 입력해서 help에서 복습해 봤어요.

    컬이 뭐예요?이런 분들도 괜찮아요.


    https://deployer.org/download/
    다운로드하려면 Downloads 목록을 클릭합니다.(신중을 기하기 위해 해시치 확인)
    어떤 이유로 구 버전이 필요하다면 이 주소부터 시작하십시오
    (이번에는 6.6.0을 사용했다.)

    사전 초기화

    $ ./dep init
    
    모든 질문을 입력하지 않고 Enter 키를 눌러 기본 설정 테스트를 완료합니다.
    (나중에 수정, 재작업 가능)

    잘못 입력해도 괜찮아요.


    같은 폴더에 deploy.php가 완성되었을 때 삭제하고 init의 지령처럼 다시 수정하면 됩니다.
    deploy.php가 있으면 성공한다.

    테스트용 로컬 프로그램을 붙입니다.

    <?php
    // ./dep init で作ってくれたもの
    namespace Deployer;
    // ./dep init で作ってくれたもの
    require 'recipe/common.php';
    
    // プロジェクト名。自分でわかりやすいのを付けましょう。 
    // set('xxx') はあとの処理で get('xxx') で取得できます。
    set('application', 'local-deploy');
    
    // プロジェクトのgitリポジトリを書く(ここにはサンプルにDeployerのリポジトリを書いてます)
    set('repository', 'https://github.com/deployphp/deployer.git');
    
    // [Optional] Allocate tty for git clone. Default value is false.
    // ここはデフォルトのままにしてますが、git cloneの仕方でtrue or falseを切り替える
    set('git_tty', true);
    
    // Shared files/dirs between deploys
    // デプロイしても共有するディレクトリ、ログやキャッシュなど必要であれば
    set('shared_files', []);
    set('shared_dirs', []);
    
    // Webサーバが書き込み可能にするディレクトリ
    set('writable_dirs', []);
    
    // 環境を指定しない場合のデフォルトのステージ(環境)
    set('default_stage', 'develop');
    
    // 現在のディレクトリ位置を保存する(追加した)
    // このようにPHPの関数が使えます。
    set('current_dir', realpath(''));
    
    // ロールバックできる世代数
    // スペルを間違えると反映されません(sを最後につけ忘れた経験あり)
    set('keep_releases', 3);
    
    // ローカルホストに開発環境をデプロイする想定
    // 環境は開発、ブランチはnext、デプロイ先は実行しているフォルダにあるdevへ
    localhost('local-dev')
        ->stage('develop')
        ->set('branch', 'next')
        ->set('deploy_path', get('current_dir').'/dev')
        ;
    
    // ローカルホストに本番環境をデプロイする想定
    // 環境は開発、ブランチはnext、デプロイ先は実行しているフォルダにあるdevへ
    localhost('local-pro')
        ->stage('production')
        ->set('branch', 'master')
        ->set('deploy_path', get('current_dir').'/pro')
        ;
    
    // Tasks
    // 実際のデプロイのフローと説明
    desc('Deploy your project to localhost');
    task('deploy', [
        'deploy:info',
        'deploy:prepare',
        'deploy:lock',
        'deploy:release',
        'deploy:update_code',
        'deploy:shared',
        'deploy:writable',
        // 'deploy:vendors', // composerを使っていないのでコメントアウト。他のタスクも自由に入れ替えができます。
        'deploy:clear_paths',
        'deploy:symlink',
        'deploy:unlock',
        'cleanup',
        'success'
    ]);
    
    // [Optional] If deploy fails automatically unlock.
    // deployが失敗した場合にはunlockを呼び出してね。という設定
    after('deploy:failed', 'deploy:unlock');
    
    // 自分で足したHelloWorld
    // ./dep hello
    // で実行できます
    desc('Hello world');
    task('hello', function() {
        // Hello Worldと出して終わり
        writeln('Hello world');
    });
    
    

    디버그를 테스트하기 전에 대상 폴더를 만듭니다


    대상 폴더를 만듭니다.
    mkdir dev pro
    $ ls
    dep  deploy.php  dev pro
    
    이렇게 구성합니다.

    개발 구상

    $ ./dep deploy develop
    
    default는 개발자이기 때문에 마지막 개발자는 생략할 수 있습니다.

    공식적인 구상

    $ ./dep deploy production
    

    다음 필요하지 않은 명령을 삭제, 주석, 추가 또는 이름을 바꿀 수 있습니다.

    task('depuroi', [
        'deploy:info',
        'hello', // 追加
        'deploy:prepare',
        'deploy:lock',
        'deploy:release',
        'deploy:update_code',
        // 'deploy:shared',  // 外してみた
        // 'deploy:writable',// 外してみた
        // 'deploy:vendors', // composerを使っていないのでコメントアウト。他のタスクも自由に入れ替えができます。
        'deploy:clear_paths',
        'deploy:symlink',
        'deploy:unlock',
        'cleanup',
        'success'
    ]);
    
    작업의 이름이 바뀌었기 때문에 이 작업을 실행합니다.
    $ ./dep depuroi
    

    디버그 완료


    나는 일하고 있는 devpro가 각각 GiitHub의 Deployer의 지점 차이를 설계했다고 생각한다.

    하면, 만약, 만약...


    Stage 환경 추가 시도


    stg 폴더와 stage 환경 설정을 추가하여 디버깅하십시오.

    하면, 만약, 만약...


    만든 폴더를 삭제하고 처음부터 다시 하면 됩니다.

    다음은 문서


    움직이기만 하면 인상이 날 것 같아서 문서를 보세요.
    그리고 이 처리는 어떻게 될까? GiitHub의 검색 입력으로 처리하면 열람이 가능하고 문서와 함께 보면 이해하기 쉽다.
    또 회사 내에서 완전히 다른 프로젝트의 deploy도 있다.php의 기술 내용이 완전히 다르기 때문에 정답이 없습니다!
    정답은 자기 생각대로 디자인할 수 있다는 거예요!

    서버 소유자


    인터넷에 서버에 접속할 수 있는 다양한 정보가 있으니 도전해 보세요.

    끝맺다

    좋은 웹페이지 즐겨찾기