Làm cách nào để bạn di chuyển một trang IIS 7 sang một máy chủ khác?


105

Tôi đang tự hỏi đâu là phương pháp hay nhất để chuyển một trang web sang một máy chủ khác (cùng với tất cả các cài đặt, v.v.)

  • Tạo lại trang web theo cách thủ công trên máy chủ mới (không thể bảo trì vì những lý do rõ ràng)
  • Sao chép tệp cài đặt applicationHost.config
  • Sử dụng appcmd để sao lưu và khôi phục
  • Sử dụng MSDeploy để xuất bản trang web trên máy mới
  • Sử dụng công cụ của bên thứ 3

Chỉ tự hỏi kinh nghiệm của những người khác đã được.


Microsoft chỉ khuyến nghị Triển khai Web (sau khi công cụ này được tạo ra), vì vậy trước khi đọc các câu trả lời bên dưới, hãy đảm bảo rằng bạn biết mình hoàn toàn chịu rủi ro.
Lex Li

Câu trả lời:


134

Tôi muốn nói rằng xuất cấu hình máy chủ của bạn trong trình quản lý IIS:

  1. Trong trình quản lý IIS, bấm vào nút Máy chủ
  2. Chuyển đến Cấu hình được chia sẻ trong "Quản lý"
  3. Nhấp vào “Xuất cấu hình”. (Bạn có thể sử dụng mật khẩu nếu bạn đang gửi chúng qua internet, nếu bạn chỉ muốn di chuyển chúng qua khóa USB thì đừng lo.)
  4. Di chuyển các tệp này sang máy chủ mới của bạn

    administration.config
    applicationHost.config
    configEncKey.key 
    
  5. Trên máy chủ mới, quay lại phần “Cấu hình được chia sẻ” và chọn “Bật cấu hình được chia sẻ”. Nhập vị trí trong đường dẫn vật lý đến các tệp này và áp dụng chúng.

  6. Nó sẽ nhắc nhập mật khẩu mã hóa (nếu bạn đặt) và đặt lại IIS.

RẦM! Đi uống bia!


8
Có lẽ nên sử dụng Máy chủ Nhập hoặc Gói Trang web thay vì chỉ sao chép các tệp, mặc dù tôi cũng chưa thử nghiệm điều này. Nhưng tôi biết có những đường dẫn tệp trong applicationHost.config sẽ không nhất thiết phải có trên máy chủ mới, điều này có thể khiến nó bị hỏng. Ngoài ra, bạn có thể nên đề cập rằng không thể có BẤT KỲ trang web nào hiện có trong IIS, vì vậy quá trình này không làm tắc nghẽn cấu hình đang chạy.
ếchstarr78

16
Bước cuối cùng không thể được nhấn mạnh quá mức. Quan trọng.
Rap vào

7
Không phải là một ý tưởng tuyệt vời nếu bạn đang chuyển sang phiên bản IIS mới hơn. Nếu không, đây cách để làm điều đó.
Roy Tinker

1
Tôi đang tự hỏi nó có thể làm việc, bởi vì nó không nên: docs.microsoft.com/en-us/iis/manage/...
vaso123

1
Cấu hình chia sẻ IIS không được thiết kế như một cách để di chuyển cài đặt giữa các máy, vì vậy nếu bạn gặp bất kỳ vấn đề nào sau câu trả lời này, hãy tự cắn mình và đừng đổ lỗi cho bất kỳ người nào khác.
Lex Li

25

MSDeploy có thể di chuyển tất cả nội dung, cấu hình, v.v., đó là những gì nhóm IIS đề xuất. http://www.iis.net/extensions/WebDeploymentTool

Để tạo một gói, hãy chạy lệnh sau (thay thế Trang Web Mặc định bằng tên trang web của bạn):

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

Để khôi phục gói, hãy chạy lệnh sau:

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

1
Cảm ơn Bill - Tôi đã nhìn thấy công cụ này nhưng rất cảnh giác vì nó vẫn đang ở giai đoạn Beta.
Kalid

1
Năm 2016, đây vẫn là 'công nghệ tiên tiến' nhưng MSDEPLOY 3.6 thực sự rất khó làm việc. Tôi hy vọng họ tạo ra một cái gì đó mới vào một lúc nào đó.
Warren P

MSDeploy đã không chuyển các trang web một cách chính xác cho chúng tôi. Chúng tôi đã kết thúc với một trang web chứa các ứng dụng của mỗi trang web của chúng tôi, vì vậy toàn bộ cấu trúc đã sai.
brianary

Chắc chắn đó là cách được khuyến nghị và tài liệu như docs.microsoft.com/en-us/iis/publish/using-web-deploy/…docs.microsoft.com/en-us/iis/publish/using-web- triển khai /… là yếu tố quan trọng để người dùng nắm vững các bước cần thiết và các điểm chính mà họ cần chú ý. Hầu hết các vấn đề trên internet đều đã được giải đáp trong các bài báo. Nếu mọi người dành đủ thời gian cho việc đó, thì Web Deploy không phải là một công cụ "khó sử dụng".
Lex Li

18

Đây là một trang web hữu ích về việc sử dụng appcmd để xuất / nhập cấu hình trang. http://www.microsoftpro.nl/2011/01/27/exporting-and-importing-sites-and-app-pools-from-iis-7-and-7-5/


Cảm ơn các liên kết. Điều này cũng cho phép tôi sửa đổi ID trang web và bất kỳ thứ gì khác và tôi không phải thiết lập 10 ứng dụng khác nhau và 30 thư mục ảo khác nhau. Tiết kiệm thời gian lớn
2GDave

Vì cách tiếp cận này không quan tâm đến các phụ thuộc cơ bản (mô-đun IIS, v.v.), hãy tự chịu rủi ro khi sử dụng nó.
Lex Li

12

Microsoft Web Deploy v3 có thể xuất và nhập tất cả các tệp của bạn, cài đặt cấu hình, v.v. Nó đưa tất cả vào một kho lưu trữ zip sẵn sàng để nhập trên máy chủ mới. Nó thậm chí có thể nâng cấp lên các phiên bản mới hơn của IIS (v7-v8).

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

Sau khi cài đặt công cụ: Nhấp chuột phải vào máy chủ hoặc trang web của bạn trong Bảng điều khiển Quản lý IIS, chọn 'Triển khai', 'Xuất Ứng dụng ...' và chạy qua quá trình xuất.

Trên máy chủ mới, nhập kho lưu trữ zip đã xuất theo cách tương tự.


nhưng nó chiếm tất cả các tệp. có cách nào để bỏ qua việc lấy các tập tin không? nếu bạn di chuyển một FTP Sever chẳng hạn, nó sẽ cố gắng lấy tất cả các tệp và nén chúng lại.
RayofCommand

2
@RayofCommand - Khi chọn các tùy chọn triển khai, bạn có thể xóa danh sách "Nội dung" - khi đó gói không bao gồm tất cả các tệp.
Zhaph - Ben Duguid

1
Nhưng chỉ khi triển khai từng trang một .... không phải cho một lần di chuyển toàn bộ máy chủ.
Ethan Allen

1
Sau khi cài đặt MS Web Deploy trên máy chủ đích (IIS8), IIS Management Console không chứa bất kỳ tùy chọn Web Deploy nào.
brianary

1
Tôi cũng không có menu "Triển khai" sau khi cài đặt gói.
Devil's Advocate,

3

sử dụng appcmd để xuất một hoặc tất cả các trang web sau đó nhập lại vào máy chủ mới. Nó có thể là iis7.0 hoặc 7.5 Khi bạn xuất ra bằng appcmd, mật khẩu sẽ được giải mã, sau đó nhập lại và chúng sẽ được mã hóa lại.


3

Tôi không thể bình luận lên chủ đề do thiếu đại diện. Một người bình luận khác cho biết họ không thể di chuyển từ phiên bản thấp hơn sang phiên bản IIS cao hơn. Điều này đúng nếu bạn không hợp nhất một số tệp, nhưng nếu bạn làm thì có thể vì tôi vừa di chuyển trang web IIS 7.5 của mình sang IIS 8.0 bằng cách sử dụng câu trả lời được đăng bởi nhai.

Khi quá trình xuất được tạo (II7.5), có hai tệp khóa (management.config và applicationHost.config) có tham chiếu đến tài nguyên trên máy chủ IIS7.5. Ví dụ: một DLL sẽ được tham chiếu với khóa công khai và phiên bản cụ thể cho 7.5. Những điều này KHÔNG giống nhau trên máy chủ IIS8. Cấu hình tính năng cũng có thể khác nhau (Tôi đảm bảo rằng cấu hình của tôi giống hệt nhau). Có một số tính năng mới trong 8 sẽ không bao giờ tồn tại trong 7.5.

Nếu bạn đủ can đảm để hợp nhất hai tệp - nó sẽ hoạt động. Tôi đã phải gỡ cài đặt IIS một lần vì tôi đã làm hỏng nó, nhưng lại có lần thứ hai.

Tôi đã sử dụng một công cụ hợp nhất (Beyond Compare) và nếu không có thứ gì đó tương đương thì nó sẽ là một PITA khổng lồ - nhưng khá dễ dàng với một công cụ khác biệt tốt (năm phút).

Để thực hiện hợp nhất, các tệp 8.0 cần phải khác với các tệp 7.5 đã xuất TRƯỚC KHI nhập. Đối với hầu hết các phần, các tệp 8.0 cần ghi đè nội dung cụ thể của máy chủ trong các tệp 7.5 đã xuất, trong khi vẫn để lại nội dung cụ thể của nhóm ứng dụng / trang web.

Tôi thấy rằng management.config gần như giống hệt nhau, không có thông tin phiên bản của nhiều mục nhập. Điều này là dễ dàng.

ApplicationHost.config có nhiều điểm khác biệt hơn. Một số mục nhập được sắp xếp khác nhau, nhưng nếu không thì giống hệt nhau, vì vậy bạn sẽ phải chọn từng điểm khác biệt và tìm ra nó.

Tôi đặt 7,5 tệp xuất của mình trong thư mục System32 \ inetsrv \ config \ Export trước khi hợp nhất.

Tôi đã hợp nhất TỪ thư mục System32 \ inetsrv \ config vào thư mục System32 \ inetsrv \ config \ Export cho cả hai tệp mà tôi đã đề cập ở trên. Tôi đã đẩy qua mọi thứ trong tệp FROM ngoại trừ các thẻ / phần tử cụ thể của trang web (ví dụ: applicationPools, customMetadata, các trang web, xác thực). Lưu ý đặc biệt, cũng có nhiều khối thẻ "vị trí" cụ thể của trang web mà tôi phải giữ lại, nhưng máy chủ mới có khối thẻ "vị trí" của riêng nó với các giá trị mặc định cụ thể của máy chủ phải được giữ lại.

Cuối cùng, hãy lưu ý rằng nếu bạn sử dụng tài khoản dịch vụ, các mật khẩu được lưu trong bộ nhớ cache này là rác và sẽ phải được nhập lại cho nhóm ứng dụng của bạn. Không có trang web nào của tôi hoạt động ban đầu, nhưng tất cả những gì được yêu cầu là nhập lại mật khẩu cho tất cả các nhóm ứng dụng của tôi và tôi đã thiết lập và chạy.

Nếu ai đó có thể bình luận đề cập đến bài đăng này - nó có thể sẽ giúp ích cho những người khác như tôi, người có nhiều trang web trên một máy chủ với cấu hình phức tạp.

Trân trọng,

Stuart


Tôi thực sự đã sử dụng câu trả lời của Stuart cho một lần di chuyển hợp nhất, tôi vẫn không thích MS Web Deploy.
nhai

1

Trong trường hợp của tôi, các tệp đã được sao chép, tôi thấy cách dễ nhất là làm theo các bước trong hướng dẫn này: https://www.ryadel.com/en/exporting-importing-app-pools-and-websites-configuration-between -multiple-iis-instance /

Tôi đã xuất AppPools / Trang web, sao chép các tệp xml vào máy chủ đích và Nhập AppPools rồi Trang web. Làm việc rất tốt. Đây cũng là một lựa chọn tuyệt vời khác cho câu hỏi này.


điều này chỉ cho tôi lỗi khi nói rằng không thể ghi đè nhóm ứng dụng mặc định và trang web mặc định ... không có bueno.
devlin carnate

Hãy thử đổi tên mặc định thành một cái gì đó khác? và xem liệu chúng có được tạo với quy trình được giải thích ở trên không?
Ralph

Điều này làm việc cho tôi từ IIS7.5 (2008) đến IIS10 (2019). Appcmd ban đầu đã cho tôi lỗi trên 'Trang web mặc định' đã tồn tại. Đổi tên không hoạt động, vì vậy tôi đã xóa trang web mặc định. Quá trình nhập sau đó chạy mà không có lỗi.
MTAdmin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.