Услуги профессионального Битрикс-программиста

Apache mysql php perl


Мне, программисту Битрикс, потребовались perl скрипты.
Чтобы их оттестировать поднимала сервер на Windows10
Сделала сервер и для php, и для perl
статьи исходники
https://upweek.ru/windows-apache-mysql-php-webserver
https://apache-windows.ru/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D0%B2%D0%B5%D0%B1-...
Предварительные действия
Устанавливаем не на диск с windows, я устанавливаю на диск D
создаем папки
  • D:\web\
  • D:\web\apache\
  • D:\web\php\
  • D:\web\perl\
  • D:\web\tmp\
  • D:\web\www\
  • D:\web\log\
создаем файлы
D:\web\www\index.html
Hello world
D:\web\www\index.php -
<?php phpinfo(); ?>
D:\web\www\index.cgi
#!D:\web\perl\perl\bin\perl.exe
print "Content-type: text/html; charset=iso-8859-1\n\n";
print "<html>";
print "<body>";
print "Test Page";
print "</body>";
print "</html>";
Скачиваем все
Microsoft Visual C++
Свежий компонент  vc_redist.x86.exe, его можно скачать бесплатно с сайта Microsoft https://www.microsoft.com/ru-ru/download/details.aspx?id=52685  устанавливаем
Apache
Zip архив Apache https://www.apachelounge.com/download/   Я взяла httpd-2.4.47-win32-VS16.zip
Из архива все содержимое папки Apache24 копируем в D:\web\apache\
php
https://windows.php.net/download/ .  Я взяла VS16 x86 Thread Safe (2021-Apr-28 01:16:50). Из архива все содержимое копируем в D:\web\php\
Важно:
  • чтобы VS совпадало у php apache
  • php был Thread Safe
  • в архиве php был файл  php8apache2_4.dll (или php7apache2_4.dll)
perl
https://www.activestate.com/products/activeperl/downloads/ или https://strawberryperl.com/
Мне нужен был 32-bit, я взяла strawberry-perl-5.32.1.1-32bit.msi
Запускаем установку и выбираем путь D:\web\perl\
В данной папке relocation.txt переименовываем в relocation.pl.bat и запускаем

mysql
https://dev.mysql.com/downloads/windows/installer/
я взяла Windows (x86, 32-bit), MSI Installer 5.7.34 (8.0.24 у меня не пошел)
тут написано как установить https://upweek.ru/windows-apache-mysql-php-webserver шаг 5.2-5.10


Настройка Apache
Файл настроек Apache D:\web\apache\conf\httpd.conf немного меняем

корневая папка Apache
Define SRVROOT "D:\web\apache"
папка, в которой хранятся файлы сайта
DocumentRoot "D:\web\www"
<Directory "D:\web\www">
раскомментируем и меняем имя сервера
ServerName localhost:80 
Файлы логов
ErrorLog "D:\web\log\apache-error.log"
CustomLog "D:\web\log\apache-access.log" common
Подключаем php
в любом месте файла, но лучше где остальные LoadModule
если php8
LoadModule php_module "D:\web\php\php8apache2_4.dll" 
AddHandler application/x-httpd-php .php
PHPIniDir "D:\web\php"
если php7
LoadModule php7_module "D:\web\php\php7apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "D:\web\php"
меняем DirectoryIndex
DirectoryIndex index.cgi index.pl index.php index.html
Подключаем perl
строчку
Options Indexes FollowSymLinks
меняем на
Options Indexes FollowSymLinks ExecCGI
строчку
#AddHandler cgi-script .cgi
расскомментируем и меняем на
AddHandler cgi-script .cgi .pl
Сохраняем файл  D:\web\apache\conf\httpd.conf


Настройка PHP
изменить имя файла с D:\web\php\php.ini-development на D:\web\php\php.ini
открываем теперь php.ini и изменяем
extension_dir = "D:\web\php\ext"
sys_temp_dir = "D:\web\tmp"
расширения расскомментируем или добавляем
extension=mysqli
extension=mbstring
часовой пояс, выбрать свой тут https://www.php.net/manual/ru/timezones.php
date.timezone = Europe/Moscow
ставим
short_open_tag = On

Обновить PHP
  • Переименовать папку D:\web\php в php_old
  • Распоковать новую версию PHP в D:\web\php
  • Перенести php.ini из папки php_old в папку php.
  • Если это новая версия php (был php7, изменили на php8), изменить в apache загрузку модуля php, например, на LoadModule php_module "D:/web/php/php8apache2_4.dll"
  • Если все ок — удалить папку php_old.
Установка Apache
C:\Windows\System32\cmd.exe запуск от имени администратора

установка Apache
D:\web\apache\bin\httpd.exe -k install 
перезапуск Apache
D:\web\apache\bin\httpd.exe -k restart
удаление Apache
D:\web\apache\bin\httpd.exe -k uninstall

Настройка виртуальных хостов на Apache
файл  C:\Windows\System32\drivers\etc\hosts
Если файл hosts не получается сохранить файл host можно скопировать, например, на Рабочий стол, где его можно отредактировать, сохранить, переместить обратно и подтвердить операцию с административными привилегиями

Добавить строки, например
127.0.0.1 host1.localhost
127.0.0.1 host2.localhost

создать папки
для размещения фалов сайта
  • D:\web\www\host1.localhost
  • D:\web\www\host2.localhost
для рамещения логов
  • D:\web\log\host1.localhost
  • D:\web\log\host2.localhost
поправить настройки apache
  • Открыть D:\web\apache\conf\httpd.conf
  • Раскомментируйте строку Include conf/extra/httpd-vhosts.conf
  • Сохраните файл httpd.conf

Когда Apache увидит, что у него есть доступ к httpd-vhosts.conf, то он перестанет принимать во внимание указанные ранее параметры в httpd.conf:

  • DocumentRoot
  • ServerName
  • ErrorLog
  • CustomLog

Все эти параметры будут взяты из файла конфигурации виртуальных хостов, а самый первый указанный хост будет считаться за localhost.

В файле D:\web\apache\conf\extra\httpd-vhosts.conf описываем хосты

<VirtualHost *:80>
   ServerAdmin webmaster@host1.localhost
   DocumentRoot "D:\web\www\host1.localhost"
   ServerName host1.localhost
   ServerAlias www.host1.localhost
   ErrorLog "D:\web\log\host1.localhost\error.log"
   CustomLog "D:\web\log\host1.localhost\access.log" common
</VirtualHost>
<VirtualHost *:80>
   ServerAdmin webmaster@host2.localhost
   DocumentRoot "D:\web\www\host2.localhost"
   ServerName host2.localhost
   ServerAlias www.host2.localhost
   ErrorLog "D:\web\log\host2.localhost\error.log"
   CustomLog "D:\web\log\host2.localhost\access.log" common
</VirtualHost>

перезапускаем apache

Mysql
«Диспетчер задач» Windows mysqld.exe в фоновых процессах.
Вкладка «Службы» и увидите службу по имени MySQL80, которую вы можете останавливать и запускать по правому клику мыши.

Дополнительно
для php модуль CGI поставить
Берем отсюда https://metacpan.org/pod/CGI::Compile  из архива копируем содержимое папки CGI-XXX/lib/ (у меня CGI-4.51/lib/) в папку D:\web\perl\perl\lib