it-swarm-id.com

Bisakah Anda merekomendasikan cara untuk mengelola penyebaran kode ke server web berbasis Linux?

Saya selalu menggunakan skrip bash yang sangat sederhana untuk menyebarkan kode. Saya beralih dari menggunakan Subversion ke Mercurial, tetapi saya tidak berpikir perangkat lunak kontrol revisi penting untuk penyebaran.

Apa sajakah cara atasan untuk melakukan ini?

#!/bin/sh
date=`date +%Y%m%d_%H%M%S`
tar -zcvf app-dir-$date.tar.gz app/dir 
tar -zcvf app-templates-$date.tar.gz app/templates
tar -zcvf app-media-$date.tar.gz app/media
svn export http://example.com/somepath/trunk hh/ --force
7
citadelgrad

Saya menggunakan Mercurial untuk mengelola semuanya , termasuk halaman HTML statis saya. Itu membuat hidup benar-benar mudah bagi saya.

Manfaatnya termasuk

  • Semua penawaran yang ditawarkan kontrol versi (rollbacks, milestone tag, dll)
  • Mampu mengkloning situs Anda dengan terburu-buru
  • Anda selalu memiliki cadangan/salinan lokal yang berfungsi
  • Mudah disinkronkan jika Anda cenderung melakukan perubahan en situ (di tempat, di server)
  • Sebagian besar host yang dibagikan (jika Anda berurusan dengan satu) tidak keberatan menginstalnya

Penafian, saya menulis tutorial. Ya, jenis VCS yang Anda gunakan itu penting, sampai taraf tertentu. Misalnya, saya tidak akan menggunakan sesuatu dalam skenario ini di mana saya tidak dapat melakukan secara lokal dan membuat satu Push/pembaruan besar. Itu hanya memaksa saya untuk menyatukan terlalu banyak perubahan yang berpotensi bermasalah menjadi satu komitmen.

Saya dapat melakukannya dengan Subversion, dan saya tidak mengetuk SVN sama sekali. Saya hanya berpikir Mercurial adalah alat yang jauh lebih baik untuk masalah yang Anda coba selesaikan.

Pendapat saya bahwa Anda tidak harus 'mengerjakan' alat Anda kecuali Anda tidak punya pilihan lain. Melakukan hal semacam mengalahkan tujuan memilikinya, dan Anda memang punya pilihan :)

5
Tim Post

Selain saran luar biasa di jawaban lain, Anda mungkin ingin mempertimbangkan apakah penting bagi Anda untuk melakukan pembaruan atom.

Di server FreeBSD saya, saya menyelesaikan ini melalui dua mekanisme:

  • Versi semua sumber daya statis saya. (E.g. http://static.example.com/images/logo.1.png atau http://static.example.com/style/main.3.css). Ini memungkinkan saya untuk svn update situs statis secara langsung sebelum memperbarui situs dinamis, tanpa perlu khawatir pengguna melihat file baru di halaman lama.

  • Versi seluruh situs web dinamis. Dalam kasus saya, saya memiliki root dokumen saya menunjuk ke tautan simbolik. Strategi saya adalah untuk mendapatkan versi produksi baru dan kemudian dengan satu perintah Dorong itu hidup. .g. sesuatu seperti ini:

    cp -Rp www.site1.com.1 www.site1.com.2 (atau svn checkout)

    svn update site1.com.2 (mungkin perlu svn switch pertama)

    ln -sf site1.com.2 www.site1.com (memindahkan perubahan ke produksi secara atomis)

Ini memastikan bahwa tidak ada pengguna saya yang akhirnya melihat halaman yang setengah terpanggang. Mereka akan melihat versi lama jika masih dalam cache, atau yang baru.

Strategi ini hanya berfungsi dengan baik jika Anda tidak mencampurkan konten yang diunggah pengguna dengan situs dinamis Anda.

1
JasonBirch

Kami menggunakan semut tugas scp , dengan pemilih yang dimodifikasi . Itu berarti Anda hanya memperbarui file yang telah berubah sejak unggahan sebelumnya. Sayangnya, pemilih yang dimodifikasi tampaknya dirancang hanya untuk penggunaan pribadi, bukan berbagi dengan anggota tim. File cache.properties memiliki nama jalur ke direktori kerja pengguna di dalamnya. Kami menulis banyak target semut untuk memijat file cache.properties ke dalam format yang dapat dibagi antara pengembang dan kemudian memijat kembali ke format yang dibutuhkan semut. Formatnya juga bervariasi antara lingkungan Windows dan lingkungan GNU/Linux.

0
Don Kirkby

Bukankah seluruh titik menggunakan kontrol versi yang Anda tidak perlu khawatir tentang mencadangkan situs sebelum mendorong pembaruan?

Jika itu dilakukan dengan benar, svn update (atau yang setara) harus cukup, dan jika itu kesalahan maka gulung kembali ke komit sebelumnya? Bagaimanapun, itulah yang kami lakukan. Komit semua perubahan, svn update server pementasan, jika semuanya OK maka svn update server langsung.

0
Mark Henderson