Ok vì vậy tôi đã hiểu được điều này - Tôi không đăng bài này dưới dạng chỉnh sửa cho câu hỏi, nếu không may là mặc dù điều này dường như đang đi đúng hướng, có thể có một cách tốt hơn so với những gì tôi đang làm . Hình tôi sẽ để dân chủ quyết định!
Sử dụng liên kết này, tôi có thể tìm ra định dạng của tệp XML nên được sử dụng với công setParamFile
tắc cho msdeploy. Trước đây, tôi cũng đã tìm ra định dạng cho XML kê khai bằng cách sử dụng GUI được nhúng trong IIS sau khi cài đặt Công cụ triển khai Web.
Vì vậy, được cung cấp một trang web có tên 'SiteA', với hai mục ràng buộc trong tệp applicationhost.config như sau:
<bindings>
<binding protocol="http" bindingInformation="*:80:" />
<binding protocol="https" bindingInformation="*:443:" />
</bindings>
(Có nghĩa là, cụ thể - bất kỳ địa chỉ IP nào trên cổng 80 và bất kỳ địa chỉ IP nào trên cổng 443)
Chứng chỉ thực tế đang được sử dụng không được lưu trữ trong apphost.Config, mà thay vào đó là trong cấu hình cho http.sys (theo bài viết này ). Khi msdeploy chuẩn bị một gói cho trang web, nó sẽ nhúng thông tin đó - có thể không phải là một phước lành như tôi đã đề cập ở cuối.
Bước đầu tiên là khai báo một tệp xml tham số mà chúng ta sẽ sử dụng để tham số hóa một gói duy nhất cho các máy chủ trực tiếp đích:
<parameters>
<!-- declare parameter for Http Binding -->
<parameter name="SiteA-http" description="SiteA Http Binding">
<parameterEntry kind="DestinationBinding" scope="SiteA" match=":80:" />
</parameter>
<!-- declare parameter for Https Binding -->
<parameter name="SiteA-https" description="SiteA Https Binding">
<parameterEntry kind="DestinationBinding" scope="SiteA" match=":443:" />
</parameter>
</parameters>
Lưu ý các giá trị thuộc tính 'match =' trên hai mục nhập tham số bên trong. Điều này đảm bảo rằng các ràng buộc chính xác được thay thế. Đây là một Regex (như được mô tả trong bài viết về kỹ thuật này ) để chọn các giá trị ràng buộc hiện có sẽ được thay đổi với giá trị tham số sẽ được truyền trong giây lát.
Chúng tôi lưu điều này như declareparameters.xml
.
Với vị trí này, giờ đây chúng ta có thể tạo gói tham số, từ hộp dàn của chúng ta, từ đó chúng ta có thể triển khai, sử dụng dòng lệnh này (đây là 'hình ảnh' toàn bộ IIS trong đó SiteA của chúng ta hiện diện):
msdeploy -verb:sync
-source:WebServer,computerName=localhost
-dest:package="parameterised.zip"
-declareParamFile:declareparameters.xml
Nếu trang web nằm trên một máy chủ web khác, hãy thay thế 'localhost' bằng tên của máy chủ web đó. Dịch vụ Đại lý Triển khai Web phải được chạy trên máy mục tiêu để hoạt động này.
Bây giờ, chúng tôi khai báo một tệp xml tham số thực sự sẽ cung cấp các giá trị tham số để triển khai cho máy chủ trực tiếp:
<parameters>
<setParameter name="SiteA-http" value="[fixedIPAddress]:80:"/>
<setParameter name="SiteA-https" value="[fixedIPAddress]:443:"/>
</parameters>
Và chúng tôi lưu nó như là
[targetServerName]parameters.xml
(trong trường hợp của tôi, tôi có hai máy chủ đích, vì vậy mỗi máy chủ có các tham số xml riêng với một tên tệp khác nhau và các IP hơi khác nhau trong mỗi máy chủ).
Cuối cùng, chúng ta có thể thực hiện triển khai tham số hóa cho (các) máy chủ đích bằng dòng lệnh này:
msdeploy -verb:sync
-source:package="parameterised.zip"
-dest:WebServer,computerName="[targetServerName]"
-setParamFile=[targetServerName]parameters.xml
Vì vậy, bây giờ chúng tôi có thể thay đổi IP của Liên kết http hoặc Https và, nếu bản gốc đủ khác nhau, chúng tôi có thể tham số hóa bất kỳ số lượng ràng buộc riêng lẻ nào có thể được yêu cầu cho trang web đó.
Điều này có một nhược điểm cho đến nay - vì vậy, bất kỳ câu trả lời thay thế nào cũng được đánh giá cao - cấu hình SSL được sao chép từ máy nguồn vào gói - có nghĩa là để cấu hình SSL trên trang web trực tiếp chính xác khi triển khai, cả máy dàn và (các) máy chủ trực tiếp phải sử dụng chính xác các chứng chỉ SSL.
Điều tuyệt vời là nếu hộp dàn có thể sử dụng chứng chỉ tự ký hoặc nội bộ để kiểm tra độ tỉnh táo và sau đó chứng nhận SSL thực được áp dụng khi triển khai thực tế - một lần nữa, được tham số hóa từ các tệp XML.