2009-08-05 45 views
6

Chúng tôi đang thiết lập di chuyển đầu tiên của mình sang Sitecore. Chúng tôi có nhiều trang web đa ngôn ngữ với nội dung được lưu trữ trong các trường cơ sở dữ liệu với LCID. Điều khiển người dùng thực hiện cuộc gọi cơ sở dữ liệu để hiển thị nội dung ngôn ngữ khác nhau. Chúng tôi đang di chuyển nội dung của mình sang các mục Sitecore và muốn tận dụng API Sitecore để lấy nội dung từ Điều khiển người dùng của chúng tôi để tạo cấu trúc dữ liệu.Thực tiễn tốt nhất về Sitecore

Tôi muốn biết cách cấu trúc các dự án Visual Studio để phát triển Sitecore để sử dụng các giải pháp VS hiện có. Chúng tôi có lặp lại Sitecore .dll và cấu hình cho tất cả các giải pháp hoặc chia sẻ một cài đặt Sitecore không?

Ngoài ra, làm thế nào để bạn cài đặt các tệp được yêu cầu trong sản xuất để hỗ trợ nhiều trang web tồn tại dưới dạng các trang web riêng lẻ trong IIS? Chúng tôi có phải sao chép tất cả các tệp .dll và cấu hình cần thiết trong một thư mục riêng biệt /sitecore cho mỗi trang web hoặc chúng tôi chia sẻ một thư mục với một thư mục ảo trong mỗi trang web trỏ đến cùng một thư mục vật lý /sitecore?

Trả lời

4

Nói chung, chúng tôi khuyên bạn nên chạy mọi thứ dưới 1 trang web IIS. Điều này tiết kiệm rất nhiều vấn đề cấu hình và triển khai. Bên cạnh đó, nó không phải là hiệu suất necesarry khôn ngoan để sử dụng nhiều trang web.

Cài đặt các dự án có thể được thực hiện khá thẳng về phía trước. Đơn giản chỉ cần chắc chắn rằng các mục tiêu xây dựng được thiết lập hướng tới/Website/bin-thư mục cài đặt Sitecore. Nếu có, bạn có thể sử dụng lại bất cứ thứ gì. Bạn có thể liên kết Sitecore.Kernel như một mục giải pháp trong Visual Studio.

Nói chung tôi nghĩ rằng bạn nên tham khảo ý kiến ​​văn phòng Sitecore địa phương của bạn để suy nghĩ với bạn thiết lập giải pháp này. Vì chúng tôi đã có kinh nghiệm với các loại di chuyển này, chúng tôi rất vui được cung cấp cho bạn lời khuyên phù hợp và thảo luận tất cả các tùy chọn.

6

Theo kinh nghiệm của tôi, "tất cả mọi thứ dưới 1 IIS Website" cho nhiều trang web với Sitecore chỉ hoạt động khi bạn không có những điều sau đây:

  1. chứng chỉ SSL khác nhau cho mỗi trang web: IIS sẽ chỉ cho phép một chứng chỉ SSL cho mỗi địa chỉ IP/cổng kết hợp và chỉ một cho mỗi trang web trong IIS. Chúng tôi có 4 chứng chỉ SSL thẻ hoang dã khác nhau (cho 4 tên miền cơ sở khác nhau) và vì vậy chúng tôi phải có ít nhất 4 trang web IIS riêng biệt.
  2. Thư mục ảo khác nhau trên mỗi trang web: Nếu bạn muốn một thư mục ảo có sẵn trên một trang web nhưng không phải là trang web khác, bạn phải có các trang web khác nhau trong IIS.

Nếu bạn có một trong các yêu cầu này, chúng phải là các trang web khác nhau trong IIS (hoặc các yêu cầu phải được xử lý bên ngoài IIS). Đối với cách bạn thiết lập điều này, một điều cần lưu ý là chúng tôi được thông báo rằng có nhiều lượt cài đặt Sitecore trên máy chủ yêu cầu phải có nhiều giấy phép khác nhau/nhiều lần.

Vì vậy, đối với chúng tôi, chúng tôi phải chia sẻ cùng một cài đặt với nhiều trang web trong IIS vì chúng tôi có cả hai yêu cầu này (và chỉ một giấy phép). Chúng tôi đã có tất cả các trang web chia sẻ cùng một cài đặt Sitecore (tất cả các tệp được chia sẻ, bao gồm tệp DLL và web.config).Lưng bốc thăm này là:

  • rằng bất kỳ cấu hình hoặc DLL thay đổi gây ra khởi động lại cho tất cả các trang web
  • rằng mỗi trang web có miền ứng dụng riêng của nó (vì vậy nó nhân với yêu cầu bộ nhớ, và trong bộ nhớ cache isn' t được chia sẻ)
  • miền ứng dụng đó về cơ bản là một quy trình riêng biệt, vì vậy bất kỳ hoạt động bảo trì hoặc lập lịch nào (tức là xóa bộ nhớ cache phương tiện) đều chạy trên mọi trang web và truy cập cùng một tệp. Điều này có thể gây ra các vấn đề về hiệu suất và các vấn đề tương tranh. Chúng tôi đã phải khởi động một số quy trình này từ các tác vụ được lập lịch bên ngoài và chỉ trên trang web chỉnh sửa của chúng tôi để ngăn xung đột.
  • vì chúng tôi chỉ có một tệp cấu hình, chúng tôi không thể tắt tính năng chỉnh sửa cho các trang web phân phối nội dung. Điều này có nghĩa là chúng tôi phải sử dụng các tính năng của IIS để ngăn việc chỉnh sửa trên các trang web phân phối nội dung.
  • chúng tôi đã phải xử lý nó như cài đặt nhiều máy chủ của sitecore, có nghĩa là chúng tôi đã phải thiết lập một stager để xóa bộ nhớ cache trên xuất bản. chúng tôi đã sử dụng trình tạo sẵn trong Thư viện nguồn được chia sẻ.
2
  • Bạn nên bắt đầu với một giải pháp ứng dụng web trống hoàn toàn không có/sitecore. Nếu bạn cần thêm một tệp hoặc sửa đổi tệp sitcore, hãy xây dựng cấu trúc thư mục trong dự án của bạn để triển khai, nó sẽ ghi đè lên tệp sitecore hiện có.
  • Tất cả thay đổi cấu hình Sitecore phải nằm trong giải pháp, trong thư mục/App_Confif/Include/z_ [Client].
  • Tất cả các dll của bạn cho Sitecore nên đến từ chính thức sitecore NuGet feed nơi bạn chỉ định phiên bản sitecore, không sử dụng "mới nhất" trong NuGet.
  • Web.config của bạn phải nằm ngoài hộp Sitecore web.config và sử dụng các biến đổi để biến web.config thành nội dung cần thiết trên bản dựng.
  • Bạn nên phát triển bằng số Helix guidelines cho cấu trúc dự án của mình.
  • Tất cả các thay đổi của Mục Sitecore phải được theo dõi trong phần mềm tuần tự hóa của bạn. Dù là TDS hoặc Unicorn.

Kiểm tra giấy phép của tôi là nếu tôi có thể tạo trang web bằng công cụ Sim và triển khai mã và mục dự án, trang web của tôi có hoạt động không? Trong một số trường hợp, chúng tôi lấy nội dung giai đoạn sản xuất/giai đoạn từ Sitecore using PowerShell, sao chép gói vào máy chủ Nuget và triển khai nó để phát triển/CI với PowerShell.

Để tạo trang web, tôi đã sử dụng công cụ Sim với dòng lệnh hoặc Powershell script này.

Bạn không đơn độc trong sự thất vọng của mình. Tôi đã gặp một số khách hàng có trang web Sitecore entier trong giải pháp của họ. Việc triển khai và nâng cấp luôn rất khó khăn. Nhưng nếu bạn thiết kế một giải pháp không bao gồm các tệp Sitecore thực tế và có thể được triển khai tới một trang trống thông qua CI. Sau đó, bạn sẽ có hình dạng tuyệt vời.

1

Đối với câu hỏi số 2:

Chúng tôi sử dụng Helix guidelines/Habitat, Nó có vẻ là nguồn cho thực hành tốt nhất Sitecore. Tất cả việc đào tạo sitecore nói để tạo ra một dự án bên ngoài Sitecore và chỉ nhập khẩu những thứ bạn cần. Đối với cấu hình, tôi khuyên bạn nên đọc nhanh this

Sự thật về SSL và hồ bơi ứng dụng có thể trở thành vấn đề.Triển khai đến trang web của một khách hàng sẽ làm giảm tất cả, tùy thuộc vào thiết lập.

Nếu bạn sử dụng nhiều trường hợp, bạn sẽ cần phải xem xét cấp phép sitecore của mình.

0

Đối với sự hiểu biết của tôi, tôi có thể thấy rằng bạn có hai mối quan tâm ở đây:

1. Làm thế nào để cấu trúc dự án Sitecore

Tôi là một nhà phát triển Sitecore trong hơn 3 năm qua, dựa trên của tôi kinh nghiệm, cách tốt nhất là tạo một dự án Sitecore đơn là lớp cao nhất của giải pháp Bạn không cần phải cài đặt dll sitecore cho tất cả dự án, chỉ cần giữ mã cũ của bạn như nó đã và biến nó thành mã cơ sở. Ví dụ, tôi vừa hoàn thành một dự án mà khách hàng muốn chuyển sang sử dụng Sitecore, giải pháp đã ở đó, nó có 4 dự án:

  1. ABC.Web ==> lớp cao nhất
  2. ABC.Data ==> làm việc với lớp dữ liệu
  3. ABC.Services => lớp xử lý kinh doanh
  4. ABC.Domain ==> lớp Common

Chúng tôi tạo ra một dự án mới mà cần được cài đặt dlls Sitecore, mà thực sự thay thế ABC.Web (lớp cao nhất) sẽ chứa tất cả mã Sitecore MVC và không thay đổi bất kỳ điều gì đối với mã cũ. Từ thời điểm đó, chúng tôi có thể làm việc với cả hai dữ liệu từ hệ thống cũ (bằng cách tham khảo ABC.Services dlls) và từ Sitecore.

2. Làm cách nào để bạn cài đặt các tệp được yêu cầu trong sản xuất để hỗ trợ nhiều trang web?

Sitecore hỗ trợ nhiều trang bằng cách cấu trúc cây nội dung Sitecore và cấu hình litte. Bạn KHÔNG cần tạo các trang web tách biệt trong IIS, chúng thực sự là một trang web có tên miền khác nhau. Trong tệp cấu hình có tên SiteDefinition.config (hoặc bạn có thể thêm tệp cấu hình của riêng mình), về cơ bản bạn đặt miền với mục bắt đầu Sitecore nhận ra tên miền phù hợp với tên miền trong tập tin cấu hình và sẽ chuyển hướng đến mục bắt đầu tương ứng Ví dụ: Trong hình ảnh, tôi đã tạo 2 trang web (về cơ bản, chúng là 2 nhánh của cây nội dung sitecore) với các mục bắt đầu là (mysite1 và mysite2)

enter image description here

đây là cấu hình của tôi

<sites> 
     <site name="MySite1" patch:before="site[@name='website']" 
      virtualFolder="/" 
      physicalFolder="/" 
      rootPath="/sitecore/content" 
      startItem="/content/MySite1/home" 
      database="web" 
      domain="extranet" 
      allowDebug="true" 
      cacheHtml="true" 
      htmlCacheSize="50MB" 
      enablePreview="true" 
      enableWebEdit="true" 
      enableDebugger="true" 
      disableClientData="false"/> 
     <site name="MySite2" patch:before="site[@name='website']" 
      virtualFolder="/" 
      physicalFolder="/" 
      rootPath="/sitecore/content" 
      startItem="/content/MySite2/home" 
      database="web" 
      domain="extranet" 
      allowDebug="true" 
      cacheHtml="true" 
      htmlCacheSize="50MB" 
      enablePreview="true" 
      enableWebEdit="true" 
      enableDebugger="true" 
      disableClientData="false"/> 
    </sites> 

Bạn có thể tham khảo hướng dẫn này để biết thêm chi tiết

https://briancaos.wordpress.com/2010/03/01/working-with-multiple-sites-in-sitecore/

Các vấn đề liên quan