WordPress 환경에서 Search-Replace-DB+Shell을 사용하여 운영 환경의 DB 동기화를 해결하는지 확인합니다!흐른다
아메바와 Seessa 등 블로그 서비스와 마찬가지로 디자이너에게 투고를 의뢰할 수 있기 때문에 체계적인 사람은 게시 작업을 할 필요가 없다.
와!너무 좋아요!배치할 필요가 없어서 매우 쉽다.
운영 환경에 새 템플릿을 추가하려면 다음과 같이 하십시오.
새 템플릿을 추가할 때 페이지 수는 10.20입니다...디자인도 제각각이다.
이때 발표까지의 과정은 매우 길어졌다.
Wordpress 출시 완료까지의 절차
검증 환경에 운영 데이터베이스 및 템플릿 정보 포함
↓
DB 내의 사이트 URL을 인증 환경 URL로 변환하여 인증 환경 DB 가져오기
↓
검증 환경에서 디자인 템플릿 제작(디자이너 작업)
↓
운영 환경에 템플릿 업로드
↓
데이터베이스의 사이트 URL을 운영 URL로 변환하여 운영 데이터베이스 가져오기
↓
게시 완료
시스템 하우스 일이 많아요...
디자이너는 템플릿 제작만 완성하지만, 시스템하우스 씨가 준비하고 발표하는 작업은 심각합니다!
그리고 매번 이런 일을 하면 효율이 매우 떨어진다.
만약 이 점을 할 수 있다면 시스템 가게도 가벼워질 것이다
이것을 만들 수 있는 물건이 있는지 찾아보니 몇 개가 있었다.
WP에서 운영 환경을 동기화하는 방법
Wordmove 사용: 난이도 ★★★☆
Wordmove는 루비가 만든 도구로 Capistrano2를 기반으로 합니다.
제가 뭘 할 수 있을까요?
http://qiita.com/akiko-pusu/items/43d87896a518233d9503
이렇게 하면 문제가 해결된다!Q.E.D!DB 내 정렬된 웹 사이트 URL은 변환되지 않을 것으로 예상됩니다.
Search-Iplace-DB에서 서열화된 DB 내용을 정확하게 개작하기: 난이도 ★☆☆☆
사용자 정의 필드에 URL을 저장하면 내용이 정렬되어 데이터베이스에 저장됩니다.
따라서 URL의 문자 수가 검증 및 운영 환경에 따라 잘못 바뀌면 PHP 오류가 발생합니다.
PHP 오류가 발생한 예를 잘 바꾸지 못함↓
서열화 전
array('hoge.com')
서열화 후a:1:{i:0;s:8:"hoge.com";}
hoge.com은 staging입니다.hoge.unserialize 대신com을 사용하면...php > var_dump(unserialize('a:1:{i:0;s:8:"staging.hoge.com";}'));
PHP Notice: unserialize(): Error at offset 22 of 33 bytes in php shell code on line 1
PHP Stack trace:
PHP 1. {main}() php shell code:0
PHP 2. unserialize('a:1:{i:0;s:8:"staging.hoge.com";}') php shell code:1
bool(false)
bool(false)이 돌아왔습니다!PHP 도구의 검색 - 데이터베이스를 복사합니다.
다음 명령을 사용하여 DB의 URL을 한 번에 덮어씁니다.
php srdb.cli.php -h='localhost' -u='root' -p='hoge' -n='hoge_db' -s='hoge.com' -replace='staging.hoge.com'
아주 좋은 서열화된 URL도 정확하게 고칩니다!검증과 생산 중의 문자 수가 다르더라도 상응하는serialize 결과를 데이터베이스에 다시 저장할 수 있습니다.
그러나 데이터베이스 내용을 직접 개작해야 하기 때문에 그 결과를 생산에 올려야 한다.
또한 재작성 목표가 DB 검증인 경우 작업을 취소할 수도 있습니다...
셸 + 검색 - 데이터베이스 복사 에서 데이터베이스 동기화를 한 번에 해결하는 명령:난이도 ★★★★
Search-Reaplace-DB는 DB를 직접 덮어쓰기 때문에 검증 환경 DB의 덮어쓰기 결과를 생산 DB로 가져와야 합니다.
이런 명령을 한 번에 내리는 방법은 껍데기를 채택해야 한다.어쩔 수 없다...
▶ 검증 환경에서 생산 환경으로 DB 가져오기 절차 ▼
준비: 검색 다운로드 - 데이터베이스 복사
git-hub에서 다음 파일을 다운로드하십시오.
* https://raw.githubusercontent.com/interconnectit/Search-Replace-DB/master/srdb.class.php
* https://raw.githubusercontent.com/interconnectit/Search-Replace-DB/master/srdb.cli.php
검증에서 생산까지의 케이스 스크립트 내용
wp-db-push.sh
#!/bin/sh
NOW=`date +"%Y%m%d_%H%M"`
SEARCH=$1
REPLACE=$2
#dumpファイルの保存先
BAK_LOCAL="/tmp/local.bk.$NOW.sql"
BAK_REMOTE="/tmp/remote.bk.$NOW.sql"
REPLACE="/tmp/replace.$NOW.sql"
#検証環境のDBをバックアップ
echo "mysqldump -uroot -phoge hoge_db > $BAK_LOCAL"
mysqldump -uroot -phoge hoge_db > $BAK_LOCAL
#ファイルがない場合は終了
if [ ! -s $BAK_LOCAL ]; then
echo "dump failed: check $BAK_LOCAL"
exit
fi
#DB内容を書き換え
echo "php srdb.cli.php -h='localhost' -u='root' -p='hoge' -n='hoge_db' -s=$SEARCH -r=$REPLACE"
php srdb.cli.php -h='localhost' -u='root' -p='hoge' -n='hoge_db' -s=$SEARCH -r=$REPLACE
#検証DBをdump
echo "mysqldump -uroot -phoge hoge_db > $REPLACE"
mysqldump -uroot -phoge hoge_db > $REPLACE
#検証DBを元に戻す
echo "mysql -uroot -phoge hoge_db < $BAK_LOCAL"
mysql -uroot -phoge hoge_db < $BAK_LOCAL
#ファイルがない場合はDBを元に戻して終了
if [ ! -s $BAK_LOCAL ]; then
echo "dump failed: check $REPLACE"
echo "mysql -uroot -phoge hoge_db < $BAK_LOCAL"
exit
fi
#本番DBに接続して、データをバックアップ(SSHで接続しない場合は-hを変えてください)
echo "ssh [email protected] mysqldump -uroot -phoge -hlocalhost hoge_db > $BAK_REMOTE"
ssh [email protected] mysqldump -uroot -phoge -hlocalhost hoge_db > $BAK_REMOTE
#ファイルがない場合は終了
if [ ! -s $BAK_REMOTE ]; then
echo "dump failed: check $BAK_REMOTE"
exit
fi
#本番環境に取り込む
echo "ssh [email protected] mysql -uroot -phoge -hlocalhost hoge_db < $REPLACE"
ssh [email protected] mysql -uroot -phoge -hlocalhost hoge_db < $REPLACE
반대로 데이터베이스를 생산에서 검증된 케이스 스크립트로 도입하는 내용wp-db-pull.sh
#!/bin/sh
NOW=`date +"%Y%m%d_%H%M"`
SEARCH=$1
REPLACE=$2
#dumpファイルの保存先
BAK_LOCAL="/tmp/local.bk.$NOW.sql"
BAK_REMOTE="/tmp/remote.bk.$NOW.sql"
#検証環境のDBをバックアップ
echo "mysqldump -uroot -phoge hoge_db > $BAK_LOCAL"
mysqldump -uroot -phoge hoge_db > $BAK_LOCAL
#ファイルがない場合は終了
if [ ! -s $BAK_LOCAL ]; then
echo "dump failed: check $BAK_LOCAL"
exit
fi
#本番DBに接続して、データをダンプ(SSHで接続しない場合は-hを変えてください)
echo "ssh [email protected] mysqldump -uroot -phoge -hlocalhost hoge_db > $BAK_REMOTE"
ssh [email protected] mysqldump -uroot -phoge -hlocalhost hoge_db > $BAK_REMOTE
#ファイルがない場合は終了
if [ ! -s $BAK_REMOTE ]; then
echo "dump failed: check $BAK_REMOTE"
exit
fi
#検証DBに本番DBを取り込む
echo "mysql -uroot -phoge hoge_db < $BAK_REMOTE"
mysql -uroot -phoge hoge_db < $BAK_REMOTE
#DB内容を書き換え
echo "php srdb.cli.php -h='localhost' -u='root' -p='hoge' -n='hoge_db' -s=$SEARCH -r=$REPLACE"
php srdb.cli.php -h='localhost' -u='root' -p='hoge' -n='hoge_db' -s=$SEARCH -r=$REPLACE
이상입니다.총결산
참고로 capistrano를 사용하여 wordpress를 배치할 때
상술한 케이스를 함께 넣으면 행복해집니다.
Reference
이 문제에 관하여(WordPress 환경에서 Search-Replace-DB+Shell을 사용하여 운영 환경의 DB 동기화를 해결하는지 확인합니다!흐른다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tadatti/items/69cca7b71877eaa15393텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)