Orchard CMS - Integracja z Windows Azure 

Udostępnij na: Facebook

Autor: Piotr Zieliński

Opublikowano: 2012-01-18

Wprowadzenie

Orchard jest potężnym systemem CMS, wyróżniającym się elastycznością i rozszerzalnością. Autorzy frameworku pomyśleli również o łatwej integracji z platformą Azure. Wystarczy stworzyć odpowiednią paczkę (wykorzystując narzędzia dostarczone przez autorów Orchard), a następnie umieścić ją w Azure.

Wygenerowanie pakietu

Przede wszystkim należy zaopatrzyć się w Windows Azure Tools for Microsoft Visual Studio 1.3 oraz framework Orchard.

Aby wygenerować paczkę Azure, należy wykonać skrypt ClickToBuildAzurePackage.cmd, który znajduje się w repozytorium kodu. Twórcy Orchard wykorzystują Mercurial (Hg) do przechowywania kodu. Musisz zatem najpierw zaopatrzyć się w stosownego klienta - TortoiseHg. TortoiseHg integruje się z systemem. Po zainstalowaniu przechodzisz do dowolnego folderu i z menu kontekstowego wybierasz TortoiseHg -> Clone. W Source Path musisz podać adres https://hg01.codeplex.com/orchard:

Po ściągnięciu źródeł oprogramowania, możesz wygenerować paczkę za pomocą wspomnianego skryptu ClickToBuildAzurePackage.cmd. Ze względu na błędy w aktualnej wersji, musisz najpierw otworzyć projekt Azure, znajdujący się w src\Orchard.Azure, a następnie ustawić atrybut Copy Local na True dla wszystkich niestandardowych bibliotek, tzn:

  • Microsoft.Web.Infrastructure,
  • System.Web.Helpers,
  • System.Web.Mvc,
  • System.Web.Razor,
  • System.Web.WebPages,
  • System.Web.WebPages.Deployment,
  • System.Web.WebPages.Razor.

W następnych wersjach będzie to już zrobione za nas. Następnie musisz uruchomić wspomniany skrypt (ClickToBuildAzurePackage.cmd). Po wykonaniu skryptu, pakiet zostanie zapisany w artifacts\Azure\AzurePackage.zip.

Rozpakuj AzurePackage.zip, aby wyedytować plik ServiceConfiguration.cscfg, zawierający connection string.

Domyślnie plik zawiera następującą treść:

<?xml version="1.0"?>
<ServiceConfiguration serviceName="OrchardCloudService" osVersion="*"  xmlns="https://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
  <Role name="Orchard.Azure.Web">
    <Instances count="1" />
    <ConfigurationSettings>
      <Setting name="DataConnectionString" value="UseDevelopmentStorage=true" />
    </ConfigurationSettings>
    <Certificates />
  </Role>
</ServiceConfiguration>
Jeśli będziesz chciał umieścić Orchard na prawdziwym koncie Azure (a nie w symulacyjnym, deweropelskim środowisku), musisz zmienić DataConnectionString:
<Setting name="DataConnectionString" value="DefaultEndpointsProtocol=https;AccountName=nazwa_konta;AccountKey=klucz " />

Oczywiście, musisz podać prawidłowe wartości (nazwa konta oraz klucz) do Windows Azure Storage. Wartości można podejrzeć w panelu Azure.

Pozostało Ci umieścić pakiet na serwerze Azure. Zaloguj się więc do panelu administratora. Orchard potrzebuje dostępu zarówno do SQL Azure jak i Windows Azure Storage. Utwórz więc bazę SQL Azure:

Z kolei dane o Azure Storage (klucz i nazwa konta), skopiuj z panelu do pliku konfiguracyjnego (patrz poprzednie kroki). Następnie przejdź do Hosted Services i wybierz New Hosted Service w celu wdrożenia pakietu. Wypełnij formularz, podając m.in. nazwę wdrożenia, lokalizację serwera, ścieżkę źródłową pakietu oraz pliku konfiguracyjnego:

Po wdrożeniu pakietu możesz uruchomić Orchard w celu konfiguracji:

Adres bazy danych poznałeś już w poprzednich krokach, podczas tworzenia SQL Azure (w związku z tym cały connection string możesz skopiować z panelu Azure). Wpisz wymagane dane (nazwa strony, hasła, connection string) i kliknij Finish Setup. Po chwili zostanie wyświetlona stworzona strona Orchard:

Ponowne wdrożenie – kilka uwag

Przed ponownym wdrożeniem należy pamiętać o wyczyszczeniu bazy. SQL Azure wykorzystywana jest do przechowywania treści. Orchard korzysta również z Azure Blob do przechowywania ustawień (które w wersji klasycznej przechowywane są w katalogu ~/App_Data). SQL Azure można edytować standardowo w SQL Server Management Studio. Z kolei do edycji Azure Storage można skorzystać z zewnętrznego narzędzia, które jest dostępne pod adresem https://www.myazurestorage.com:

Wdrażanie dodatkowych modułów

Podobnie jak w wersji klasycznej, istnieje możliwość instalacji dodatkowych modułów. Niestety nie możesz tutaj korzystać z Orchard Gallery. Autorzy Orchard tłumaczą swą decyzję możliwością występowania problemów z replikacją modułów na wszystkich instancjach. Musisz więc stworzyć paczkę z dodatkowymi modułami i ją wdrożyć:

  1. Skopiuj pliki modułu do katalogu src/Orchard.Web/Modules.
  2. Otwórz projekt src/Orchard.Azure/Orchard.Azure.sln w Visual Studio i dodaj wcześniej dodany projekt do solucji (opcja include w menu kontekstowym).
  3. Przejdź do projektu Orchard.Azure.Web i dodaj referencję do wcześniej dodanego projektu (References->Add Reference).

Następnie wystarczy wygenerować paczkę i wdrożyć ją na serwery Azure – tak jak zostało to opisane w poprzedniej sekcji.

W analogiczny sposób można dodawać własne motywy. Wystarczy przekopiować pliki do folderu src/Orchard.Web/Themes , dodać je w Visual Studio, a następnie wdrożyć nową paczkę.

Zakończenie

Autorzy Orchard pomyśleli o wykorzystaniu systemu w środowisku Azure. Dzięki dostarczonym skryptom, wdrożenie odbywa się w większości w sposób automatyczny. W następnej wersji  zostaną poprawione niedogodności, związane z wdrożeniem, a mianowicie ustawienie właściwości Copy Local na True dla wymaganych bibliotek MVC 3.0.

 


     

Piotr Zieliński

Absolwent informatyki o specjalizacji inżynieria oprogramowania Uniwersytetu Zielonogórskiego. Posiada szereg certyfikatów z technologii Microsoft (MCP, MCTS, MCPD). W 2011 roku wyróżniony nagrodą MVP w kategorii Visual C#. Aktualnie pracuje w General Electric pisząc oprogramowanie wykorzystywane w monitorowaniu transformatorów . Platformę .NET zna od wersji 1.1 – wcześniej wykorzystywał głównie MFC oraz C++ Builder. Interesuje się wieloma technologiami m.in. ASP.NET MVC, WPF, PRISM, WCF, WCF Data Services, WWF, Azure, Silverlight, WCF RIA Services, XNA, Entity Framework, nHibernate. Oprócz czystych technologii zajmuje się również wzorcami projektowymi, bezpieczeństwem aplikacji webowych i testowaniem oprogramowania od strony programisty. W wolnych chwilach prowadzi blog o .NET i tzw. patterns & practices.