Пн 29 Сен 2008
Установка 1С-Битрикс на Windows Server 2008 (IIS7)
Артём и Максим Категория: Техплатформа PHP
Прочитать позже:
С появлением IIS7 в составе Windows Server 2008 у владельцев сайтов на «Битриксе» появилась альтернатива. Если раньше установка Битрикса на Windows была сопряжена с огромными трудностями (особенно в плане производительности), то под IIS7 «Битрикс» заработал в полную силу. FastCGI, очереди запросов, а также отсутствие необходимости в применении nginx позволяет сконфигурировать web-сервер практически без «танцев с бубном».
В этой статье содержится пошаговая инструкция по установке и базовой настройке всех элементов web-сервера, необходимых для запуска сайта на «1С-Битрикс: Управление сайтом».
Установка IIS7
Запустите Server Manager, откройте в дереве оснастки Roles, нажмите Add Roles, выберите Web Server (IIS).
Если вы планируете использовать стандартный SMTP- или FTP-сервер от Microsoft, то необходимо в списке Role Services отметить IIS6 Management Compatibility (управление этими серверами производится только из старой оснастки on IIS6).
IIS7 можно администрировать удалённо, подключаясь к нему не с помощью RDP, а с помощью оснастки. Для этого надо отметить Management Service.
Если вы планируете использование FTP-сервера от Microsoft, то отметьте FTP Publishing Service.
Для работы с PHP в режиме FastCGI (основное достоинство IIS7 для «Битрикса») необходимо отметить пункт Application Development - CGI.
Скорее всего, вам также пригодятся Logging Tools.
Все эти дополнительные функции вы сможете добавить и позже, выбрав в дереве оснастки Roles - Web Server (IIS) и нажав Add Role Services.
Дальнейшая работа может производиться с помощью оснастки IIS7, которая разительно отличается по внешнему виду и количеству настроек от оснастки IIS6.
Установите апдейт для IIS, дабы избежать возможных проблем с Redirection.
Настройка PHP
Воспользуйтесь этой инструкцией, чтобы настроить поддержку FastCGI (далее встречаются выдержки из неё).
Скачайте дистрибутив PHP5 (Microsoft рекомендует non-thread-safe, однако eAccelerator с ним не очень-то работает).
Установите (например, в папку C:\Websrv\PHP) из MSI, включив следующие Extensions (их также можно будет прописать позже вручную в виде extension=имяфайларасширения.dll):
- MySql
- GD2
- LDAP (если будете изпользовать LDAP-авторизацию)
- OpenSSL
- SMTP
- Win32ps
- Win32scheduler
- zip
Откройте файл php.ini в Блокноте и установите (или раскомментируйте) следующие параметры:
- fastcgi.impersonate = 1
- cgi.fix_pathinfo = 1
- cgi.force_redirect = 0
- open_basedir = C:\Inetpub (или другая папка, в которой будут ваши сайты)
- short_open_tag = On (в Битриксе используется <? вместо <?php)
- extension_dir = “C:\Websrv\PHP\ext”
- upload_tmp_dir=”C:\inetpub\temp”
- session.save_path=”C:\inetpub\temp”
- allow_call_time_pass_reference = On
- display_errors = On
Вы можете в CMD запустить команду:
C:\Websrv\PHP\php -info
Если вы сделали всё правильно, то будет выдан этот же файл конфигурации.
Теперь нужно настроить IIS таким образом, чтобы php-файлы обрабатывались модулем FastCGI. На Home-странице в оснастке IIS выберите Handler Mappings, затем Add Module Mapping.
Перезапустите IIS7 с помощью оснастки, чтобы изменения вступили в силу.
Проверьте корректность привязки. Для этого в папке C:\Inetpub\wwwroot создайте файл test.php, содержащий строку <? phpinfo(); ?>. Откройте в браузере http://localhost/test.php.
Имейте в виду, что по умолчанию в Windows Server 2008 запись в папку Inetpub можно производить только в том случае, если прогрмма, с помощью которой вы собираетесь создать файл, запущен в режиме эскалации. Вы можете либо перенастроить разрешения на эту папку, либо запускать Проводник (или другую программу, с помощью которой вы будете создавать и редактировать файлы) в режиме эскалации (Run as administrator).
Теперь осталось добавить пару хитрых настроек. Выполните в CMD, запущенного в режиме эскалации, следующие команды:
%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /fullPath=’C:\Websrv\PHP\php-cgi.exe’].instanceMaxRequests:10000
%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /+fullPath=’c:\Websrv\PHP\php-cgi.exe’].environmentVariables.name=’PHP_FCGI_MAX_REQUESTS’,value=’10000′]
Теперь следует настроить таймауты.
%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='C:\Websrv\PHP\php-cgi.exe'].activityTimeout:600
Этой командой мы установим заведомо большое время ожидания IIS’ом окончания выполнения скрипта - 600 секунд.
Теперь в php.ini можно указать, например, следующие значения:
max_execution_time = 240
max_input_time = 240
Установка MySQL
В мастере настройки сервера укажите, что это Server Machine.
Выберите Transactional Database Only, чтобы использовать только InnoDB.
Выберите OLTP, чтобы обеспечить выполнение большого количества запросов.
Выберите cp1251, если вы собираетесь работать со старыми проектами на «Битриксе» (в старой кодировке) или Best Support for Multilingualism для новых установок Битрикса.
Поставьте галку Include Bin Directory in Windows PATH, чтобы проще было работать из CMD.
Чтобы нормально работать с cp1251 из консоли, пропишите в my.ini в секции [client] строку
character-sets-dir=”C:/Websrv/MySQL/MySQL Server/share/charsets”
Установка eAccelerator
Скачайте бинарный дистрибутив eAcceleretor.
Переименуйте DLL-файл в eaccelerator.dll и поместите его в папку C:\Websrv\PHP\ext.
В php.ini добавьте строки
[eaccelerator]
extension=eaccelerator.dll
eaccelerator.shm_size=”16″
eaccelerator.cache_dir=”C:\inetpub\temp\eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=”"
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″
Установка Bitrix
Скачайе программу Zend Optimizer (после ввода лицензионного ключа и загрузки исходных кодов её можно будет деинсталлировать). Если не охота заполнять регистрационную информацию, то можно перейти прямо сюда.
При установке вам нужно будет указать C:\Websrv\PHP в качестве папки с php.ini и папку С:\Inetpub - в качестве корневой папки вебсервера.
Добавьте сайт в консоли IIS. В качестве имени хоста можно выбрать имя компьютера (при условии, что других сайтов на этом сервере нет). В нашем примере это Independence.
Спозиционируйте сайт на новую папку (например, C:\Inetpub\wwwroot\bitrixtest).
Добавьте для этой папки разрешение Modify для группы IUSR.
Скопируйте в эту папку содержимое сайта.
Удалите из этой папки web.config, входящий в поставку «Битрикса», так как с IIS7 этот файл несовместим. Привязка к PHP уже выполнена средствами консоли IIS, остаётся привязать страницу по умолчанию и страницу 404-й ошибки.
Спозиционируйтесь на сайт bitrixtest в консоли IIS, выберите Default Document, нажмите Add и добавьте index.php.
Создайте пустой файл C:\inetpub\wwwroot\bitrixtest\404.php.
Спозиционируйтесь на сайт bitrixtest в консоли IIS, выберите Error Pages, выберите 404, снимите галку Try to return the error file in the client language (этим будет заниматься не IIS, а непосредственно «Битрикс») и выберите файл C:\inetpub\wwwroot\bitrixtest\404.php.
Всё, можно заходить из браузера по адресу http://independence и запускать Мастер установки «Битрикса» (детали установки).
Обратите внимание! Если в папке вашего сайта на UNIX-системе использовались хардлинки или симлинки, то вам стоит воспользоваться командой
Mklink /D <путь к новому линку> <путь к исходной папке>
Заключение
Конечно же, после того, как «Битрикс» заработает на сервере, потребуются процедуры по дополнительной оптимизации. Об этом, а также о нагрузочном тестировании - в следующих статьях.



октября 2, 2008 at 20:59
спасибо! помогло!
декабря 7, 2008 at 15:43
Очень даже помогло!!!=)
декабря 14, 2008 at 02:22
Windows Server это исчадие ада. И морочиться с ним лишний раз - не хочется абсолютно…
декабря 15, 2008 at 18:02
Супер повествование. Пока не пробовали, но если получится, то будет просто замечательно все!
января 13, 2009 at 22:57
Спасибо за рекомендации,все установилось достаточно быстро и просто!
марта 19, 2009 at 17:07
Большое спасибо.
Искал ответ именно на этот вопрос у самой компании - ниче не ответили….
Но!!!
Застрял на следущем:
в командной строке при нажатии Энтер
Пишет ошибку:
ERROR < message:Неизвестный раздел конфигурации “system.webServer/fastCqi/fullPath=’C:\websrv\PHP\php-cgi.exe’].instanceMaxRequests:10000″. Замените символом “?” для получения справки
Я так понимаю что то значит именно в написании не так на сайте преподнесено?
марта 19, 2009 at 17:13
Эта ошибка возникла после попытки внести изменения производя настройку РНР с помощью командной строки следуя вашему тексту:
Выполните в CMD, запущенного в режиме эскалации, следующие команды:
%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /fullPath=’C:\Websrv\PHP\php-cgi.exe’].instanceMaxRequests:10000
марта 31, 2009 at 11:54
Спасибо за рекомендации,все установилось достаточно быстро и просто!
июля 31, 2009 at 16:52
Подскажите, пожалуйста, в настройке IIS. В частности в разделе Handler Mappings добавляю модуль. А в его описании отсутствует путь. Поэтому при тестировании возникает ошибка HTTP Error 500.21 - Internal Server Error
Handler “PHP with FactCGI” has a bad module “ManagedPipelineHandler” in its module list.
В чем может быть ошибка?
августа 2, 2009 at 13:04
Looks like you have not installed the asp.net feature from within IIS in “Add/Remove windows component” so that all the regstration needed to run asp.net is not present in your configuration.
сентября 25, 2010 at 19:18
Забыли упомянуть о том что .htaccess входящие в составе дистрибутива Битрикс IIS не понимает.