Bagaimana Anda memigrasi situs IIS 7 ke server lain?

105

Saya bertanya-tanya apa praktik terbaik untuk memindahkan situs web ke server lain (bersama dengan semua pengaturan, dll.)

  • Membuat ulang situs secara manual di server baru (tidak dapat dipelihara karena alasan yang jelas)
  • Salin file pengaturan applicationHost.config
  • Gunakan appcmd untuk membuat cadangan dan memulihkan
  • Gunakan MSDeploy untuk mempublikasikan situs di komputer baru
  • Gunakan alat pihak ke-3

Hanya ingin tahu apa pengalaman orang lain.

Kalid
sumber
Microsoft hanya merekomendasikan Penyebaran Web (setelah alat ini dibuat), jadi sebelum Anda membaca jawaban di bawah ini, pastikan Anda mengetahui risiko yang sepenuhnya Anda tanggung sendiri.
Lex Li

Jawaban:

134

Saya akan mengatakan ekspor konfigurasi server Anda di manajer IIS:

  1. Di manajer IIS, klik node Server
  2. Buka Konfigurasi Bersama di bawah "Manajemen"
  3. Klik "Ekspor Konfigurasi". (Anda dapat menggunakan kata sandi jika Anda mengirimnya melalui internet, jika Anda hanya akan memindahkannya melalui kunci USB maka jangan khawatir.)
  4. Pindahkan file ini ke server baru Anda

    administration.config
    applicationHost.config
    configEncKey.key 
    
  5. Di server baru, kembali ke bagian "Konfigurasi Bersama" dan centang "Aktifkan konfigurasi bersama". Masukkan lokasi di jalur fisik ke file-file ini dan terapkan.

  6. Ini harus meminta kata sandi enkripsi (jika Anda mengaturnya) dan mengatur ulang IIS.

BAM! Pergi minum bir!

mengunyah
sumber
8
Mungkin harus menggunakan Import Server atau Site Package daripada hanya menyalin file, meskipun saya belum menguji ini juga. Tapi saya tahu ada jalur file di applicationHost.config yang belum tentu ada di server baru, yang akan menyebabkannya rusak. Selain itu, Anda mungkin harus menyebutkan bahwa saat ini tidak ada situs APA PUN di IIS, jadi proses ini tidak mengganggu konfigurasi yang sedang berjalan.
frogstarr78
16
Langkah terakhir tidak bisa terlalu ditekankan. Sangat penting.
Rap
7
Bukan ide yang bagus jika Anda bermigrasi ke versi IIS yang lebih baru. Jika tidak, ini adalah cara untuk melakukannya.
Roy Tinker
1
Saya bertanya-tanya dapatkah ini berhasil, karena seharusnya tidak: docs.microsoft.com/en-us/iis/manage/…
vaso123
1
Konfigurasi Bersama IIS tidak dirancang sebagai cara untuk memigrasi pengaturan di seluruh mesin, jadi jika Anda mengalami masalah apa pun setelah jawaban ini, gigit diri Anda dan jangan menyalahkan orang lain.
Lex Li
25

MSDeploy dapat memigrasi semua konten, konfigurasi, dll. Itulah yang direkomendasikan oleh tim IIS. http://www.iis.net/extensions/WebDeploymentTool

Untuk membuat paket, jalankan perintah berikut (ganti Situs Web Default dengan nama situs web Anda):

msdeploy.exe -verb:sync -source:apphostconfig="Default Web Site" -dest:package=c:\dws.zip > DWSpackage7.log

Untuk memulihkan paket, jalankan perintah berikut:

msdeploy.exe -verb:sync -source:package=c:\dws.zip -dest:apphostconfig="Default Web Site" > DWSpackage7.log
Bill Staples
sumber
1
Terima kasih Bill - Saya telah melihat alat tersebut tetapi waspada karena masih dalam versi Beta.
Kalid
1
Pada tahun 2016 ini masih 'state of the art' tetapi MSDEPLOY 3.6 benar-benar sulit untuk dikerjakan. Saya berharap mereka membuat sesuatu yang baru di beberapa titik.
Warren P
MSDeploy tidak mentransfer situs dengan benar untuk kami. Kami berakhir dengan satu situs yang berisi aplikasi dari setiap situs kami, jadi seluruh strukturnya salah.
Brianary
Tentunya ini cara yang disarankan, dan dokumentasi seperti docs.microsoft.com/en-us/iis/publish/using-web-deploy/… dan docs.microsoft.com/en-us/iis/publish/using-web- menyebarkan /… sangat penting bagi pengguna untuk menguasai langkah-langkah yang diperlukan dan poin-poin penting yang perlu mereka perhatikan. Sebagian besar masalah di internet sudah terjawab di artikel. Jika orang menghabiskan cukup waktu untuk itu, Penyebaran Web bukanlah alat yang "sulit" untuk digunakan.
Lex Li
18

Berikut adalah situs web yang berguna tentang menggunakan appcmd untuk mengekspor / mengimpor konfigurasi situs. http://www.microsoftpro.nl/2011/01/27/exporting-and-importing-sites-and-app-pools-from-iis-7-and-7-5/

Roy
sumber
Terima kasih untuk tautannya. Ini juga memungkinkan saya untuk mengubah ID situs dan yang lainnya dan saya tidak perlu menyiapkan 10 aplikasi berbeda dan 30 direktori virtual berbeda. Penghemat waktu besar
2GDave
Karena pendekatan ini tidak memperhatikan dependensi yang mendasarinya (modul IIS dan sebagainya), gunakan dengan risiko Anda sendiri.
Lex Li
12

Microsoft Web Deploy v3 dapat mengekspor dan mengimpor semua file Anda, pengaturan konfigurasi, dll. Itu menempatkan semuanya ke dalam arsip zip yang siap untuk diimpor di server baru. Ia bahkan dapat meningkatkan ke versi IIS yang lebih baru (v7-v8).

http://www.iis.net/extensions/WebDeploymentTool

Setelah menginstal alat: Klik kanan server atau situs web Anda di IIS Management Console, pilih 'Deploy', 'Export Application ...' dan jalankan melalui ekspor.

Di server baru, impor arsip zip yang diekspor dengan cara yang sama.

Zymotik
sumber
tetapi mengambil semua file. apakah ada cara untuk melewati pengambilan file? jika Anda misalnya memigrasi Server FTP, server akan mencoba mengambil semua file dan membuatnya menjadi zip.
RayofCommand
2
@RayofCommand - Saat memilih opsi penerapan, Anda dapat menghapus daftar "Konten" - maka paket tidak menyertakan semua file.
Zhaph - Ben Duguid
1
Tetapi hanya saat menerapkan situs-demi-situs .... bukan untuk seluruh pemindahan server.
Ethan Allen
1
Setelah menginstal MS Web Deploy di server tujuan (IIS8), IIS Management Console tidak berisi opsi Penyebaran Web.
Brianary
1
Saya juga tidak memiliki menu "Deploy" setelah menginstal paket.
Pengacara Setan
3

gunakan appcmd untuk mengekspor satu atau semua situs, lalu impor kembali ke server baru. Bisa jadi iis7.0 atau 7.5 Ketika Anda mengekspor menggunakan appcmd, kata sandi didekripsi, lalu impor ulang dan mereka akan mengenkripsi ulang.

Jim
sumber
3

Saya tidak dapat mengomentari utas karena kurangnya perwakilan. Pemberi komentar lain menyatakan bahwa mereka tidak dapat bermigrasi dari versi yang lebih rendah ke versi IIS yang lebih tinggi. Ini benar jika Anda tidak menggabungkan beberapa file, tetapi jika Anda melakukannya, Anda dapat melakukannya karena saya baru saja memigrasi situs IIS 7.5 saya ke IIS 8.0 menggunakan jawaban yang diposting oleh chews.

Ketika ekspor dibuat (II7.5), ada dua file kunci (administrasi.config dan applicationHost.config) yang memiliki referensi ke sumber daya di server IIS7.5. Misalnya, DLL akan dirujuk dengan kunci publik dan versi khusus ke 7.5. Ini TIDAK sama di server IIS8. Konfigurasi fitur mungkin berbeda juga (saya memastikan milik saya identik). Ada beberapa fitur baru di 8 yang tidak akan pernah ada di 7.5.

Jika Anda cukup berani untuk menggabungkan kedua file - itu akan berhasil. Saya harus menghapus IIS sekali karena saya mengacaukannya, tetapi mendapatkannya untuk kedua kalinya.

Saya menggunakan alat penggabung (Beyond Compare) dan tanpa sesuatu yang setara, itu akan menjadi PITA yang sangat besar - tetapi cukup mudah dengan alat diff yang bagus (lima menit).

Untuk melakukan penggabungan, file 8.0 perlu di-diff terhadap file 7.5 yang diekspor SEBELUM pengimporan dilakukan. Untuk sebagian besar, file 8.0 perlu menimpa hal-hal khusus server dalam file 7.5 yang diekspor, sambil meninggalkan hal-hal khusus kumpulan situs / aplikasi.

Saya menemukan bahwa administrasi.config hampir identik, tanpa versi info dari banyak entri. Yang ini mudah.

ApplicationHost.config memiliki lebih banyak perbedaan. Beberapa entri diurutkan secara berbeda, tetapi sebaliknya identik, jadi Anda harus memilih setiap perbedaan dan mencari tahu.

Saya meletakkan file ekspor 7.5 saya di folder System32 \ inetsrv \ config \ Export sebelum menggabungkan.

Saya menggabungkan FROM folder System32 \ inetsrv \ config ke folder System32 \ inetsrv \ config \ Export untuk kedua file yang saya sebutkan di atas. Saya mendorong semua yang ada di FROM file kecuali tag / elemen khusus situs (misalnya applicationPools, customMetadata, situs, otentikasi). Sebagai catatan khusus, ada juga banyak blok tag "lokasi" khusus situs yang harus saya pertahankan, tetapi server baru memiliki blok tag "lokasi" sendiri dengan default khusus server yang harus dipertahankan.

Terakhir, perhatikan bahwa jika Anda menggunakan akun layanan, kata sandi yang di-cache ini adalah sampah dan harus dimasukkan kembali untuk pool aplikasi Anda. Awalnya tidak ada situs saya yang berfungsi, tetapi yang diperlukan hanyalah memasukkan kembali kata sandi untuk semua kumpulan aplikasi saya dan saya sudah aktif dan berjalan.

Jika seseorang yang dapat berkomentar menyebutkan posting ini di utas - itu mungkin akan membantu orang lain seperti saya yang memiliki banyak situs di satu server dengan konfigurasi yang rumit.

Salam,

Stuart

Stuart
sumber
Saya sebenarnya menggunakan jawaban Stuart untuk migrasi gabungan, saya masih tidak suka MS Web Deploy.
mengunyah
1

Dalam kasus saya, file sudah disalin, saya menemukan cara termudah untuk mengikuti langkah-langkah dalam panduan ini: https://www.ryadel.com/en/exporting-importing-app-pools-and-websites-configuration-between -multiple-iis-instance /

Saya mengekspor AppPools / Situs Web, menyalin file xml ke server tujuan dan Mengimpor AppPools lalu Situs Web. Bekerja dengan sangat baik. Ini juga merupakan pilihan bagus lainnya untuk pertanyaan ini.

Muntah
sumber
ini hanya memberi saya kesalahan yang menyatakan bahwa kumpulan aplikasi default dan situs web default tidak dapat ditimpa ... tidak bueno.
Devlin anyelir
Coba ganti nama default menjadi yang lain? dan lihat apakah mereka dibuat dengan proses yang dijelaskan di atas?
Ralph
Ini berhasil untuk saya mulai dari IIS7.5 (2008) ke IIS10 (2019). Appcmd awalnya memberi saya kesalahan pada 'Situs Web Default' yang sudah ada. Mengganti nama tidak berhasil, jadi saya menghapus situs default. Impor kemudian berjalan tanpa kesalahan.
MTAdmin