Mengembangkan, Menguji, dan Melepaskan

10

Bagaimana Anda mengembangkan, menguji, dan menyebarkan-untuk-tinggal situs Wordpress Anda?

Itu selalu sedikit faff saya temukan, terutama di mana database yang bersangkutan - terutama karena fakta bahwa memiliki situs pengujian membutuhkan seluruh database baru untuk dikerahkan yang kadang-kadang bisa sama persis, kecuali semua tautan diubah ke url situs pengujian, alih-alih situs langsung.

Demikian pula setiap unggahan yang telah diunggah pengguna sejak terakhir kali Anda perlu memperbaiki bug atau mengembangkan sesuatu yang baru harus disalin ke situs pengujian.

Bagaimana orang lain melakukannya? Apakah Anda tahan dengan faff? Apakah Anda menggunakan sistem kontrol versi pintar yang membantu?

Terima kasih

Thomas Clayson
sumber
Jika Anda membuat sistem berputar untuk mengubah file host Anda , maka Anda tidak perlu mengotori dengan DB tes Anda. ( wordpress.stackexchange.com/a/10943/9142 )
Alexander Bird

Jawaban:

12

Ada sedikit filosofi pribadi yang masuk ke dalam alur kerja penempatan. Ini bukan pertanyaan mudah untuk dijawab secara langsung tanpa mengetahui pengalaman Anda dengan server dan kontrol versi, sistem operasi Anda, hosting, pengalaman klien dan budaya teknologi, dll ...

  1. Ini pertanyaan serupa yang punya banyak penjelasan.
  2. Untuk penyebaran konten, Anda dapat memeriksa plugin RAMP Favorit Crowd .
  3. WP Hackers adalah utas yang bagus untuk menemukan informasi yang baik tentang penyebaran.

Secara pribadi, saya memastikan bahwa saya tidak pernah membuat kode URL mutlak dalam tema saya. Gunakan bloginfo () atau kode URL relatif. Saya menggunakan banyak persyaratan dalam file wp-config.php saya. Berikut adalah versi vanilla dari suntingan wp-config saya.

switch($_SERVER['SERVER_NAME']){
    case 'dev.yourdomain.com':
        $db_host = '';
        $db_pass = '';
        //define debugging
        break;
    case 'stage.yourdomain.com':
        $db_host = '';
        $db_pass = '';
        break;
    default: //Live
        $db_host = '';
        $db_pass = '';
}
define('DB_PASSWORD', $db_pass);
define('DB_HOST', $db_host);

//You could also set this as a variable above
define('WP_HOME', 'http://'.$_SERVER['SERVER_NAME']));
define('WP_SITEURL', 'http://'.$_SERVER['SERVER_NAME']));

Saya mengerjakan banyak situs yang mengikuti

  • lokal (peretasan pribadi :) di server web laptop saya)>
  • dev (pengujian pada server klien)>
  • stage (sumber stabil untuk QA - pengeditan konten)>
  • produksi (situs langsung)

Terakhir, saya sarankan Anda menggunakan alat versi untuk membantu dalam penyebaran Anda seperti GIT atau SVN. Ini memudahkan proses secara signifikan dan menjaga integritas sumber antara lingkungan. Berkomitmen ke lokal Anda mudah diperbarui melalui baris perintah di panggung dan produksi. Paling baik selama penemuan untuk menentukan kontrol versi apa yang Anda dan klien akan gunakan sejak awal jika mereka memiliki pengembang yang mengerjakan proyek. Saya pribadi menggunakan GIT untuk kontrol versi saya. Namun, jika klien menggunakan SVN, saya melakukan campuran keduanya di lokal saya jadi saya mempertahankan repo untuk diri saya sendiri sementara juga berkomitmen untuk repo mereka.

Kami jarang mengalami masalah migrasi dari satu lingkungan ke lingkungan lainnya. Kami menemukan / mengganti DB untuk mengubah URL yang sesuai untuk media yang disematkan, dll ...

Brian Fegter
sumber
Ini sangat berguna! :) Terima kasih banyak. Jadi setiap kali Anda menyebarkan ke masing-masing server yang berbeda, apakah Anda menggandakan basis data dari situs langsung? Anda mengatakan bahwa Anda menyebarkan ke server pementasan (stage.domain.com) untuk QA dan mengedit konten. Apa yang terjadi jika database berubah saat Anda menjalankan server panggung di situs langsung? yaitu Anda atau klien Anda masuk ke panggung dan memperbarui beberapa konten, tetapi pada saat yang sama seorang kontributor memposting artikel baru di situs langsung? Apakah Anda hanya memengaruhi pengeditan konten LAGI di situs langsung? Bagaimana Anda menangani perubahan struktur database?
Thomas Clayson
Maaf tentang semua pertanyaan! : p Saya sangat berterima kasih atas waktu dan bantuan Anda.
Thomas Clayson
Pada set fitur baru, Anda dapat menarik dari panggung> prod. Tambahkan konten untuk fitur baru lalu, tekan kembali panggung> prod. Dari sana, stage adalah salinan prod dari kesetiaan yang tinggi dan Anda dapat menarik stage> dev. Tidak jarang kita menarik DB kembali dari panggung. Mayoritas pertukaran dengan DB terjadi dari panggung ke prod kecuali fitur mengubah arsitektur db.
Brian Fegter
Jika Anda ingin menggunakan panggung untuk penyebaran konten dan tidak pernah menyentuh prod, Anda dapat memeriksa plugin RAMP yang saya posting sebelumnya.
Brian Fegter
Beri +1 semua yang di atas, dengan ketentuan bahwa beberapa plugin yang menjengkelkan bersikeras menyimpan URL dalam array berseri, yang dapat mengacaukan memindahkan sesuatu dari satu DB env ke yang lain. Masalahnya adalah bahwa array serial menyimpan panjang string, dan borken ketika panjang berubah. Jadi, saya sarankan untuk menjaga nama domain env tetap sama jika mungkin, mis. Dev.example.com, tst.example.com, www.example.com dll.
webaware