Pull to refresh

Настройка удаленной (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
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.