Попытка развернуть у себя полностью веб сайт
Решил я попробовать, что нужно сделать чтобы завести себе веб сайт с форумом. Статья состоит из трех частей – как поднять веб сервер на Windows Server 2008 web edition, как поставить SQL, и как поставить приложение dotnetnuke.
Я сразу скажу – я не сисадмин, я в прошлом разработчик, причем не веб разработчик. Так что некоторые очевидные для сисадминов вещи могут для меня оказаться неочевидными. Вывод – если что то всем остальным очевидно, просьба ногами не пинать, карму не опускать, Ктулху не вспоминать.
Для начала решил я тут себе поставить Windows Web Server – посмотреть что же за зверь такой. Раз уж все про него говорят. Скачал его с MSDN. Вообще то можно скачать trial версию по адресу http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=b1cb6d54-7268-4791-9c5d-cdb21516bf5a , там написано что можно пробовать веб сервер в течении 60 дней, продлевая до 240.
Поделюсь несколькими неочевидными для меня ссылками.
Вопросы лицензирования
http://social.technet.microsoft.com/forums/ru-RU/ws2008ru/thread/a92bb4fd-f8c9-4295-a299-e9394322d67e/
http://technet.microsoft.com/en-us/windowsserver/bb430828.aspx
http://www.microsoft.com/windowsserver2008/en/us/editions-overview.aspx
http://www.microsoft.com/Rus/Licensing/Products/Server/WindowsServer2008/Default.mspx#Section3
Сравнение разных редакций.
http://www.microsoft.com/rus/windows-server/default.aspx
https://msdb.ru/Downloads/WindowsServer2008/DatasheetWindowsServer2008v3.pdf
https://msdb.ru/Downloads/WindowsServer2008/Datasheet_Windows_Server_2008.pdf
Итак, я поставил со своего msdn русскую версию сервера.
Установка особых чудес или особенностей не имела. Единственное – так как это сервер, то попросили придумать какой нибудь сложный пароль, я почему то придумал P@ssw0rd. J
Первое что бросилось в глаза – это немного другой welcome screen
.
Сравните с welcome screen обычного сервера
.
Хм, появилось много новых интересных ссылок – разделы 4 и5 .
Это ссылки на сайты www.iis.net , www.asp.net, http://www.iis.net/downloads, http://www.asp.net/downloads/, а также на странную страннику http://technet.microsoft.com/en-us/library/cc753433.aspx - документация по web server role .
И почему то куда то пропал firewal? Без Firewall жить нельзя, однозначно. Ну ладно, найти в панели управления firewall (firewall по русски – правильно, брэндмауэр) не сложно. Порадовало, что файрволл включен по умолчанию блокирует почти все. Включу ка я «обнаружение сети» - network discovery.
Хм, комьютер теперь видится но не пингуется. Причем забавно что host система из под виртуалки пингуется, а наоборот ну хоть тресни! В общем в итоге включил три галочки –
. , стал пинговаться – считай что виден из под сети.
Ну что, пора ставить ASP.NET. Добавляем роли – в списке ролей только один IIS. Выбираю, просит добавить какие то компоненты. Ну, не жалко .
.
Ставим Role Services (службы ролей). Поставим пока все для разработки и управления, а там посмотрим. Все ставится, установочный диск в этом процессе уже давно (начиная с windows vista/2008 ) не требуется.
Перегрузил винду. Что интересно – грузится за 1 минуту 40 секунд, и это на виртуалке Virtual PC (не hyper-v), правда с hardware assisted virtualization. Логин в систему – еще 10 секунд (пишет «подготовка рабочего стола»). После установки компонентов система занимает 271 мегабайт памяти.
Запустил бразузер, перешел на http://localhost. Стало занимать 300 метров. Да и не жалко.
Что бы нам еще поставить? Поставлю ка я visual studio web developer express edition. Будет такая мини виртуалка со всем необходимым для работы над веб сайтами.
К сожалению, под рукой русской Visual Studio express не оказалось , взял английскую, зато она сразу с Services Packом 1. Русская тоже бывает с сервис паком http://www.microsoft.com/express/ru/ .
Студия предлагает поставить сразу silverlight runtime и sql server express 2008.
Поставим, нам не жалко. Кстати бывает еще версия SQL server web edition. http://msdn.microsoft.com/en-us/library/ms143506.aspx#EE32 http://msdn.microsoft.com/en-us/library/ms144275.aspx .. А вот тут http://msdn.microsoft.com/en-us/library/cc645993.aspx как раз есть сравнение редакций sql server. Видно что sql server web поддерживает много интересных вещей, хотя, конечно, в него не входят такие вещи как analisys services. Но есть reporting services и это не может не радовать.
Итак, я решил поставит sql server with advanced services http://www.microsoft.com/sqlserver/2008/ru/ru/express.aspx
Advanced потому что там есть sql management studio и базовый reporting services.
Вот ведь!
Надо было power shell поставить сначала, ставим powershell – add features/добаивть компоненты. Ставим powershell и заодно «возможности рабочего стола»(Desktop experience) - ну чтоб покрасившее выглядело (http://blogs.msdn.com/mbakirov/archive/2009/01/29/9383381.aspx ).
Ну ладно, пробуем еще раз. Опс, зря поставили SQL Server express вместе со студией. Как то странно ведут себя инструменты, ну ладно, сносим sql express, ставим sql with advanced services. Когда ставим SQL Express Edition, лучше всегда иметь хотя бы один instance под именем по умолчанию, так как некоторые инструменты (например Azure SDK) не позволяют выбирать произвольный сервер.
Вообще говоря, в обычной жизни, все будет на порядок проще. Ну кому придет в голову разрабатывать приложения на том же сервере? Сразу ставим powershell, ставим ASP.NET , ставим sql express with advanced services, и собственно все! Так что все даже проще чем я написал J
Давайте поставим какое нибудь веб приложение. Конечно писать с нуля веб сайт неохота, долго, и лень. Давайте посмотрим, что же можно поставить?
Сушествует множество различных starter kits. Их можно найти на следующий страничках
http://msdn.microsoft.com/ru-ru/asp.net/aa336557.aspx
http://www.asp.net/community/projects/
http://www.gotdotnet.ru/Downloads/AspNetStarterKits/default.aspx
Можно было бы взять сайт попроще, но я решил выбрать сайт помощнее – получилось несколько больше шагов.
Я выбрал DotNetNuke (http://www.dotnetnuke.com/ ). У него есть стабильная версия – 4 и новая версия 5. Плюс есть куча модулей , таких как интеграция active ditrectory, chat, и куча всего. Ну у меня машина тестовая, так что поставим все последнее. С исходниками возиться пока не буду, я же не веб разработчик? Ходим сюда http://www.dotnetnuke.com/Development/Downloads/tabid/125/Default.aspx , качаем инсталлер.
DotNetNuke это достаточно мощный проект, поэтому вдумчиво читаем доку. Можно было поставить дополнения в Visual Studio (Starter Kit), и тогда можно было бы прямо из студии создавать новые порталы, а также дополнения. Можно было поставить install – это версия сайта для запуска, где нет ничего лишнего. Я лучше попробую поставить Source Code. Ставим исходники в c:\dotnetnuke.
Solution открывается в Visual Studio Web Express только наполовину, так как Web Express не поддерживает Solution items. Да ну и ладно. Создаем Virtual Directory DotNetNuke, указывающую на C:\DotNetNuke\Website . Что то не так.. .хм. А! Надо же дать права группе пользователей IIS на каталог .
Дали, теперь надо настроить дополнительные параметры, как написано в документаци
Черт, это же картинка для IIS6! Как же нам быть? Хм. Ну начнем с того, что конвертнем virtual directory в приложение. Теперь можно указать defaultAppPool, и точно убедиться что у нас используется .net 2.0.
Читаем доку дальше – надо переименовать release.config или development.config в web.config. В реальной жизни будем использовать release, но я тестирую, так что берем development.config.
Открываем web.config, о чудо! Там все уже настроено под SQL Express (в sqlexpress есть возможность под названием User Instance ). Если же у нас используется более взрослый SQl Server, начиная с SQl Server Web Edition, надо ставить базу на него и использовать строчку подключения номер два.
1: <connectionStrings>
2:
3: <!-- Connection String for SQL Server 2005 Express -->
4:
5: <add name="SiteSqlServer" connectionString="Data Source=.\SQLExpress;Integrated Security=True;;User Instance=True;AttachDBFilename=|DataDirectory|Database.mdf;" providerName="System.Data.SqlClient" />
6:
7: <!-- Connection String for SQL Server 2000/2005
8:
9: <add name="SiteSqlServer" connectionString="Server=(local);Database=DotNetNuke;uid=;pwd=;" providerName="System.Data.SqlClient" />
10:
11: -->
12:
13: </connectionStrings>.
Отлично, осталось запустить веб сайт и посмотреть что же он нам выдаст.
NullReferenceException.
Хм. Лезем в интернет. Говорят http://www.microsofttranslator.com/bv.aspx?mkt=ru-ru&Ref=WLButton&br=ro&a=http://blog.schelian.de/2008/11/11/DotNetNukeCambrianInstallationAufWindowsXP.aspx что надо поставить ASP.Net AJAX extensions http://www.microsoft.com/downloads/details.aspx?FamilyID=ca9d90fa-e8c9-42e3-aa19-08e2c027f5d6&displaylang=en .
Ставим, перезапускаем IIS командой IISRESET (вообще то можно было и просто поменять один байт в web.config, приложение само бы рестартовало.)
Пробуем еще раз. УРАА! Заработало!
Я не спец в dotnetnuke, но я всегда выбираю Custom – я при установке сразу вижу все что делается.
Проверяем разрешения на каталог, успешно.
Выбираем базу.
pic22.
База настраивается.
PIC23.
Настраиваем админа сайта .
Выбираем модули.
Я выбрал несколько. Ставим шаблоны .
Тут же можно добавить авторизацию по Active Directory .
Следующий шаг – создние первого портала.
. Тут же мы создаем админа Портала – у каждого портала есть свой админ. А host –пользователь созданный ранее это СУПЕРАДМИН, который может создавать другие порталы.
Попробуем поставить русский язык. Ставим language pack от версии 4.8
Убеждаемся что система будет отличать русский язык.
Наверху появляется флажочек, если система сама не включает русский, можно на него просто тыкнуть.
В DotNetNuke можно редактировать страницы, на каждую добавлять модули. Давайте на наш основной сайт добавим форум?
Заходим админом (который админ сайта), нажимаем сверху control panel, добавляем на сайт модуль.
Результат :
Теперь последний штрих. Все поставил, все хорошо смотрится изнутри виртуалки. Открываю с моего рабочего компьютера http://winservervpc/dotnetnuke. Что за дела? Перебрасывают на http://localhost/dotnetnuke, а на локальной машине никакого Nuke не стоит!
Что же делать? Посовещались с Гайдаром, нашел решение. Открываем свойства конкретного портала,
Выбираем advanced settings/portal aliases. Так там прописанно localhost! Добавляем правильный алиаз (в моем случае http://winservervpc/dotnetnuke ) и volia! Все заработало.
Итоги – за конечное и разумное время можно поставить и развернуть без особых усилий веб сервер. Если же хочется что то , например шаблон для начала разработки своего сайта , нам очень подойдет DotNetNuke. Более того в нем есть очень и очень неплохой форум и много готовых модулей, из которых можно быстро создать свой сайт на русском языке.
Ссылки
www.dotnetnuke.com
www.dotnetnukeru.com сайт с руководствами по установке dotnetnuke. Лучше всего автору удаются картинки во введении http://www.dotnetnukeru.com/Rukovodstva/Ustanovka_DNN_2008.aspx
http://social.technet.microsoft.com/forums/ru-RU/ws2008ru/thread/a92bb4fd-f8c9-4295-a299-e9394322d67e/
http://technet.microsoft.com/en-us/windowsserver/bb430828.aspx
http://www.microsoft.com/windowsserver2008/en/us/editions-overview.aspx
http://www.microsoft.com/Rus/Licensing/Products/Server/WindowsServer2008/Default.mspx#Section3
Скриншоты в оригинальном разрешении
P.S. сравнение фич я все таки нашел
http://www.microsoft.com/rus/windows-server/default.aspx
https://msdb.ru/Downloads/WindowsServer2008/DatasheetWindowsServer2008v3.pdf
https://msdb.ru/Downloads/WindowsServer2008/Datasheet_Windows_Server_2008.pdf