Deployer로 로컬 호스트에 디버깅
PHP Deployer 소개
PHP로 제작된 설계 도구
공식 링크: https://deployer.org/
문서: https://deployer.org/docs
소스 코드: https://github.com/deployphp/deployer
(영어지만 크롬의 일본어 번역을 사용하면 거의 다 읽을 수 있다.)
오래전
기트가 아직 사용되지 않았을 때 PHP, >>, css가 수동(SFTP)으로 서버에 업로드되는 것을 많이 보고 힘들어해 지원하는 도구를 제작해 편리하게 이용할 수 있도록 했다.
그리고 수년 후
어떤 프로그램 수정을 지원할 때 서버에 파일을 올려야 해서 예전 순서대로 해봤는데 여전히 귀찮아서 지령으로 한 번에 끝내려고 프로그램을 사용하기 시작했어요.
왜 Deployer
여러 가지 도구를 연구한 적은 없지만 평소 PHP에 익숙해졌고 시도해 보니 충분한 기능이 있음
왜?로컬 호스트 디버깅
터치
그럼 도입부터 (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가 뭐예요?
$ 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
curl -LO https://deployer.org/deployer.phar
mv deployer.phar dep
chmod +x dep
./dep list
php dep list
Follow redirects (H)
새로운 방향을 추구하다.
Write output to a file named as the remote file
원격 파일을 씁니다.
컬이 뭐예요?이런 분들도 괜찮아요.
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의 기술 내용이 완전히 다르기 때문에 정답이 없습니다!
정답은 자기 생각대로 디자인할 수 있다는 거예요!
서버 소유자
인터넷에 서버에 접속할 수 있는 다양한 정보가 있으니 도전해 보세요.
끝맺다
Reference
이 문제에 관하여(Deployer로 로컬 호스트에 디버깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tecokimura/items/d6fb591034a5461d38a6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ ./dep init
<?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의 기술 내용이 완전히 다르기 때문에 정답이 없습니다!
정답은 자기 생각대로 디자인할 수 있다는 거예요!
서버 소유자
인터넷에 서버에 접속할 수 있는 다양한 정보가 있으니 도전해 보세요.
끝맺다
Reference
이 문제에 관하여(Deployer로 로컬 호스트에 디버깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tecokimura/items/d6fb591034a5461d38a6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ mkdir dev pro
$ ls
dep deploy.php dev pro
$ ./dep deploy develop
$ ./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
Stage 환경 추가 시도
stg 폴더와 stage 환경 설정을 추가하여 디버깅하십시오.
하면, 만약, 만약...
만든 폴더를 삭제하고 처음부터 다시 하면 됩니다.
다음은 문서
움직이기만 하면 인상이 날 것 같아서 문서를 보세요.
그리고 이 처리는 어떻게 될까? GiitHub의 검색 입력으로 처리하면 열람이 가능하고 문서와 함께 보면 이해하기 쉽다.
또 회사 내에서 완전히 다른 프로젝트의 deploy도 있다.php의 기술 내용이 완전히 다르기 때문에 정답이 없습니다!
정답은 자기 생각대로 디자인할 수 있다는 거예요!
서버 소유자
인터넷에 서버에 접속할 수 있는 다양한 정보가 있으니 도전해 보세요.
끝맺다
Reference
이 문제에 관하여(Deployer로 로컬 호스트에 디버깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tecokimura/items/d6fb591034a5461d38a6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
움직이기만 하면 인상이 날 것 같아서 문서를 보세요.
그리고 이 처리는 어떻게 될까? GiitHub의 검색 입력으로 처리하면 열람이 가능하고 문서와 함께 보면 이해하기 쉽다.
또 회사 내에서 완전히 다른 프로젝트의 deploy도 있다.php의 기술 내용이 완전히 다르기 때문에 정답이 없습니다!
정답은 자기 생각대로 디자인할 수 있다는 거예요!
서버 소유자
인터넷에 서버에 접속할 수 있는 다양한 정보가 있으니 도전해 보세요.
끝맺다
Reference
이 문제에 관하여(Deployer로 로컬 호스트에 디버깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tecokimura/items/d6fb591034a5461d38a6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)