Làm thế nào để: Dễ dàng chuyển một cài đặt WordPress từ phát triển sang sản xuất?


199

Tôi phát triển trên một hộp và sử dụng một giây để sản xuất. Ngay bây giờ tôi chỉ cần kết xuất cơ sở dữ liệu và sau đó tìm một thay thế cho các thay đổi URL; sau đó sao chép qua các tệp và nhập SQL mới.

Có cách nào tốt hơn để làm điều này?


2
Đối với những người mới đến qe bỏng. 1 năm sau và tôi vẫn đang sử dụng plugin @MikeSchinkel. Anh ta có 0,7 mà tôi đã chuyển một vài cài đặt mà không gặp vấn đề gì. mikechinkel.com/doads/wp-migrate-webhosts-0.7.zip
Ryan Gibbons

Đây là một tập lệnh không có plugin mà tôi đã phát hành đã giúp quá trình của tôi rất nhiều. philipdowner.com/2012/01/ từ
Philip Downer


6
Ngày nay, có một plugin có tên là Sao chép: wordpress.org/extend/plugins/d repeatator Đó thực sự là một quá trình gồm ba bước và hoạt động như một cơ duyên. Đã sử dụng điều này nhiều lần để triển khai một trang web từ môi trường thử nghiệm đến một trang web trực tiếp.
Matthias

Câu trả lời:


122

@ Insanity5902 : Triển khai trang web WordPress từ hộp này sang hộp khác đã là PITA kể từ ngày tôi bắt đầu làm việc với WordPress. (Sự thật được nói đó là Pita với Drupal trong 2 năm trước khi tôi bắt đầu với WordPress nên vấn đề chắc chắn không chỉ riêng với WordPress.)

Điều đó làm phiền tôi rằng mỗi khi tôi cần di chuyển một trang web, tôi phải bỏ ra rất nhiều nỗ lực nhân đôi và điều đó khiến tôi không thể triển khai để kiểm tra thường xuyên như tôi muốn. Vì vậy, khoảng 4 - 6 tháng trước tôi đã bắt đầu làm việc với một plugin để giải quyết vấn đề di chuyển webhost và tôi đã đề cập đến ý tưởng của mình trên diễn đàn WP Tavern .

Nhanh chóng chuyển tiếp đến ngày hôm nay và tôi đã làm cho nó hoạt động khá tốt và tôi thuận tiện gọi nó là " WP Migrate Webhosts ." Mặc dù plugin vẫn còn rất nhiều bản beta (thậm chí là alpha) cho câu hỏi của bạn nhưng tôi nghĩ tôi đã sẵn sàng để mọi người bắt đầu đập vào nó.

Trường hợp sử dụng được hình dung là:

  1. đầu tiên, nhà phát triển xử lý tải lên tất cả các tệp plugin và chủ đề đã thay đổi qua FTP,
  2. sau đó tải toàn bộ cơ sở dữ liệu MySQL phát triển lên máy chủ thử nghiệm và cuối cùng
  3. sau đó chạy plugin để di chuyển bất kỳ tham chiếu nào từ tên miền trước sang tên miền mới. (Plugin của tôi không cố gắng giải quyết việc hợp nhất các trường hoặc bảng cơ sở dữ liệu mới với dữ liệu trực tiếp; ĐÓ là một vấn đề lớn hơn nhiều mà tôi không biết phải giải quyết như thế nào.)

Bạn có thể tải xuống plugin từ trang web của tôi và giải nén vào thư mục plugin của bạn (nếu bạn không biết cách thực hiện thì plugin này không dành cho bạn vì nó yêu cầu ai đó biết họ đang làm gì để sử dụng nó.) Tôi sẽ giữ plugin này trực tuyến cho đến khi tôi phát hành nó lên WordPress.org sau đó bạn nên tìm nó ở đó.

Để sử dụng nó, bạn phải mất một cách tiếp cận khác nhau trong bạn wp-config.phpmà bình thường bằng cách bình luận ra bốn (4) định nghĩa DB_NAME, DB_USER, DB_PASSWORDDB_HOSTthay vào đó đăng ký giá trị mặc định cho webhost và sau đó đăng ký thông tin về mỗi webhost riêng của mình. Đây là phân khúc wp-config.phpcó thể trông như thế nào (lưu ý phần đầu tiên là mã không cần thiết được nhận xét và cũng lưu ý rằng tôi đã thiết lập tệp máy chủ của mình trên máy cục bộ của mình với các .devtên miền cấp cao nhất không thể định tuyến để phát triển hàng ngày dễ dàng hơn. Trên Mac VirtualhostX làm cho điều này trở nên dễ dàng):

// ** 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');

Hy vọng điều này là (chủ yếu) tự giải thích. Tôi đã cố gắng làm cho mã sạch nhất có thể nhưng thật không may, nó yêu cầu hai require_once()dòng mật mã đó trước và sau khối mã đăng ký webhost vì không có cách nào để tôi " móc " WordPress trước khi wp-config.phpđược gọi.

Khi bạn đã cập nhật wp-config.phprồi, bạn chỉ cần sử dụng phím tắt URL wp-migrate-webhostsđể đi đến màn hình quản trị viên như vậy:

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

Ở trên sẽ đưa bạn đến màn hình quản trị như sau có một đoạn văn bản mô tả hợp lý và cho phép bạn di chuyển TỪ bất kỳ tên miền webhost nào khác chỉ bằng một cú nhấp chuột sau khi chọn tên miền để di chuyển từ ( LƯU Ý : ví dụ này hiển thị xUỐNG từ thử nghiệm / giai đoạn / máy chủ trực tiếp để phát triển địa phương nhưng yên tâm nó có thể di chuyển để bất kỳ tên miền mà nó xảy ra để được bố trí. Điều này cũng có nghĩa là các plugin sẽ là tuyệt vời dành một trang web hoạt động hiện có và nhanh chóng nhận được một môi trường phát triển địa phương làm việc! ):

nhập mô tả hình ảnh ở đây

Nếu " di chuyển " không rõ ràng trong ngữ cảnh này có nghĩa là cập nhật tất cả các tham chiếu trong cơ sở dữ liệu hiện tại để phù hợp với webhost hiện được xác định (và " hiện tại " được đánh hơi bằng cách kiểm tra $_SERVER['SERVER_NAME'].)

Điều thú vị về plugin là nó thực hiện một số di chuyển cơ bản nhưng bất kỳ ai cũng có thể nối nó và thực hiện di chuyển của riêng họ . Ví dụ: nếu bạn thêm một plugin bộ sưu tập lưu trữ các đường dẫn đầy đủ vào hình ảnh trong cơ sở dữ liệu, bạn có thể nối migrate_webhostshành động sẽ được chuyển qua " từ " webhost và webhost " đến " như một mảng siêu dữ liệu và bạn sẽ được phép để thực hiện bất cứ điều gì bạn cần làm trong cơ sở dữ liệu bằng SQL hoặc bất kỳ chức năng API WordPress hiện hành nào để thực hiện di chuyển. Có bất kỳ ai trong chúng ta có thể làm điều này mà không cần plugin nhưng không có plugin tôi thấy rằng việc viết tất cả các mã cần thiết là nỗ lực nhiều hơn giá trị của nó. Với plugin, việc viết những cái móc nhỏ này trở nên dễ dàng hơn.

Bạn cũng có thể thấy việc di chuyển của mình thất bại trong các trường hợp cạnh mà tôi chưa thử nghiệm và có lẽ bạn có thể giúp tôi cải thiện plugin không? Bất cứ ai muốn gửi email cho tôi qua tài khoản gmail của tôi (bí danh của tôi là "mikechinkel.")

Ngoài ra, các plugin được thiết kế để chấp nhận người dùng xác định metadata webhost ngoài những cái nó nhận ra như database, user, password, host, domainvv Một ví dụ hoàn hảo có thể là googlemaps_apikeynơi bạn có thể lưu trữ một chìa khóa API khác nhau cho từng lĩnh vực mà nhu cầu Plugin Google Map của bạn để vận hành chính xác (ai trong số các bạn đã sử dụng plugin Google Maps đã không triển khai ứng dụng lên máy chủ trực tiếp và quên thay đổi mã thành khóa API chính xác? Nào, hãy trung thực ... :) Với plugin này, một googlemaps_apikeyphần tử trong mảng register_webhost () của bạn và một migrate_webhostshook tùy chỉnh nhỏ, bạn có thể loại bỏ điều đó một cách hiệu quả như một mối quan tâm!

Vâng, đó là về nó. Tôi đang khởi chạy plugin này tại đây trên Sàn giao dịch trả lời của WordPress vì câu hỏi của @ Insanity5902 đã kích hoạt nó. Hãy cho tôi biết nếu nó hữu ích, ở đây nếu thích hợp hoặc qua email nếu không.

PS Nếu bạn quyết định sử dụng cái này, hãy nhớ nó là alpha / beta và điều đó có nghĩa là nó sẽ thay đổi, vì vậy hãy chuẩn bị cho một cuộc phẫu thuật nhỏ nếu bạn muốn sử dụng nó ngay bây giờ và sau đó sử dụng phiên bản đã phát hành khi nó bị đánh bại bởi nhiều tay.

PPS Mục tiêu của tôi với điều này là gì? Tôi rất thích thấy điều này di chuyển vào lõi WordPress để mọi người đều có quyền truy cập vào nó. Nhưng trước đó thậm chí có thể được coi là rất nhiều người phải quan tâm đến việc sử dụng nó để đảm bảo nó thực sự giải quyết được nhiều vấn đề hơn thì nó có khả năng có thể tạo ra. Vì vậy, nếu bạn thích ý tưởng thì bằng mọi cách hãy sử dụng nó và giúp tôi có được động lực với nó để đưa vào hy vọng cuối cùng vào lõi WordPress.


Các giải pháp hay Tôi đã có một vài câu hỏi mặc dù 1) Bạn vẫn cần xác định WP_SITEURL để vào khu vực quản trị? 2) Công cụ hiển thị chỉ dành cho Người dùng Quản trị viên? (không chắc chắn nếu phần Công cụ hiển thị cho người không phải quản trị viên)
Ryan Gibbons

Xin chào @ Insanity5902: 1) Không cần thiết lập WP_SITEURL, plugin dành cho bạn. Bạn thực sự đang thiết lập nó khi bạn "đăng ký" một "tên miền" và "sitepath" cho một webhost. Trong hoạt động bình thường của WordPress, WP_SITEURL được yêu cầu phải được đặt trong mã hoặc cơ sở dữ liệu để đảm bảo không ai giả mạo URL và thực hiện những điều bất chính vì trên một giá trị không mong muốn trong $ _SERVER ['SERVER_NAME']. Plugin WP Migrate Websites thiết lập gián tiếp WP_SITEURL dựa trên $ _SERVER ['SERVER_NAME'] nhưng nó sẽ CHỈ làm như vậy nếu tên miền hiện tại khớp với một trong những tên miền bạn đã xác định trong tệp wp-config.php, không có gì khác.
MikeSchinkel

2.) Phím tắt URL mà tôi đã đề cập thực sự chuyển hướng vào bảng điều khiển quản trị viên, vì vậy nó chỉ dành cho những người đăng nhập vào quản trị viên. Tôi chưa có kiểm tra cụ thể cho quản trị viên chỉ được xây dựng trong mặc dù. Tôi chưa bao giờ thêm các khả năng cho một plugin nhưng sẽ cần nghiên cứu đầy đủ về cách thức trong vài tuần tới để có thể làm việc với nó trong tháng tới. Tuy nhiên, plugin không phá hủy; nó CHỈ có thể di chuyển đến tên miền hiện tại và quá trình này có thể lặp lại vì vậy ngay cả khi một người không phải là quản trị viên thực sự không có hại gì họ có thể làm với nó, ít nhất là tôi không thể hình dung được.
MikeSchinkel

1
/ wp-Migrate-webhosts tạo ra 404 và / wp-admin tạo ra 'lỗi thiết lập kết nối cơ sở dữ liệu'
Steve

5
Vì vậy, tình trạng của plugin này là gì? Nó trông có vẻ hấp dẫn nhưng tôi muốn một cái gì đó trưởng thành và được chăm sóc tốt. Bài đăng này là thông tin duy nhất tôi có thể tìm thấy trên đó.
Kevin C.

35

Khi có thể, tôi đặt WP_HOMEWP_SITEURLvào wp-config.php. Điều này, kết hợp với kết xuất và nhập cơ sở dữ liệu, là giải pháp đơn giản nhất trong tất cả các giải pháp mà tôi quen thuộc.

http://codex.wordpress.org/Thay đổi_The_Site_URL#Edit_wp-config.php


1
Khi nào không thể thiết lập những thứ này? Điều này nghe có vẻ đơn giản hơn so với việc thay đổi mọi thứ trong cơ sở dữ liệu.
jfklein

2
@jfklein Tôi hầu như luôn làm việc với Mạng WordPress, không tương thích với các hằng số này.
Annika Backstrom

1
Làm giống như vậy. Đáng tiếc, không phải tất cả các chủ đề tôn vinh điều này. tức là 'Chủ đề lặp lại' từ ThemeID. Tìm kiếm kết xuất / tất cả các bảng cho ' localhost ' (hoặc bất cứ điều gì bạn đã chọn tên địa phương), đặc biệt là wp_options và thực hiện tìm kiếm & thay thế thường là không thể tránh khỏi.
Frank Nocke

@FranKee Tôi đã tạo một plugin wordpress.org/plugins/pitta-migration sử dụng các hằng số để cập nhật bảng wp_options sẽ bao gồm hầu hết các chủ đề và plugin
icc97

@ icc97: Đáng yêu. Sẽ nhìn vào nó. PS: Hình ảnh tiêu đề đẹp, hình ảnh tình hình.
Frank Nocke

27

Hack yêu thích của tôi; thêm một cài đặt cho bạn /etc/hostsđể làm cho miền sản xuất trỏ vào hộp phát triển của bạn, ngay trên máy của bạn. Để triển khai để sản xuất, bạn rsync tất cả các tệp và đẩy cơ sở dữ liệu lên.

Những rủi ro của chiến lược này là rõ ràng; bạn có thể nhầm lẫn môi trường phát triển của bạn với môi trường sản xuất của bạn.

Nó vẫn là một sửa chữa dễ dàng mặc dù.


5
Đúng! Tôi rất vui vì tôi không phải là người duy nhất nghĩ về điều đó! bất kỳ sự khác biệt giữa dev và prod là xấu. Loại bỏ sự khác biệt đó hoàn toàn tốt hơn nhiều so với cố gắng làm việc xung quanh nó. Và thiết lập này không có công việc gì cả. Người ta thậm chí có thể thực hiện kiểm tra trên một máy ảo với tệp máy chủ được sửa đổi nếu cần.
Alexander Bird

2
Tôi thích phương pháp này rất nhiều, nhưng làm thế nào để bạn xử lý cơ sở dữ liệu đẩy / kéo?
Nenotlep

Đối với nguy cơ nhầm lẫn giữa nhà phát triển với prod, tôi sử dụng plugin Chrome hiển thị địa chỉ IP của trang web. Bạn sẽ biết bạn đang ở địa phương khi 127.0.0.1
kosinix

9

Tôi muốn một cái gì đó tương tự khi tôi chuyển sang WP vài tháng trước, vì vậy tôi đã viết một tập lệnh shell khá đơn giản sử dụng rsync và mysqldump qua ssh:

http://snarfed.org/sync_wordpress

Nó không tinh vi hoặc dựa trên web, nhưng tôi hài lòng với nó.


8

WP Engine là một dịch vụ mới cung cấp "Giai đoạn một lần nhấp":

WPEngine có một tính năng độc quyền gọi là staging. Chúng tôi tạo một bản sao hoàn chỉnh của blog của bạn và thiết lập nó trong một khu vực an toàn, riêng biệt. Bạn có thể chơi với bất cứ thứ gì bạn muốn; không có gì sống Chỉ khi bạn sẵn sàng để làm cho nó sống, bạn mới chạm vào trang web chính của bạn.

Có vẻ như một cách rất dễ dàng để nhanh chóng chuyển từ phát triển sang sản xuất, đặc biệt là với một trang web đã có sẵn.


3
Đó thực sự là một lựa chọn tốt và sẽ rất tốt cho nhiều người! Điều đó tất nhiên không hoạt động đối với các URL nhúng và cũng không giúp ích cho những người phát triển cục bộ để họ có thể sử dụng IDE với trình gỡ lỗi. Bây giờ nếu WPEngine có thể tạo ra một tương tác hợp nhất một triển khai cục bộ thì nó thực sự sẽ là một thứ gì đó (Technosailor, bạn có nghe không?)
MikeSchinkel

Đồng ý, đó sẽ là một bổ sung tuyệt vời.
Travis Northcutt

Tính năng chụp nhanh chỉ sao chép từ sản xuất đến dàn dựng, không phải theo cách khác. Thật tuyệt khi thử nghiệm các thay đổi, nhưng nó sẽ không giúp triển khai sản xuất.
sam

2
@sam thực sự, gần đây họ đã bắt đầu tung ra khả năng sao chép từ dàn dựng sang sản xuất. wpengine.com/2013/04/user-portal-v2-and-staging-to-production
Travis Northcutt

7

Plugin sao chép: Đây là một plugin mà tôi đang làm việc. Nó hiện đang ở giai đoạn thử nghiệm nhưng nó hoàn thành công việc cho hầu hết các trang web. Ngay bây giờ nó được nhắm mục tiêu vào các cài đặt WordPress nhỏ hơn. http://wordpress.org/extend/plugins/d repeatator /

Tài nguyên: Có thể tìm thấy các tài nguyên bổ sung cho plugin tại đây: http://lifeinthegrid.com/d repeatator /

Cộng đồng: Vui lòng cho chúng tôi biết về thành công của bạn hoặc bất kỳ vấn đề nào bạn có thể gặp phải! Trong nỗ lực để dễ dàng quản lý các chủ đề khác nhau, vui lòng gửi các vấn đề lên các diễn đàn plugin WordPress.org. Vui lòng không đăng bất kỳ dữ liệu đăng nhập nào từ plugin lên các diễn đàn trực tuyến. Dữ liệu đăng nhập có thể được gửi đến trang web hỗ trợ của chúng tôi.


6

Bạn có thể xem một sản phẩm từ iTheme, được gọi là BackUpBuddy . Tôi chỉ sử dụng nó hai lần, mỗi lần có một hoặc hai lần, nhưng nhìn chung nó có vẻ đầy hứa hẹn.


5

Cá nhân tôi đang giải quyết vấn đề này với dự án của tôi trên Github, được gọi là Autopress . Tôi chưa có một giải pháp hoàn hảo, nhưng tôi đang tiến gần hơn, đặc biệt là với plugin wpstage từ những người wpengine.


Chỉ cần kiểm tra kịch bản của bạn. Đẹp. Nếu tôi hiểu nó sẽ cài đặt một WP mới trên máy chủ. Câu hỏi ở đây là làm thế nào để chuyển từ phát triển sang sản xuất. Nó có thể giúp với điều đó?
Sruly

17
Có phải đây không? github.com/vluther/Autopress Tôi khuyên bạn nên tạo liên kết trong câu trả lời của mình để mọi người có thể nhấp qua!
artlung

4
@Mike Lee: Có, bạn có thể bình chọn lên. Xem, tôi nêu lên nhận xét của artlung. Tìm kiếm uparrow trên hover ở bên trái của bình luận.
MikeSchinkel

Tôi đang làm việc để giữ mọi thứ trong kiểm soát phiên bản, và sau đó chuyển từ dev sang sản xuất. Tôi đã có thể làm điều đó mà không có bất kỳ vấn đề nào đối với một vài trang web, nhưng vẫn còn một số điều chỉnh mà tôi cần phải giải quyết.
Vid Luther

1
Không chắc chắn nếu đây là nó, nhưng có một plugin WP Engine được sử dụng để di chuyển trang web trên các máy chủ. Nó được gọi là Snapshot ( Liên kết trực tiếp ).
joelhaus

5

Điều này có vẻ đầy hứa hẹn. Chúng tôi đang nghiên cứu một số tập lệnh để xử lý việc di chuyển một số dữ liệu, ví dụ như tùy chọn wp, thay đổi đường dẫn trong db, sao chép trên phương tiện truyền thông.

Vấn đề tôi có là trang web trực tiếp tiếp tục phát triển trong khi trang kia đang trong quá trình phát triển. Một trang web chúng tôi làm việc có 20 bài đăng mỗi ngày và hơn 3.000 bình luận mỗi ngày. Đó là quá nhiều dữ liệu để di chuyển với phpmyadmin hoặc thông qua dòng lệnh. Ngoài ra, việc di chuyển dữ liệu xung quanh luôn gây ra sự cố UTF vì một số lý do.

Ngoài ra, bây giờ có vẻ như các tùy chọn menu được lưu trữ trong DB, tôi thậm chí còn phải đối phó nhiều hơn.

Tôi kiểm tra tất cả mã của mình vào SVN và triển khai mã qua FTP từ máy chủ (Beanstalk). Điều này không thực hiện các thay đổi đối với DB mặc dù hoặc kích hoạt các plugin mới.

Kế hoạch của tôi ngay bây giờ là tạo một tệp kê khai trong khi tôi đang phát triển để thực hiện tất cả các thay đổi của mình đối với trang web trực tiếp.

Ví dụ: tập tin sẽ có dòng người đọc được

Nó sẽ bao gồm các plugin để kích hoạt, tùy chọn wp để di chuyển, hình ảnh để di chuyển, các trang để di chuyển. Sau đó, plugin của tôi, sẽ phát hiện tệp kê khai và thực hiện tất cả các thay đổi đối với trang dàn dựng.

Khi tôi đã kiểm tra điều đó và chắc chắn rằng tôi có mọi thứ, tôi có thể chắc chắn rằng nó sẽ hoạt động trên sản xuất.

Plugin này vẫn chỉ là một ý tưởng, nhưng tôi có một số mã được viết cho nó.

Ngoài ra, nếu bạn muốn thay đổi chỉ URL trong DB của mình, bạn có thể sử dụng SQL sau.

chỉ cần thay thế $old$bằng tên miền cũ và $new$với tên miền mới

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
Chỉ cần một lưu ý, cuộc gọi sql của tôi có thể phá vỡ dữ liệu nối tiếp của bạn. s: 14: blog.prod.com có ​​độ dài được mã hóa là 14. Sau khi chạy mã, bây giờ chúng ta có s: 14: dev.prod.com bị hỏng. Nên s: 12: dev.prod.com sử dụng một cách thận trọng.
Andrew


3

Tôi sử dụng lệnh xuất của subversion để cài đặt các tệp WordPress (http://core.svn.wordpress.org/tags//) cũng như tất cả các plugin trong kho lưu trữ (http://plugins.svn.wordpress.org//tags //), sau đó chỉ cần nén chủ đề và các plugin tùy chỉnh và cài đặt chúng bình thường. Khi tất cả những thứ đó hoạt động và không có nội dung, tôi xuất DB thử nghiệm và thực hiện tìm kiếm / thay thế cho URL VÀ filepath (được lưu trữ cho phương tiện) và nhập vào cơ sở dữ liệu trống, sau đó chỉ cần chuyển thông tin cơ sở dữ liệu trong wp-config .php. Nói chung tôi mất khoảng 10 - 20 phút.


3

Thông thường tôi đăng nhập vào phpMyadmin tải lên cơ sở dữ liệu và chỉnh sửa nội dung của wp_options> siteurl và wp_options> về miền dự kiến. Nếu bạn cần cập nhật URL trong nội dung bài đăng và trang của mình, bạn có thể thực hiện tìm kiếm / thay thế cho URL và đường dẫn phương tiện / tải lên trên tệp .Query trước khi tải lên. Đó là một công việc nhanh chóng.


3

Mặc dù không thiếu các giải pháp tốt ở đây, nhưng trên tinh thần chia sẻ, tôi nghĩ rằng tôi sẽ thêm tập lệnh triển khai bash của mình vào đống: https://github.com/jplew/SyncDB

SyncDB là tập lệnh triển khai bash có nghĩa là loại bỏ tedium khỏi việc đồng bộ hóa các phiên bản cục bộ và từ xa của trang Wordpress. Nó cho phép các nhà phát triển làm việc trong môi trường cục bộ (ví dụ: MAMP) nhanh chóng "đẩy" hoặc "kéo" các thay đổi đến hoặc từ máy chủ sản xuất của họ bằng một lệnh đầu cuối duy nhất.

Kịch bản này hoạt động tốt với WP-Skeleton của Mark Jaquith và khai thác mysqldump, gitrsyncđể đồng bộ hóa toàn bộ cơ sở dữ liệu, mã và phương tiện truyền thông của bạn trong hai bước đơn giản:

./syncdb
git push hub master

3

Tôi đã sử dụng http://wordpress.org/plugins/wp-clone-by-wp-academy/ . Nó hoạt động độc đáo!

Chỉ cần 3 bước:

  1. Cài đặt plugin trên cả hai trang web.
  2. Sử dụng plugin để tạo bản sao lưu trên trang web cũ.
  3. Lấy URL sao lưu mà nó cung cấp cho bạn và cắm nó vào trang plugin trên trang web mới, nhấn go và quá trình di chuyển của bạn hoàn tất chỉ sau vài giây!

Nó tự động điều chỉnh tất cả các URL - bao gồm cả thay thế chuỗi nối tiếp - vì vậy không có nguy cơ mất cấu hình tiện ích, v.v.

Vấn đề duy nhất tôi gặp phải là với một số trang web có cơ sở dữ liệu lớn hơn (~ 300 MB), điều này gây ra thời gian thực thi tập lệnh PHP trong quá trình nhập bản sao lưu trang.


3

Kể từ năm 2017, đây là hai cách tốt nhất mà tôi đã tìm thấy để xử lý việc chuyển cơ sở dữ liệu WordPress từ phát triển sang sản xuất.

WP Di chuyển DB Pro / WP Sync DB

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

Các plugin WordPress này cho phép bạn đẩy, kéo và đồng bộ hóa các bảng cơ sở dữ liệu giữa các cài đặt WordPress. Điều này tốt hơn nhiều so với việc tìm / thay thế vì nhiều lý do vì nó:

  • Xuất khẩu cơ sở dữ liệu của bạn dưới dạng kết xuất dữ liệu MySQL (giống như phpMyAdmin)
  • Có tìm và thay thế trên URL và đường dẫn tệp
  • Xử lý dữ liệu nối tiếp
  • Cho phép bạn lưu nó vào máy tính của mình dưới dạng tệp SQL

Tôi là một người hâm mộ được trả tiền cho công việc tôi làm, vì vậy tôi khuyên bạn nên ủng hộ ông Brad Touesnard và mua một bản sao giấy phép của hàng thật. WP Sync DB là một bản sao và kết quả là nó luôn được hỗ trợ. Với plugin này, quá trình này rất đơn giản:

  1. Cài đặt / kích hoạt plugin trên localhost và môi trường sản xuất của bạn
  2. Định cấu hình chuyển giao đẩy từ máy chủ cục bộ / máy chủ phát triển đến sản phẩm của bạn
  3. Điền vào các quy tắc để chuyển bảng nào và xác định các quy tắc tìm và thay thế để thực hiện
  4. Đó là nó!

Tìm kiếm và thay thế cơ sở dữ liệu cho cơ sở dữ liệu WordPress bằng InterconnectIT

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

Công cụ miễn phí này không phải là một plugin, nhưng được cài đặt trong thư mục gốc của bản cài đặt sản xuất WordPress của bạn. Điều này không tốt bằng WP Migrate DB Pro vì nó yêu cầu một vài bước thủ công, nhưng dù sao đó cũng là một lựa chọn tuyệt vời luôn hoạt động. Khi sử dụng phương pháp này, quy trình sẽ như thế này:

  1. Sao lưu cơ sở dữ liệu cục bộ của bạn, điều này là hoàn toàn cần thiết vì chúng tôi sẽ sớm nhập lại nó
  2. Thêm tập lệnh vào một thư mục trong thư mục gốc cài đặt của bạn
  3. Chạy tìm và thay thế trên cơ sở dữ liệu của bạn
  4. Xuất cơ sở dữ liệu của bạn và lưu nó cho môi trường sản xuất của bạn
  5. Nhập lại bản sao lưu của bạn từ bước # 1 để khôi phục localhost của bạn
  6. Kết nối với cơ sở dữ liệu sản xuất của bạn và sao lưu nó (như bạn luôn cần trước khi làm những việc này)
  7. Nhập xuất chúng tôi đã thực hiện SAU khi chạy thói quen tìm / thay thế từ bước # 4

Bạn có thể sử dụng một cách tiếp cận nhanh hơn, nhưng nó liên quan đến thời gian chết cho trang web sản xuất của bạn mà theo tôi là không thể chấp nhận được. Đó là lý do tại sao chúng ta gọi nó là sản xuất, phải không?


1

Vì tôi chạy các trang web của mình trong IIS (Tôi cũng chạy asp.net, vì vậy tôi cần windows) Tôi sử dụng WebPI từ Msft để cài đặt một phiên bản mới, sau đó tôi sao chép mẫu và sử dụng nhập / xuất để truyền dữ liệu.

Nó không hoàn hảo nhưng toàn bộ chỉ mất chưa đầy một giờ.

Rõ ràng sẽ rất tốt nếu có giải pháp một lần bấm, nhưng đây là điều tôi thấy dễ nhất đối với tôi.


1

Một giải pháp thanh toán khác: khung chủ đề Xtreme One đã phát hành phiên bản 1.2 với Sao lưu Xtreme cho phép bạn "xuất hoặc nhập các cài đặt của Childtheme, Bố cục hoặc Widgets với tất cả các cài đặt / nội dung của chúng dưới dạng tệp XML."


1

Một đồng nghiệp đã tìm thấy điều này. Khái niệm thú vị, mặc dù nó không hoạt động trên máy chủ chéo. Tôi vẫn đang khám phá nó, nhưng có vẻ như nó có thể hoạt động tốt cho một ví dụ dàn dựng

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


Bốn tháng trước, tôi không thể làm cho plugin này hoạt động ... Và nó vẫn ở phiên bản 0.1 trong code.google
brasofilo

1

Điều này có thể không xuất hiện khi bạn đặt câu hỏi, nhưng tôi đã sử dụng một dịch vụ có tên Blogvault trong một vài tháng và nó đã thực hiện điều này một cách hoàn hảo. Có lẽ tôi đã thực hiện hơn 50 lần di chuyển (vượt qua các tên miền, tên miền phụ và máy chủ web), không phải là một trở ngại và không mất thời gian.

Đó là một dịch vụ trả phí (mỗi tên miền / tháng), nhưng không nhiều.


1

RAMP là một plugin triển khai nội dung mới từ Crowd Favourite và nó trông rất hấp dẫn. Tuy nhiên, đó là $ 250, vì vậy tôi chưa thử. Tuy nhiên, tôi chỉ có thể tự trả tiền trong khoảng thời gian tiết kiệm được, vì vậy tôi đang xem xét nó.

Lợi ích lớn mà nó mang lại so với hầu hết các phương pháp khác được đề cập, là nó có thể hợp nhất một cách thông minh các bài đăng, bình luận, v.v. Nó không chỉ là nhập một mysqldump, nó giống như kiểm soát nguồn cho cơ sở dữ liệu. Ví dụ: khi triển khai một bài đăng, nó cũng sẽ triển khai các thẻ cho bài đăng đó, nếu chúng không tồn tại trong sản xuất.


RAMP là để triển khai nội dung , trái ngược với triển khai , nhưng tôi đồng ý, nó trông tuyệt vời. Bây giờ họ có bản demo RAMP được thiết lập để bạn có thể dùng thử các tính năng.
Emzo

Câu hỏi là về triển khai nội dung , không phải triển khai mã và tôi đã bắt đầu câu trả lời của mình bằng cách nói "RAMP là một plugin triển khai nội dung mới ..."
Ian Dunn

1

Hãy để tôi cho đi một trong những mục yêu thích của tôi :-)

// 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 -------------------
{

... Và sau đó bạn làm việc theo cách của bạn từ đó. DB_NAME, DB_USER ... bảng_prefix. Cá nhân tôi bật ALTERNATE_WP_CRON trên cục bộ (để tránh một số cảnh báo gây phiền nhiễu ), WP_DEBUG của cả hai (nếu bạn không phải là nhà phát triển) hoặc chỉ hoạt động (nếu bạn), một người khác ini_set('display_errors', '0');để sống cũng có thể làm tốt, cuối cùng, như đã đề cập ở trên: WP_HOME và WP_SITEURL với url cục bộ / url thực tế tương ứng.

Đó là khá nhiều tất cả, không có gì còn lại trên WordPress cổ điển 'Đó là tất cả, dừng chỉnh sửa!' hàng...

192.168. một phần cho phép bạn thực hiện một số thử nghiệm cục bộ (ví dụ từ các miếng đệm hoặc điện thoại) trong mạng cục bộ của bạn)

$ GLOBALS ['is_local'] cũng có thể có ích trong quá trình phát triển chủ đề của bạn, đối với một số đầu ra gỡ lỗi bổ sung, v.v ...


1
Bạn có thể sử dụng WordPress Skeleton wp-config.php , đặt WP_LOCAL_DEVhằng số để đạt được thứ gì đó tương tự
icc97

1

Tôi đã sử dụng plugin backupbuddy được một thời gian rồi. Nó cho phép bạn tạo bản sao lưu cơ sở dữ liệu và tất cả các tệp, tải xuống dưới dạng zip hoặc gửi trực tiếp đến máy chủ khác qua FTP. Nó cũng làm URL tìm và thay thế cho bạn. Tôi thường mất khoảng 5 phút để hoàn thành toàn bộ quá trình. Và bởi vì tất cả các tệp được nén, quá trình tải lên / tải xuống nhanh hơn nhiều. Và không, tôi không làm việc cho họ, nhưng plugin này thực sự đã làm cho toàn bộ quá trình này dễ dàng hơn nhiều.


1

Một công cụ hữu ích khác để xử lý di chuyển máy chủ cho các trang web là WordPress CLI, bài viết này có một cái nhìn tổng quan tốt về những gì nó có thể làm nhưng cụ thể là phần "Tìm kiếm và Thay thế" rất hữu ích để tìm tất cả các tham chiếu đến url trang web cũ / dev :

Quản lý WordPress nâng cao với WP-CLI


1

Đây là cách dễ nhất từ ​​trước tới nay: https://theme.artbees.net/docs/website-migration/
Chỉ mất hai lần nhấp. Một để xuất khẩu, một để nhập khẩu.

Có thể bằng cách sử dụng plugin All in one WP Migration. Liên kết trên cho thấy làm thế nào để sử dụng nó.


0

Nếu bạn đang cố gắng đạt được đồng bộ hóa liên tục, tôi khuyên bạn nên sử dụng rsync cùng với công việc định kỳ tùy chỉnh để viết lại bất kỳ url hoặc dữ liệu cụ thể theo trang web.


0

Sau khi làm theo câu trả lời này được một lúc, tôi đã tạo ra một plugin nhỏ của riêng mình - Pitta Migration . Những lý do là:

  1. Trong tất cả các ý tưởng đã thử ở đây - đơn giản nhất là WP_HOMEWP_SITEURLcác tùy chọn
  2. Sau đó, tôi sử dụng các wp_optionsURL này để đặt hai URL phù hợp - bao gồm khi các plugin / chủ đề bỏ qua các URL này
  3. Điều này giúp tôi tự tin 100% về những gì đang được thay đổi trong cơ sở dữ liệu của mình
  4. Điều này cũng hoạt động đa nền tảng (tất cả các tập lệnh bash không chơi độc đáo trên Windows)
  5. Thật dễ hiểu khi plugin đang làm gì
  6. Không có cấu hình nào ngoài hai hằng số - thực hiện nhập mysqldump và nhập mysql vào cơ sở dữ liệu cục bộ của bạn và plugin thấy rằng hằng số và bảng khác nhau và cập nhật chúng cho phù hợp
  7. Không tìm kiếm văn bản và thay thế
  8. Không có cơ hội làm hỏng cơ sở dữ liệu của bạn - Tôi sử dụng Đối tượng cơ sở dữ liệu WordPress để thực hiện hai bản cập nhật và không có gì khác
  9. Nó chơi độc đáo với những thứ như WordPress Skeleton , nơi bạn có thể có mọi thứ trong kiểm soát nguồn và đặt cấu hình cục bộ
  10. Tôi đã đặt nó trong thư mục plugin WordPress và trên Github để nó miễn phí, mã nguồn mở hoàn toàn, dễ dàng cho bạn rẽ nhánh và dễ cài đặt
  11. Sau khi cài đặt, bạn có thể quên nó và nó sẽ 'hoạt động' - nó sẽ cho bạn một thông báo nhỏ để nói rằng cơ sở dữ liệu đã được sửa đổi
  12. Nó nên hoạt động với bất kỳ quá trình sao lưu / FTP / khôi phục

0

Theo tôi cách dễ nhất tôi làm theo là chuyển thủ công .. Chỉ cần sao chép thư mục wp-content và tệp wp-config.php vào máy chủ mới. Xuất cơ sở dữ liệu từ máy chủ cũ và nhập vào cơ sở dữ liệu mới của máy chủ mới ..

Trong cơ sở dữ liệu máy chủ mới, hãy chuyển đến bảng tùy chọn wp và ở đó thay đổi URL trang web và URL Blog thành địa chỉ máy chủ mới từ máy chủ cũ. thích từ http: // localhost / wp đến http://example.com

Bây giờ trong tệp wp-config chỉ cần thay đổi thông tin của cơ sở dữ liệu và người dùng với thông tin máy chủ mới.

Bây giờ hãy đăng nhập vào wp-admin mới và vào cài đặt và lưu permalink.

Bạn xong việc rồi. Tôi nghĩ rằng điều này là đơn giản mà không cần sử dụng bất kỳ plugin.

Tôi đã thử các loại plugin khác nhau và tất cả chúng đều có nhiều loại vấn đề ..

Vì vậy, tôi thích chuyển thủ công đơn giản này mà tôi nghĩ dễ dàng hơn.

Licensed under cc by-sa 3.0 with attribution required.