IIS7 - Công cụ triển khai web - SetParam / SetParamFile để đặt các ràng buộc http và https + Chứng chỉ


8

chúng tôi hiện đang sử dụng Công cụ triển khai web MS để đồng bộ hóa một trang web trực tiếp và một số Dịch vụ web từ một hộp dàn đến hai máy chủ trực tiếp.

Hộp dàn lưu trữ trang web trên bất kỳ IP nào trên cổng 17000, trong khi hai máy chủ trực tiếp được cân bằng tải và có một IP khác nhau cho mỗi IP.

Hiện tại, tôi tạo hai gói riêng biệt để triển khai - một gói cho mỗi máy - sử dụng thao tác đồng bộ hóa và chỉ định tham số DestinationBinding như sau:

msdeploy -verb:sync 
  -source:WebServer,computerName=localhost
  -dest:package="machinename.zip"
  -setParam:type="DestinationBinding",scope="SiteName",value="ip_address:port:".

(Chia thành nhiều dòng để dễ đọc hơn!)

Tôi chạy nó hai lần, với một tên tệp và địa chỉ IP khác nhau cho mỗi hai máy. Khi nói đến triển khai, tôi chỉ cần thực hiện đồng bộ hóa từ mỗi gói đến trang web trực tiếp tương ứng của nó.

Tôi biết, tôi biết - Tôi sẽ có thể làm điều đó bằng cách tạo một gói được tham số hóa và sau đó có lẽ sử dụng công tắc SetParamFile cho mỗi hai Máy chủ - tin tôi muốn, nhưng tài liệu về việc này thực sự không phải là tồn tại

Bây giờ tôi cần cấu hình và triển khai cả ràng buộc HTTP HTTPS cho trang web này; bao gồm cả chứng chỉ ssl sẽ được sử dụng.

Tôi đã thêm một ràng buộc SSL cho trang web trên hộp dàn - sử dụng chứng chỉ phát triển (sẽ cần phải thay thế - hoặc hộp dàn có nên sử dụng chứng chỉ trực tiếp không?), Và bây giờ dòng lệnh trên có hiệu lực thay thế IP mục tiêu trên cả mục nhập http và https.

Dường như tôi không thể chỉ định nhiều ràng buộc cộng với thông tin chứng chỉ trong giá trị DestinationBinding trong -setParam ở trên, vì vậy có ai biết tôi sẽ thực hiện việc này như thế nào không?

Bất kỳ trợ giúp đánh giá rất cao.


1
có lẽ bạn nên thêm msdeply làm thẻ. cũng có thể nhảy qua stackoverflow.com vì có một số msdeploy
MikeJ

bây giờ có một điểm tốt :)
Andras Zoltan

Vâng - tôi đã nghĩ đến StackOverflow trước; hình dung rằng các opd cấp thấp hơn của msdeploy có nhiều khả năng sẽ được sử dụng cho hỗ trợ / quản trị viên công nghệ hơn là các nhà phát triển. Nếu tôi không nhận được bất cứ nơi nào ở đây thì có lẽ tôi sẽ bỏ câu hỏi này và gửi lên đó thay vì như bạn đề xuất. Luôn có thể lập luận rằng tôi là nhà phát triển chứ không phải nhà phân tích và nếu tôi cần biết thì các nhà phát triển khác cũng có thể làm như vậy!
Andras Zoltan

Câu trả lời:


7

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 setParamFiletắ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.


Điều này dường như là một hạn chế của công cụ msdeploy - và giải pháp duy nhất là viết một tập lệnh iis bổ sung mà msdeploy có thể thực thi. Kịch bản này sẽ kết thúc các ràng buộc bổ sung, với các công cụ chứng nhận SSL. Đây là một sự xấu hổ đáng kinh ngạc.
Andras Zoltan

0

Bạn có thể thay thế số cổng bằng cách thêm công tắc dòng lệnh -replace

msdeploy -verb: sync -source: WebServer, computerName = localhost -dest: pack = "machinename.zip" -replace: objectName = bind, targetAttributionName = bindIn information, match =: 443 :, thay =: 445:

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.