방법 : WordPress 설치를 개발에서 프로덕션으로 쉽게 옮길 수 있습니까?


199

한 상자에서 개발을하고 두 번째 상자를 생산에 사용합니다. 지금은 데이터베이스를 덤프 한 다음 URL 변경을 대체합니다. 그런 다음 파일을 복사하고 새 SQL을 가져 오십시오.

더 좋은 방법이 있습니까?


2
qeustion에 새로 온 사람들을 위해. 1 년 후에도 여전히 @MikeSchinkel 플러그인을 사용하고 있습니다. 그는 몇 가지 설치를 문제없이 옮겼다는 것을 0.7 밖으로 알았습니다. mikeschinkel.com/downloads/wp-migrate-webhosts-0.7.zip
Ryan Gibbons

내 프로세스가 엄청나게 도움이되는 플러그인이없는 스크립트가 있습니다. philipdowner.com/2012/01/…
Philip Downer


6
오늘날 Duplicator라는 플러그인이 있습니다. wordpress.org/extend/plugins/duplicator 말 그대로 3 단계 프로세스이며 매력처럼 작동합니다. 웹 사이트를 테스트 환경에서 실제 웹 사이트로 배포하는 데 이미 여러 번 사용했습니다.
Matthias

답변:


122

@ Insanity5902 : WordPress 사이트를 한 상자에서 다른 상자로 배포하는 것은 WordPress로 작업하기 시작한 날부터 PITA였습니다. (True-Be-Told는 WordPress를 시작하기 전에 2 년 동안 Drupal의 PITA 였으므로 WordPress에만 문제가있는 것은 아닙니다.)

사이트를 이동해야 할 때마다 너무 자주 중복되는 노력을 기울여야하므로 원하는만큼 자주 테스트를 배포하지 못하게되었습니다. 약 4-6 개월 전에 웹 호스트 마이그레이션 문제를 해결하기 위해 플러그인 작업을 시작했으며 WP Tavern 포럼에서 아이디어를 언급했습니다 .

오늘로 빨리 넘어 가면 거의 작동하고 있으며 " WP Migrate Webhosts "라고 편리하게 부르고 있습니다 . 귀하의 질문에 따라 플러그인이 여전히 베타 (아마도 알파) 일지라도 사람들이 그것을 시작하게 할 준비가 된 것 같습니다.

계획된 유스 케이스는 다음과 같습니다.

  1. 먼저 개발자는 FTP를 통해 변경된 테마 및 플러그인 파일을 모두 업로드합니다.
  2. 그런 다음 개발 MySQL 데이터베이스를 테스트 서버에 완전히 업로드하고 마지막으로
  3. 그런 다음 플러그인을 실행하여 이전 도메인의 참조를 새 도메인으로 마이그레이션합니다. (내 플러그인 않습니다 하지 , 새로운 데이터베이스 필드 또는 라이브 데이터 테이블의 병합으로 문제 해결을 시도 THAT I 해결하는 방법을 잘 모르겠어요 그 훨씬 더 큰 문제입니다.)

당신은 수있는 플러그인을 다운로드하여 내 웹 사이트에서 당신의 플러그인 디렉토리에 압축을 풉니 다 (그들이 그것을 사용하기 위해 무엇을하고 있는지 아는 사람이 필요하기 때문에 당신이 다음이 플러그인은 당신을 위해하지 않습니다이 작업을 수행하는 방법을 모르는 경우.) 나는거야 이 플러그인을 WordPress.org에 릴리스 할 때까지 온라인 상태로 유지하십시오.

그것을 사용하려면 당신의 다른 접근 방식을 wp-config.php주석하여 해당 일반 네 (4) 정의 DB_NAME, DB_USER, DB_PASSWORD그리고 DB_HOST대신 등록 웹 호스트의 기본값을 다음 각 웹 호스트 자체에 대한 정보를 등록. 그 부분은 wp-config.php다음과 같습니다. 첫 번째 섹션은 주석 처리 된 불필요한 코드이며, .dev일상적인 개발을 더 쉽게하기 위해 라우팅 할 수 없는 최상위 도메인으로 로컬 컴퓨터에 호스트 파일을 설정했습니다 . Mac에서 VirtualHostX 는 이것을 산들 바람처럼 만듭니다) :

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
//define('DB_NAME', 'wp30');

/** MySQL database username */
//define('DB_USER', 'wp30_anon');

/** MySQL database password */
//define('DB_PASSWORD', '12345');

/** MySQL hostname */
//define('DB_HOST', '127.0.0.1:3306');

require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/wp-webhosts.php');
register_webhost_defaults(array(
 'database'  => 'example_db',
 'user'      => 'example_user',
 'password'  => '12345',
 'host'      => 'localhost',
 'sitepath'  => '',        // '' if WordPress is installed in the root
));
register_webhost('dev',array(
 'name'      => 'Example Local Development',
 'host'      => '127.0.0.1:3306',
 'domain'    => 'example.dev',
 'rootdir'   => '/Users/mikeschinkel/Sites/example/trunk',
));
register_webhost('test',array(
 'name'      => 'Example Test Server',
 'rootdir'   => '/home/example/public_html/test',
 'domain'    => 'test.example.com',
));
register_webhost('stage',array(
 'name'      => 'Example Staging Server',
 'rootdir'   => '/home/example/public_html/stage',
 'domain'    => 'stage.example.com',
));
register_webhost('live',array(
 'name'      => 'Example Live Site',
 'rootdir'   => '/home/example/public_html/',
 'password'  => '%asd59kar12*fr',
 'domain'    => 'www.example.com',
));
require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/set-webhost.php');

바라건대 이것은 (주로) 자기 설명입니다. 나는 내가 할 수있는대로 코드를 깨끗하게 만들기 위해 시도했지만 불행히도이 두 비밀이 필요합니다 require_once()날 "할 방법이 없었기 때문에 이전과 웹 호스트 등록 코드 블록 후 선을 "워드 프레스는 전 wp-config.php이라고는.

업데이트 wp-config.php한 후에는 URL 바로 가기 wp-migrate-webhosts를 사용 하여 다음 과 같이 관리자 화면으로 이동할 수 있습니다.

http://example.com/wp-migrate-webhosts

위의 내용은 다음과 같은 관리 화면으로 이동하여 설명 텍스트가 약간 있으며 마이그레이션 할 도메인을 선택한 후 한 번의 클릭으로 다른 웹 호스트 도메인 에서 FROM 을 마이그레이션 할 수 있습니다 ( 참고 :이 예는 DOWN 지역 발전하지만 나머지 테스트 / 무대 / 라이브 서버에서이 마이그레이션 할 수 있습니다 보장 에게 이 위치 할 일이 모든 도메인. 이것은 또한 의미 플러그인이 기존의 라이브 사이트를 복용하고 신속하게 로컬 개발 환경 작업을 얻기를위한 좋은 것입니다! ) :

여기에 이미지 설명을 입력하십시오

분명히 "아니라면 마이그레이션 이 상황은 현재 정의 된 웹 호스트에 적합한 것으로 현재 데이터베이스에있는 모든 참조를 업데이트하는 것을 의미에서"( "와 전류가 "있다 맡아 봤다고 검사하여 $_SERVER['SERVER_NAME'].)

플러그인의 멋진 점은 기본 마이그레이션을 구현하지만 누구나 플러그인 을 연결하고 자체 마이그레이션을 수행 할 수 있다는 것 입니다. 예를 들어 데이터베이스의 이미지에 대한 전체 경로를 저장하는 갤러리 플러그인을 추가하면 메타 데이터 배열로 각각 migrate_webhosts" from "webhost 및 " to "webhost 로 전달되는 작업을 연결할 수 있습니다. SQL 또는 해당 WordPress API 함수를 사용하여 데이터베이스에서 수행해야 할 모든 작업을 수행하여 마이그레이션을 수행합니다. 예, 우리 중 누구도 플러그인 없이이 작업을 수행 할 수 있지만 플러그인이 없으면 필요한 모든 코드를 작성하는 것이 가치있는 것보다 더 많은 노력이 필요하다는 것을 알았습니다. 플러그인을 사용하면 이러한 작은 고리를 작성하고 끝내기가 더 쉽습니다.

테스트하지 않은 엣지 케이스에서 마이그레이션이 실패하고 플러그인을 개선하는 데 도움이 될 수 있습니까? 내 gmail 계정을 통해 이메일을 보내려는 사람은 누구나 (내 별명은 "mikeschinkel"입니다.)

또한, 플러그인은이 같은 인식에 더하여 사용자 정의 웹 호스트에 메타 데이터를 수용하도록 설계되었다 database, user, password, host, domain수도 등의 완벽한 예를 들어 googlemaps_apikey당신이 당신의 구글지도의 플러그인에 필요한 각 도메인에 대해 서로 다른 API 키를 저장할 수있는 올바른 운영을 위해 (Google Maps 플러그인을 사용한 사용자 중 누가 라이브 서버에 앱을 배포하지 않았으며 코드를 올바른 API 키로 변경하는 것을 잊었습니까? googlemaps_apikeyregister_webhost () 배열 의 요소와 작은 사용자 정의 migrate_webhosts후크를 사용하면 문제를 효과적으로 제거 할 수 있습니다!

그게 다야. @ Insanity5902의 질문으로 인해 플러그인이 WordPress Answer 's Exchange에서 시작되었습니다. 도움이된다면 여기로 알려주십시오 (해당되는 경우). 그렇지 않은 경우 이메일을 통해 알려주십시오.

추신 당신이 이것을 사용하기로 결정했다면 그것은 알파 / 베타라는 것을 기억하십시오. 그것은 그것이 당신이 지금 그것을 사용하고 싶다면 많은 손에 의해 구타되면 릴리스 된 버전을 사용하기 위해 약간의 작은 수술을 위해 준비되어 있음을 의미합니다.

PPS 이것으로 나의 목표는 무엇입니까? 모든 사람들이 액세스 할 수 있도록 WordPress 코어로 마이그레이션하는 것을보고 싶습니다. 그러나 그 전에는 많은 사람들이 실제로 더 많은 문제를 해결하여 잠재적으로 발생할 수있는 문제를 해결하는 데 관심을 가져야한다고 생각하기까지합니다. 따라서 아이디어가 마음에 드시면 아이디어를 사용하여 WordPress 코어에 희망적으로 포함되도록 아이디어를 추진하십시오.


좋은 해결책 몇 가지 질문이 있습니다. 1) 관리자 영역으로 들어가려면 WP_SITEURL을 정의해야합니까? 2)이 도구는 관리자 만 표시합니까? (도구 섹션에 관리자가 아닌 사람이 표시되는지 확실하지 않음)
Ryan Gibbons

안녕 @ Insanity5902 : 1) WP_SITEURL을 설정할 필요가 없습니다. 플러그인이 대신합니다. 웹 호스트에 대한 "도메인"및 "사이트 경로"를 "등록"할 때 실제로 설정합니다. 정상적인 WordPress 작업에서 $ _SERVER [ 'SERVER_NAME']의 예기치 않은 값으로 인해 URL을 스푸핑하지 않고 악의적 인 일을 수행하지 않도록 코드 나 데이터베이스에서 WP_SITEURL을 설정해야합니다. WP Migrate Websites 플러그인은 $ _SERVER [ 'SERVER_NAME']을 (를) 기반으로 WP_SITEURL을 간접적으로 설정하지만 현재 도메인이 wp-config.php 파일에 정의한 도메인 중 하나와 일치하는 경우에만 그렇게합니다.
MikeSchinkel

2.) 내가 언급 한 URL 바로 가기는 실제로 관리 콘솔로의 리디렉션을 수행하므로 관리자에 로그인 한 사람 만 사용할 수 있습니다. 그래도 관리자에 대한 특정 검사는 아직 내장되어 있지 않습니다. 나는 플러그인에 기능을 추가 한 적이 없지만 다음 몇 주 동안 어떻게 다음 달에 그 기능을 수행 할 수 있는지 완전히 연구해야 할 것이다. 그러나 플러그인은 파괴적이지 않습니다. 그것은 현재 도메인으로 만 마이그레이션 할 수 있으며 프로세스는 반복 가능하므로 관리자가 아닌 사람이 실제로 할 수있는 피해는 없지만 적어도 내가 상상할 수는 없습니다.
MikeSchinkel

1
/ wp-migrate-webhosts는 404를 생성하고 / wp-admin은 '데이터베이스 연결 설정 오류'를 생성합니다
Steve

5
이 플러그인의 상태는 어떻습니까? 매우 매력적으로 보이지만 성숙하고 신중한 것을 원합니다. 이 게시물은 내가 찾을 수있는 유일한 정보입니다.
Kevin C.

35

가능하면 내가 설정 WP_HOMEWP_SITEURL에서 wp-config.php. 이것은 데이터베이스 덤프 및 가져 오기와 함께 내가 익숙한 모든 솔루션 중에서 가장 단순합니다.

http://codex.wordpress.org/Changing_The_Site_URL#Edit_wp-config.php


1
언제 이것을 설정할 수 없습니까? 데이터베이스에서 변경하는 것보다 약간 간단하게 들립니다.
jfklein

2
@jfklein 나는 거의 항상 이러한 상수와 호환되지 않는 WordPress Network로 작업하고 있습니다.
Annika Backstrom

1
똑같이 유감스럽게도 모든 테마가 이것을 존중하는 것은 아닙니다. 즉, ThemeID의 'Repsonsive Theme'. ' localhost '(또는 선택한 로컬 이름), 특히 wp_options에 대한 덤프 / 모든 테이블을 검색하고 검색 및 바꾸기를 수행하는 것은 종종 불가피합니다.
Frank Nocke

@FranKee 나는 플러그인 작성했습니다 wordpress.org/plugins/pitta-migration 대부분의 테마와 플러그인을 포함해야 wp_options 테이블 업데이트 할 상수를 사용합니다
icc97

@ icc97 : 사랑스러운. 그것을 볼 것입니다. 추신 : 멋진 헤더 이미지, 상황을 보여줍니다.
Frank Nocke

27

내가 가장 좋아하는 핵 /etc/hosts프로덕션 도메인이 시스템에서 개발 상자를 가리 키도록 설정을 추가 하십시오. 프로덕션 환경에 배포하려면 모든 파일을 재 동기화하고 데이터베이스를 푸시하십시오.

이 전략의 위험은 분명합니다. 개발 환경과 프로덕션 환경을 혼동 할 수 있습니다.

그래도 여전히 쉬운 수정입니다.


5
예! 내가 생각한 유일한 사람이 아니 어서 너무 기쁘다! 어떤 dev에와 자극의 차이가 불량입니다. 그 차이를 완전히 없애는 것이 그 문제를 해결하는 것보다 훨씬 낫습니다. 그리고이 설정은 전혀 작동하지 않습니다. 필요한 경우 수정 된 호스트 파일이있는 가상 시스템에서 테스트를 수행 할 수도 있습니다.
Alexander Bird

2
나는이 방법을 많이 좋아하지만 데이터베이스 푸시 / 풀을 어떻게 처리합니까?
Nenotlep

dev와 prod를 혼동시킬 위험에 대해서는 웹 페이지의 IP 주소를 표시하는 Chrome 플러그인을 사용합니다. 127.0.0.1
kosinix가 12:16

9

몇 달 전에 WP로 마이그레이션 할 때 비슷한 것을 원했기 때문에 ssh를 통해 rsync 및 mysqldump를 사용하는 매우 간단한 쉘 스크립트를 작성했습니다.

http://snarfed.org/sync_wordpress

정교하거나 웹 기반은 아니지만 행복합니다.


8

WP Engine 은 "원 클릭 스테이징"을 제공하는 새로운 서비스입니다.

WPEngine에는 "스테이징"이라는 전용 기능이 있습니다. 작동 방식은 다음과 같습니다. 블로그를 크게 변경하기 전에 "스냅 샷"버튼을 클릭하십시오. 우리는 블로그의 완전한 사본을 만들어 별도의 안전한 장소에 설치합니다. 원하는 것을 가지고 놀 수 있습니다. 아무것도 없습니다. 당신이 그것을 만들 준비가되었을 때만 당신은 당신의 메인 사이트를 터치합니까.

특히 이미 라이브 사이트에서 개발에서 프로덕션으로 빠르게 이동할 수있는 매우 쉬운 방법 인 것 같습니다.


3
그것은 정말 좋은 옵션이며 많은 사람들에게 좋을 것입니다! 물론 임베디드 URL에서는 작동하지 않으며 로컬에서 개발하는 사람들에게 도움이되므로 디버거와 함께 IDE를 사용할 수 있습니다. WPEngine이 로컬 배포를 병합하는 상호 작용을 만들 수 있다면 실제로 무언가가 될 것입니다 (Technosailor, 듣고 계십니까?)
MikeSchinkel

동의, 그것은 환상적인 추가 일 것입니다.
Travis Northcutt

스냅 샷 기능 은 다른 방법이 아닌 프로덕션에서 스테이징으로 복사 합니다 . 변경 사항을 테스트하는 데는 좋지만 프로덕션 환경에 배포하는 데는 도움이되지 않습니다.
sam

2
@sam은 실제로 최근에 준비에서 프로덕션으로 복사하는 기능을 출시하기 시작했습니다. wpengine.com/2013/04/user-portal-v2-and-Staging-to-production
Travis Northcutt

7

Duplicator 플러그인 : 여기 제가 작업 한 플러그인이 있습니다. 현재 베타 버전이지만 대부분의 사이트에서 작업이 완료됩니다. 현재는 소규모 WordPress 설치를 대상으로합니다. http://wordpress.org/extend/plugins/duplicator/

참고 자료 : 플러그인에 대한 추가 자료는 http://lifeinthegrid.com/duplicator/ 에서 찾을 수 있습니다.

커뮤니티 : 귀하의 성공 또는 발생할 수있는 문제에 대해 알려주십시오! 다양한 스레드를보다 쉽게 ​​관리하기 위해 WordPress.org 플러그인 포럼에 문제를 게시하십시오. 플러그인에서 온라인 포럼으로 로깅 데이터를 게시하지 마십시오. 로깅 데이터는 지원 사이트에 제출할 수 있습니다.


6

iThemes의 제품인 BackUpBuddy를 살펴볼 수 있습니다. 나는 두 번만 사용했는데, 매번 한두 가지 문제가 있었지만 전반적으로 유망한 것으로 보입니다.


5

Github에서 Autopress 라는 프로젝트를 통해이 문제를 개인적으로 해결하고 있습니다. 아직 완벽한 솔루션은 없지만 특히 wpengine 사람들의 wpstage 플러그인을 사용하면 더 가까워지고 있습니다.


스크립트를 체크 아웃했습니다. 좋은. 내가 이해하면 서버에 새로운 WP를 설치합니다. 여기서 문제는 개발에서 프로덕션으로 마이그레이션하는 방법입니다. 도움이 될까요?
Sruly

17
이거예요? github.com/vluther/Autopress 사람들이 바로 클릭 할 수 있도록 답변에 링크를 만드는 것이 좋습니다!
artlung

4
@Mike Lee : 그렇습니다. 의견을 투표 할 수 있습니다. 나는 artlung의 의견을 찬성했다. 댓글 왼쪽의 호버에서 위쪽 화살표를 찾으십시오.
MikeSchinkel

모든 것을 버전 관리 상태로 유지하고 개발에서 프로덕션으로 추진하는 방법을 찾고 있습니다. 이미 몇몇 사이트에서 아무런 문제없이 할 수 있었지만 여전히 해결해야 할 부분이 있습니다.
Vid Luther

1
이것이 맞는지 확실하지 않지만 호스트 간 사이트 마이그레이션에 사용되는 WP Engine 플러그인이 있습니다. 이것을 Snapshot ( Direct link )이라고합니다.
joelhaus

5

이것은 유망 해 보인다. 우리는 일부 데이터 마이그레이션을 처리하기 위해 스크립트를 연구하고 있습니다.

내가 가진 문제는 라이브 사이트가 계속 성장하는 반면 다른 사이트는 개발 중이라는 것입니다. 우리가 작업하는 한 사이트에는 하루에 20 개의 게시물과 3,000 개가 넘는 댓글이 있습니다. phpmyadmin 또는 명령 줄을 통해 이동하기에는 너무 많은 데이터입니다. 또한 데이터를 이동하면 항상 어떤 이유로 UTF 문제가 발생합니다.

또한 메뉴 옵션이 DB에 저장되어있는 것처럼 보이므로 이제 더 다루어야합니다.

모든 코드를 SVN에 체크인하고 서버 (Beanstalk)에서 FTP를 통해 코드를 배포합니다. 이것은 나를 위해 DB를 변경하거나 새로운 플러그인을 활성화하지 않습니다.

현재 계획은 라이브 사이트에 대한 모든 변경 사항을 수행하기 위해 개발하는 동안 매니페스트 파일을 만드는 것입니다.

예를 들어 파일에는 사람이 읽을 수있는 줄이 있습니다.

여기에는 활성화 할 플러그인, 이동할 wp 옵션, 이동할 이미지, 이동할 페이지가 포함됩니다. 그런 다음 플러그인에서 매니페스트 파일을 감지하고 준비 사이트를 모두 변경합니다.

일단 그것을 테스트하고 모든 것을 얻었음을 확신하면 프로덕션에서 작동 할 것입니다.

이 플러그인은 여전히 ​​아이디어 일 뿐이지 만 코드를 작성했습니다.

또한 DB의 URL 만 변경하려는 경우 다음 SQL을 사용할 수 있습니다.

$old$기존 도메인과 $new$새 도메인으로 교체하십시오.

update wp_postmeta set meta_value = replace(meta_value, '$old$' , '$new$') ;
update wp_posts set post_content = replace(post_content, '$old$' , '$new$') ;
update wp_options set option_value = replace(option_value, '$old$' , '$new$') ;

2
참고로, 내 SQL 호출로 인해 직렬화 된 데이터가 손상 될 수 있습니다. s : 14 : blogs.prod.com의 길이는 14로 인코딩되었습니다. 코드를 실행 한 후 s : 14 : dev.prod.com이 손상되었습니다. s : 12 : dev.prod.com을 사용해야합니다.
앤드류


3

subversion의 export 명령을 사용하여 WordPress 파일 (http://core.svn.wordpress.org/tags//)과 저장소 (http://plugins.svn.wordpress.org//tags의 모든 플러그인)를 설치합니다. //) 그런 다음 테마와 사용자 정의 플러그인을 압축하여 정상적으로 설치하십시오. 모든 것이 컨텐츠없이 시작되고 실행되면 테스트 DB를 내보내고 URL과 파일 경로 (미디어에 저장된)를 검색 / 교체하고 빈 데이터베이스로 가져온 다음 wp-config에서 데이터베이스 정보를 전환하십시오. .php. 일반적으로 10-20 분 정도 걸립니다.


3

일반적으로 phpMyadmin에 로그인하여 데이터베이스를 업로드하고 wp_options> siteurl 및 wp_options> home의 내용을 예상 도메인으로 편집하십시오. 게시물 및 페이지 컨텐츠에서 URL을 업데이트해야하는 경우 업로드하기 전에 .SQL 파일에서 URL 및 미디어 / 업로드 경로를 검색 / 교체 할 수 있습니다. 빠른 직업입니다.


3

여기에 좋은 솔루션이 부족하지는 않지만 공유의 정신으로 bash 배포 스크립트를 파일에 추가 할 것이라고 생각했습니다. https://github.com/jplew/SyncDB

SyncDB는 로컬 및 원격 버전의 Wordpress 사이트 동기화에서 지루한 것을 제거하기위한 bash 배포 스크립트입니다. 로컬 환경 (예 : MAMP)에서 작업하는 개발자는 단일 터미널 명령으로 프로덕션 서버에서 또는 서버로 변경 사항을 신속하게 "밀어 내기"또는 "풀"할 수 있습니다.

이 스크립트는 마크 자 퀴스의 WP-해골, 그리고 하네스 잘 작동 mysqldump, gitrsync동기화 전체 사이트 데이터베이스, 코드, 및 미디어에 두 개의 쉬운 단계 :

./syncdb
git push hub master

3

http://wordpress.org/plugins/wp-clone-by-wp-academy/ 사용하고 있습니다. 잘 작동합니다!

단 3 단계 :

  1. 두 사이트 모두에 플러그인을 설치하십시오.
  2. 플러그인을 사용하여 이전 사이트에서 백업을 생성하십시오.
  3. 제공되는 백업 URL을 가져 와서 새 사이트의 플러그인 페이지에 연결 한 다음 바로 가기를 클릭하면 마이그레이션이 몇 초 안에 완료됩니다!

직렬화 된 문자열 교체를 포함하여 모든 URL을 자동으로 조정하므로 위젯 구성 등을 잃을 위험이 없습니다.

내가 가진 유일한 문제는 더 큰 데이터베이스 (~ 300MB)가있는 일부 웹 사이트에서만 발생하여 사이트 백업을 가져 오는 동안 PHP 스크립트 실행 시간이 초과되었습니다.


3

2017 년 현재 개발에서 프로덕션으로 WordPress 데이터베이스의 전송을 처리하는 가장 좋은 두 가지 방법이 있습니다.

WP 마이그레이션 DB Pro / WP 동기화 DB

https://wordpress.org/plugins/wp-migrate-db/

이러한 WordPress 플러그인을 사용하면 WordPress 설치간에 데이터베이스 테이블을 푸시, 풀 및 동기화 할 수 있습니다. 여러 가지 이유로 찾기 / 바꾸기보다 훨씬 낫습니다.

  • 데이터베이스를 MySQL 데이터 덤프로 내 보냅니다 (phpMyAdmin과 매우 유사)
  • URL 및 파일 경로를 찾아서 바꿉니다.
  • 직렬화 된 데이터 처리
  • 컴퓨터에 SQL 파일로 저장할 수 있습니다

저는 제가하는 일에 대한 대가를받는 팬이므로 Brad Touesnard 씨를 지원하고 실제 라이센스 사본을 구입하는 것이 좋습니다. WP Sync DB는 복제본이므로 항상 지원이 뒤떨어집니다. 이 플러그인을 사용하면 프로세스가 간단합니다.

  1. 로컬 호스트 및 프로덕션 환경에서 플러그인 설치 / 활성화
  2. 로컬 호스트 / 개발 서버에서 프로덕션으로 푸시 전송 구성
  3. 전송할 테이블에 대한 규칙을 채우고 수행 할 찾기 및 바꾸기 규칙을 정의하십시오.
  4. 그게 다야!

InterconnectIT로 WordPress 데이터베이스를 데이터베이스 검색 및 교체

https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

이 무료 도구는 플러그인이 아니지만 WordPress 프로덕션 설치의 루트 디렉토리에 설치됩니다. 몇 가지 수동 단계가 필요하기 때문에 WP Migrate DB Pro만큼 좋지는 않지만 일관되게 작동하는 훌륭한 옵션입니다. 이 방법을 사용할 때 프로세스는 다음과 같습니다.

  1. 로컬 데이터베이스를 백업하십시오. 곧 다시 가져 오기 때문에 반드시 필요합니다.
  2. 설치 루트 디렉토리의 폴더에 스크립트 추가
  3. 데이터베이스에서 찾기 및 바꾸기를 실행하십시오.
  4. 데이터베이스를 내보내고 프로덕션 환경에 저장하십시오.
  5. 로컬 호스트를 복원하려면 1 단계에서 백업을 다시 가져 오십시오.
  6. 프로덕션 데이터베이스에 연결하고 백업하십시오 (이러한 작업을 수행하기 전에 항상 수행해야 함)
  7. 4 단계에서 찾기 / 바꾸기 루틴을 실행 한 후 내 보낸 내보내기를 가져옵니다.

더 빠른 접근 방식을 사용할 수는 있지만 생산 현장의 가동 중지 시간과 관련이 있습니다. 그래서 우리는 그것을 생산이라고 부릅니다.


1

IIS에서 사이트를 실행하기 때문에 (또한 asp.net도 실행하므로 창이 필요함) Msft의 WebPI를 사용하여 새 인스턴스를 설치 한 다음 템플릿을 복사하고 가져 오기 / 내보내기를 사용하여 데이터를 전송합니다.

완벽하지는 않지만 전체 시간은 1 시간 미만입니다.

분명히 한 번의 클릭으로 솔루션을 얻는 것이 좋을 것이지만 이것이 내가 가장 쉬운 방법이라고 생각했습니다.


1

또 다른 지불 솔루션 : Xtreme One 테마 프레임 워크 Xtreme Backup 과 함께 버전 1.2릴리스 하여 "모든 설정 / 컨텐트를 XML 파일로 사용하여 Childthemes, 레이아웃 또는 위젯의 설정을 내보내거나 가져올 수 있습니다 ."


1

동료가 이것을 찾았습니다. 흥미로운 개념이지만 서버 간에서는 작동하지 않지만 모양은 같습니다. 아직 탐색 중이지만 준비 인스턴스에 효과적 일 수 있습니다.

http://code.google.com/p/deploymint/


넉 달 전, 나는이 플러그인의 작품을 만들 수 없습니다 ... 그리고 그것의 버전 0.1에서 여전히 code.google
brasofilo

1

이것은 당신이 질문을했을 때 주변에 없었을 수도 있지만, 몇 달 동안 Blogvault라는 서비스를 사용하고 있으며 완벽하게 수행되었습니다. 아마도 50 가지가 넘는 마이그레이션 (도메인, 하위 도메인 및 웹 호스트)을 수행했을 것입니다.

유료 서비스입니다 (도메인 / 월별).


1

RAMP 는 Crowd Favorite의 새로운 콘텐츠 배포 플러그인이며 정말 매끄 럽습니다. 그러나 250 달러이므로 아직 시도하지 않았습니다. 그러나 절약 된 시간으로 비용을 지불 할 수도 있으므로 고려하고 있습니다.

언급 된 다른 모든 방법보다 큰 이점은 게시물, 주석 등을 지능적으로 병합 할 수 있다는 것입니다. mysqldump를 가져 오는 것이 아니라 데이터베이스의 소스 제어와 비슷합니다. 예를 들어 게시물을 배포 할 때 프로덕션에 해당 게시물이없는 경우 해당 게시물의 태그도 배포합니다.


RAMP는 코드 배포 와 달리 콘텐츠 배포를 위한 것이지만, 나는 훌륭하다고 생각합니다. 이제 RAMP 데모가 설정되어 기능을 시험해 볼 수 있습니다.
Emzo

문제는 코드 배포가 아닌 콘텐츠 배포 에 관한 것이 었으며 "RAMP는 새로운 콘텐츠 배포 플러그인입니다 ..."
Ian Dunn

1

내가 좋아하는 것 중 하나를 줘 보자 :-)

// proven local<->live codefork (covers local network testing, i.e. from mobile devices):
$GLOBALS['is_local'] =  
    in_array( $_SERVER['REMOTE_ADDR'], array("127.0.0.1","::1")) || // simple localhost (IPv4 IPv6)
              $_SERVER['HTTP_HOST'] == 'local.workblog'          || // call by local name (adjust)
       substr($_SERVER["REMOTE_ADDR"],0,8) == '192.168.';           // (mobile) device in local network

$table_prefix  = NULL; // ensure scope

if ( $GLOBALS['is_local'] )  // LOCAL fork ------------------------
{
        ....
}
else  // STAGE/LIVE fork -------------------
{

... 그리고 거기서 거기서 일을합니다. DB_NAME, DB_USER ... table_prefix. 개인적으로 로컬에서 ALTERNATE_WP_CRON을 켜고 ( 성가신 경고 를 피하기 위해 ) WP_DEBUG의 (개발자가 아닌 경우) 또는 라이브 전용 (있는 경우) 둘 중 하나 ini_set('display_errors', '0');는 라이브를위한 다른 것도 잘 할 수 있습니다. 위에서 언급 한 바와 같이 : WP_HOME 및 WP_SITEURL은 해당 로컬 / 실제 URL로 연결됩니다.

그게 전부, 고전적인 워드 프레스 위에 남은 것은 '그게 다야, 편집을 멈춰라!' 선...

192.168. 부분은 로컬 네트워크 내에서 로컬 테스트 (예 : 패드 또는 전화)를 수행 할 수 있도록합니다.

$ GLOBALS [ 'is_local']은 추가 디버그 출력 등을 위해 테마 개발에도 유용 할 수 있습니다.


1
비슷한 것을 달성하기 위해 상수를 설정하는 WordPress Skeleton wp-config.php 를 사용할 수 있습니다WP_LOCAL_DEV
icc97

1

한동안 backupbuddy 플러그인을 사용하고 있습니다. 데이터베이스와 모든 파일을 백업하거나 zip으로 다운로드하거나 FTP를 통해 다른 서버로 직접 보낼 수 있습니다. 또한 URL을 찾아서 대체합니다. 전체 프로세스를 완료하는 데 보통 5 분 정도 걸립니다. 또한 모든 파일이 압축되어 있기 때문에 업로드 / 다운로드 프로세스가 훨씬 빠릅니다. 그리고 아니, 나는 그들을 위해 일하지 않지만,이 플러그인은 실제로이 전체 프로세스를 훨씬 쉽게 만들었습니다.


1

사이트의 서버 마이그레이션을 처리하는 데 유용한 또 다른 도구는 WordPress CLI입니다.이 기사에서는 수행 할 수있는 작업에 대한 개요가 있지만 특히 "검색 및 바꾸기"섹션은 이전 / 개발 사이트 URL에 대한 모든 참조를 찾는 데 유용합니다. :

WP-CLI를 이용한 고급 워드 프레스 관리


1

이것은 가장 쉬운 방법입니다 : https://themes.artbees.net/docs/website-migration/
두 번만 클릭하면됩니다. 하나는 내보내고 하나는 가져옵니다.

하나의 WP 마이그레이션 플러그인에서 모두를 사용하여 가능합니다. 위의 링크는 사용법을 보여줍니다.


0

지속적인 동기화를 달성하려는 경우 사용자 정의 cron 작업과 함께 rsync를 사용하여 URL 또는 사이트 별 데이터를 다시 작성하는 것이 좋습니다.


0

이 답변을 잠시 수행 한 후 나는 작은 플러그인 인 Pitta Migration을 만들었습니다 . 이유는 다음과 같습니다.

  1. 여기에서 시도한 모든 아이디어 중 가장 간단한 것은 WP_HOMEWP_SITEURL옵션입니다.
  2. 그런 다음 이것을 사용하여 두 개의 일치하는 wp_optionsURL 을 설정하십시오.
  3. 이것은 데이터베이스에서 무엇이 바뀌고 있는지 100 % 확신합니다.
  4. 이것은 크로스 플랫폼에서도 작동합니다 (모든 bash 스크립트는 Windows에서 훌륭하게 재생되지 않습니다)
  5. 플러그인이하는 일을 이해하기 쉽다
  6. 두 상수 이외의 구성은 없습니다-mysqldump와 mysql을 로컬 데이터베이스로 가져오고 플러그인은 상수와 테이블이 다르고 일치하도록 업데이트합니다.
  7. 텍스트 검색 및 교체 없음
  8. 데이터베이스를 방해 할 가능성이 없습니다. WordPress 데이터베이스 개체를 사용하여 두 가지 업데이트를 수행합니다.
  9. 소스 제어에 모든 것을 가지고 로컬 구성을 설정할 수있는 WordPress Skeleton 과 잘 어울립니다.
  10. 나는에 넣어 한 워드 프레스 플러그인 디렉토리 및에 Github에서 그것을 완전히 오픈 소스, 무료 당신이 포크로 쉽게 쉽게 있다는 설치할 수 있도록
  11. 일단 설치되면 잊어 버릴 수 있으며 '작동합니다'-데이터베이스가 수정되었다는 약간의 통지를줍니다.
  12. 모든 백업 / FTP / 복원 프로세스와 함께 작동해야합니다

0

내 생각에 가장 쉬운 방법은 수동 전송입니다. wp-content 폴더와 wp-config.php 파일을 새 호스트에 복사하십시오. 이전 호스트에서 데이터베이스를 내보내고 새 호스트의 새 데이터베이스로 가져 오십시오.

새 호스트 데이터베이스에서 wp-option 테이블로 이동하여 사이트 URL 및 블로그 URL을 이전 호스트의 새 호스트 주소로 변경하십시오. 등으로부터 에 http : // localhost를 / WPhttp://example.com

이제 wp-config 파일에서 데이터베이스 및 사용자 정보를 새 호스트 정보로 변경하십시오.

이제 새 wp-admin에 로그인하고 설정으로 이동하여 영구 링크를 저장하십시오.

끝났습니다. 나는 플러그인을 사용하지 않고 간단하다고 생각합니다.

나는 다른 종류의 플러그인을 시도했고 이것들은 많은 종류의 문제를 가지고 있습니다.

그래서 나는 생각하기 쉬운이 간단한 수동 전송을 선호합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.