한 상자에서 개발을하고 두 번째 상자를 생산에 사용합니다. 지금은 데이터베이스를 덤프 한 다음 URL 변경을 대체합니다. 그런 다음 파일을 복사하고 새 SQL을 가져 오십시오.
더 좋은 방법이 있습니까?
한 상자에서 개발을하고 두 번째 상자를 생산에 사용합니다. 지금은 데이터베이스를 덤프 한 다음 URL 변경을 대체합니다. 그런 다음 파일을 복사하고 새 SQL을 가져 오십시오.
더 좋은 방법이 있습니까?
답변:
@ Insanity5902 : WordPress 사이트를 한 상자에서 다른 상자로 배포하는 것은 WordPress로 작업하기 시작한 날부터 PITA였습니다. (True-Be-Told는 WordPress를 시작하기 전에 2 년 동안 Drupal의 PITA 였으므로 WordPress에만 문제가있는 것은 아닙니다.)
사이트를 이동해야 할 때마다 너무 자주 중복되는 노력을 기울여야하므로 원하는만큼 자주 테스트를 배포하지 못하게되었습니다. 약 4-6 개월 전에 웹 호스트 마이그레이션 문제를 해결하기 위해 플러그인 작업을 시작했으며 WP Tavern 포럼에서 아이디어를 언급했습니다 .
오늘로 빨리 넘어 가면 거의 작동하고 있으며 " WP Migrate Webhosts "라고 편리하게 부르고 있습니다 . 귀하의 질문에 따라 플러그인이 여전히 베타 (아마도 알파) 일지라도 사람들이 그것을 시작하게 할 준비가 된 것 같습니다.
계획된 유스 케이스는 다음과 같습니다.
당신은 수있는 플러그인을 다운로드하여 내 웹 사이트에서 당신의 플러그인 디렉토리에 압축을 풉니 다 (그들이 그것을 사용하기 위해 무엇을하고 있는지 아는 사람이 필요하기 때문에 당신이 다음이 플러그인은 당신을 위해하지 않습니다이 작업을 수행하는 방법을 모르는 경우.) 나는거야 이 플러그인을 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
를 사용 하여 다음 과 같이 관리자 화면으로 이동할 수 있습니다.
위의 내용은 다음과 같은 관리 화면으로 이동하여 설명 텍스트가 약간 있으며 마이그레이션 할 도메인을 선택한 후 한 번의 클릭으로 다른 웹 호스트 도메인 에서 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_apikey
register_webhost () 배열 의 요소와 작은 사용자 정의 migrate_webhosts
후크를 사용하면 문제를 효과적으로 제거 할 수 있습니다!
그게 다야. @ Insanity5902의 질문으로 인해 플러그인이 WordPress Answer 's Exchange에서 시작되었습니다. 도움이된다면 여기로 알려주십시오 (해당되는 경우). 그렇지 않은 경우 이메일을 통해 알려주십시오.
추신 당신이 이것을 사용하기로 결정했다면 그것은 알파 / 베타라는 것을 기억하십시오. 그것은 그것이 당신이 지금 그것을 사용하고 싶다면 많은 손에 의해 구타되면 릴리스 된 버전을 사용하기 위해 약간의 작은 수술을 위해 준비되어 있음을 의미합니다.
PPS 이것으로 나의 목표는 무엇입니까? 모든 사람들이 액세스 할 수 있도록 WordPress 코어로 마이그레이션하는 것을보고 싶습니다. 그러나 그 전에는 많은 사람들이 실제로 더 많은 문제를 해결하여 잠재적으로 발생할 수있는 문제를 해결하는 데 관심을 가져야한다고 생각하기까지합니다. 따라서 아이디어가 마음에 드시면 아이디어를 사용하여 WordPress 코어에 희망적으로 포함되도록 아이디어를 추진하십시오.
가능하면 내가 설정 WP_HOME
과 WP_SITEURL
에서 wp-config.php
. 이것은 데이터베이스 덤프 및 가져 오기와 함께 내가 익숙한 모든 솔루션 중에서 가장 단순합니다.
http://codex.wordpress.org/Changing_The_Site_URL#Edit_wp-config.php
내가 가장 좋아하는 핵 /etc/hosts
프로덕션 도메인이 시스템에서 개발 상자를 가리 키도록 설정을 추가 하십시오. 프로덕션 환경에 배포하려면 모든 파일을 재 동기화하고 데이터베이스를 푸시하십시오.
이 전략의 위험은 분명합니다. 개발 환경과 프로덕션 환경을 혼동 할 수 있습니다.
그래도 여전히 쉬운 수정입니다.
몇 달 전에 WP로 마이그레이션 할 때 비슷한 것을 원했기 때문에 ssh를 통해 rsync 및 mysqldump를 사용하는 매우 간단한 쉘 스크립트를 작성했습니다.
http://snarfed.org/sync_wordpress
정교하거나 웹 기반은 아니지만 행복합니다.
WP Engine 은 "원 클릭 스테이징"을 제공하는 새로운 서비스입니다.
WPEngine에는 "스테이징"이라는 전용 기능이 있습니다. 작동 방식은 다음과 같습니다. 블로그를 크게 변경하기 전에 "스냅 샷"버튼을 클릭하십시오. 우리는 블로그의 완전한 사본을 만들어 별도의 안전한 장소에 설치합니다. 원하는 것을 가지고 놀 수 있습니다. 아무것도 없습니다. 당신이 그것을 만들 준비가되었을 때만 당신은 당신의 메인 사이트를 터치합니까.
특히 이미 라이브 사이트에서 개발에서 프로덕션으로 빠르게 이동할 수있는 매우 쉬운 방법 인 것 같습니다.
Duplicator 플러그인 : 여기 제가 작업 한 플러그인이 있습니다. 현재 베타 버전이지만 대부분의 사이트에서 작업이 완료됩니다. 현재는 소규모 WordPress 설치를 대상으로합니다. http://wordpress.org/extend/plugins/duplicator/
참고 자료 : 플러그인에 대한 추가 자료는 http://lifeinthegrid.com/duplicator/ 에서 찾을 수 있습니다.
커뮤니티 : 귀하의 성공 또는 발생할 수있는 문제에 대해 알려주십시오! 다양한 스레드를보다 쉽게 관리하기 위해 WordPress.org 플러그인 포럼에 문제를 게시하십시오. 플러그인에서 온라인 포럼으로 로깅 데이터를 게시하지 마십시오. 로깅 데이터는 지원 사이트에 제출할 수 있습니다.
iThemes의 제품인 BackUpBuddy를 살펴볼 수 있습니다. 나는 두 번만 사용했는데, 매번 한두 가지 문제가 있었지만 전반적으로 유망한 것으로 보입니다.
Github에서 Autopress 라는 프로젝트를 통해이 문제를 개인적으로 해결하고 있습니다. 아직 완벽한 솔루션은 없지만 특히 wpengine 사람들의 wpstage 플러그인을 사용하면 더 가까워지고 있습니다.
이것은 유망 해 보인다. 우리는 일부 데이터 마이그레이션을 처리하기 위해 스크립트를 연구하고 있습니다.
내가 가진 문제는 라이브 사이트가 계속 성장하는 반면 다른 사이트는 개발 중이라는 것입니다. 우리가 작업하는 한 사이트에는 하루에 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$') ;
subversion의 export 명령을 사용하여 WordPress 파일 (http://core.svn.wordpress.org/tags//)과 저장소 (http://plugins.svn.wordpress.org//tags의 모든 플러그인)를 설치합니다. //) 그런 다음 테마와 사용자 정의 플러그인을 압축하여 정상적으로 설치하십시오. 모든 것이 컨텐츠없이 시작되고 실행되면 테스트 DB를 내보내고 URL과 파일 경로 (미디어에 저장된)를 검색 / 교체하고 빈 데이터베이스로 가져온 다음 wp-config에서 데이터베이스 정보를 전환하십시오. .php. 일반적으로 10-20 분 정도 걸립니다.
여기에 좋은 솔루션이 부족하지는 않지만 공유의 정신으로 bash 배포 스크립트를 파일에 추가 할 것이라고 생각했습니다. https://github.com/jplew/SyncDB
SyncDB는 로컬 및 원격 버전의 Wordpress 사이트 동기화에서 지루한 것을 제거하기위한 bash 배포 스크립트입니다. 로컬 환경 (예 : MAMP)에서 작업하는 개발자는 단일 터미널 명령으로 프로덕션 서버에서 또는 서버로 변경 사항을 신속하게 "밀어 내기"또는 "풀"할 수 있습니다.
이 스크립트는 마크 자 퀴스의 WP-해골, 그리고 하네스 잘 작동 mysqldump
, git
및 rsync
동기화 전체 사이트 데이터베이스, 코드, 및 미디어에 두 개의 쉬운 단계 :
./syncdb
git push hub master
http://wordpress.org/plugins/wp-clone-by-wp-academy/ 사용하고 있습니다. 잘 작동합니다!
단 3 단계 :
직렬화 된 문자열 교체를 포함하여 모든 URL을 자동으로 조정하므로 위젯 구성 등을 잃을 위험이 없습니다.
내가 가진 유일한 문제는 더 큰 데이터베이스 (~ 300MB)가있는 일부 웹 사이트에서만 발생하여 사이트 백업을 가져 오는 동안 PHP 스크립트 실행 시간이 초과되었습니다.
2017 년 현재 개발에서 프로덕션으로 WordPress 데이터베이스의 전송을 처리하는 가장 좋은 두 가지 방법이 있습니다.
https://wordpress.org/plugins/wp-migrate-db/
이러한 WordPress 플러그인을 사용하면 WordPress 설치간에 데이터베이스 테이블을 푸시, 풀 및 동기화 할 수 있습니다. 여러 가지 이유로 찾기 / 바꾸기보다 훨씬 낫습니다.
저는 제가하는 일에 대한 대가를받는 팬이므로 Brad Touesnard 씨를 지원하고 실제 라이센스 사본을 구입하는 것이 좋습니다. WP Sync DB는 복제본이므로 항상 지원이 뒤떨어집니다. 이 플러그인을 사용하면 프로세스가 간단합니다.
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
이 무료 도구는 플러그인이 아니지만 WordPress 프로덕션 설치의 루트 디렉토리에 설치됩니다. 몇 가지 수동 단계가 필요하기 때문에 WP Migrate DB Pro만큼 좋지는 않지만 일관되게 작동하는 훌륭한 옵션입니다. 이 방법을 사용할 때 프로세스는 다음과 같습니다.
더 빠른 접근 방식을 사용할 수는 있지만 생산 현장의 가동 중지 시간과 관련이 있습니다. 그래서 우리는 그것을 생산이라고 부릅니다.
동료가 이것을 찾았습니다. 흥미로운 개념이지만 서버 간에서는 작동하지 않지만 모양은 같습니다. 아직 탐색 중이지만 준비 인스턴스에 효과적 일 수 있습니다.
RAMP 는 Crowd Favorite의 새로운 콘텐츠 배포 플러그인이며 정말 매끄 럽습니다. 그러나 250 달러이므로 아직 시도하지 않았습니다. 그러나 절약 된 시간으로 비용을 지불 할 수도 있으므로 고려하고 있습니다.
언급 된 다른 모든 방법보다 큰 이점은 게시물, 주석 등을 지능적으로 병합 할 수 있다는 것입니다. mysqldump를 가져 오는 것이 아니라 데이터베이스의 소스 제어와 비슷합니다. 예를 들어 게시물을 배포 할 때 프로덕션에 해당 게시물이없는 경우 해당 게시물의 태그도 배포합니다.
내가 좋아하는 것 중 하나를 줘 보자 :-)
// 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']은 추가 디버그 출력 등을 위해 테마 개발에도 유용 할 수 있습니다.
WP_LOCAL_DEV
사이트의 서버 마이그레이션을 처리하는 데 유용한 또 다른 도구는 WordPress CLI입니다.이 기사에서는 수행 할 수있는 작업에 대한 개요가 있지만 특히 "검색 및 바꾸기"섹션은 이전 / 개발 사이트 URL에 대한 모든 참조를 찾는 데 유용합니다. :
이것은 가장 쉬운 방법입니다 :
https://themes.artbees.net/docs/website-migration/
두 번만 클릭하면됩니다. 하나는 내보내고 하나는 가져옵니다.
하나의 WP 마이그레이션 플러그인에서 모두를 사용하여 가능합니다. 위의 링크는 사용법을 보여줍니다.
이 답변을 잠시 수행 한 후 나는 작은 플러그인 인 Pitta Migration을 만들었습니다 . 이유는 다음과 같습니다.
WP_HOME
및 WP_SITEURL
옵션입니다.wp_options
URL 을 설정하십시오.내 생각에 가장 쉬운 방법은 수동 전송입니다. wp-content 폴더와 wp-config.php 파일을 새 호스트에 복사하십시오. 이전 호스트에서 데이터베이스를 내보내고 새 호스트의 새 데이터베이스로 가져 오십시오.
새 호스트 데이터베이스에서 wp-option 테이블로 이동하여 사이트 URL 및 블로그 URL을 이전 호스트의 새 호스트 주소로 변경하십시오. 등으로부터 에 http : // localhost를 / WP 에 http://example.com
이제 wp-config 파일에서 데이터베이스 및 사용자 정보를 새 호스트 정보로 변경하십시오.
이제 새 wp-admin에 로그인하고 설정으로 이동하여 영구 링크를 저장하십시오.
끝났습니다. 나는 플러그인을 사용하지 않고 간단하다고 생각합니다.
나는 다른 종류의 플러그인을 시도했고 이것들은 많은 종류의 문제를 가지고 있습니다.
그래서 나는 생각하기 쉬운이 간단한 수동 전송을 선호합니다.