Как стать автором
Обновить

Настройка удаленной (ftp) публикации вебсайтов в IIS 7 (Windows Server 2008)

Приспичило вчера настроить удаленную публикацию сайта на хостинге под WS08. Дело оказалось не таким тривиальным… Поиск в гугле далеко не с первого раза выдал хоть что-то, кроме рекламы хостерских услуг. В менеджере сайтов ftp-публикация тоже как-то не спешила попадаться на глаза. Хелп загадочно отмалчивался.
Пришлось теребить гугл снова и снова. И в какой-то момент тот сдался. Что же выяснилось?
А выяснилось следующее. Для удаленной публикации для IIS есть аж два ftp сервера. Назовем их «нехороший» и «хороший». Один интегрирован в WS08, но не интегрирован с IIS7 (явно нехороший), другой интегрируется с IIS7, но в поставке его нет — нужно скачивать (он — хороший, он же не виноват, что его в поставку не включили). С нехорошим возиться у меня мозгов не хватает, а вот канал достаточно толстый, чтобы скачать ~2мб хорошего ftp.

Что нам понадобиться?


Естественно, что у нас должен быть установлен IIS 7.0 на нашем Windows Server 2008:
  • Веб-сайт по умолчанию (Default Web Site), создаваемый установщиком IIS 7.0 должен быть.
  • Должен быть установлен Менеджер IIS 7.0 (не знаю как обычно, а у меня по умолчанию стоял).

Нужно скачать и установить собственно сам новый ftp сервер (кстати, его зовут FTP 7.5 for IIS7):

Дальше можно пойти двумя путями — воспользоваться мастером установки или поправить конфигурационные файлы ручками. И у того и у другого есть свои недостатки.

Настройка ftp-публикации с помощью мастера


Тут все просто. Щелкаете на веб-сайт, к которому нужно прикрутить публикацию и видите что в правой панели в разделе конфигурация появилась строчка «Add FTP Publishing...». Тыц. Открывается мастер установки.
В самом простом варианте можно оставить настройки
  • IP: all unassigned
  • порт 21 по умолчанию
  • галочку «start ftp automatically» ставим/оставляем
  • SSL: allow SSL

Щелкаем «Next»
  • Аутентификация: отключаем анонимусов, ставим тип basic
  • Авторизацию выбираем для указанных ролей/групп пользователей: Specified roles or user groups *или* указанных пользователей: specified users
  • Перечисляем группы или пользователей
  • Отмечаем доступ на чтение, запись

Щелкаем Finish. Все готово, можно давать автору пару логин/пароль.
Несколько замечаний:
  • Пользователи и группы, которых вы указываете, должны уже существовать и им должны быть выданы соответствующие разрешения на сайт. Например, если у вас пользователю даны разрешения на сайт по умолчанию (т.е. смотреть, выполнять, листать директорию), то даже если вы в настройках ftp-публикации отметите галочку write, никакого write на самом деле не будет, а будет ошибка 505: access denied. Следите за этим.
  • Если вы ошиблись/хотите изменить настройки, то логичным выглядит запустить мастер еще раз. Не тут то было. Мастер начнет создавать новые параметры публикации. Через это у вас не получится изменить настройки уже заданной публикации, а также не получится настроить публикацию на тот же самый порт повторно (в нашем примере порт 21). Обход — удалить биндинг ftp протокола на 21 порт, но при этом в файле конфигурации остаются хвосты, которые придется удалять ручками.

Настройка добавлением нужных строк в файлы конфигурации


Будем править файл applicationHost.config — естественно для этого нужно быть или казаться системе локальным администратором. Идем в %SystemRoot%\System32\inetsrv\config и открываем applicationHost.config.
  1. Добавляем биндинг для протокола ftp
    <site name="Default Web Site" id="1">
        <application path="/">
           <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
        </application>
        <bindings>
           <binding protocol="http" bindingInformation="*:80:" />
        </bindings>
    </site>
  2. Добавляем секцию ftp и настройки безопасности:
    <ftpServer>
        <security>
           <authentication>
              <anonymousAuthentication enabled="false" />
              <basicAuthentication enabled="true" />
           </authentication>
           <ssl controlChannelPolicy="SslAllow" dataChannelPolicy="SslAllow"/>
        </security>
    </ftpServer>
  3. Теперь в самом конце файла добавьте настройки авторизации, вот так:
    <location path="Default Web Site">
        <system.ftpServer>
           <security>
              <authorization>
                 <add accessType="Allow" users="administrator" permissions="Read, Write" />
              </authorization>
           </security>
        </system.ftpServer>
    </location>

Не забываем сохранить файл и выдать логин/пароль авторам сайта.

Ссылки:


Microsoft FTP Publishing Service for IIS 7.0 for Windows Server 2008, Daniel Petri; January 8, 2009
Adding FTP to a Web Site, Robert McMurray; March 18, 2009
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.