Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Прочая документация (http://mangos.ytdb.ru/forumdisplay.php?f=33)
-   -   Настройка Apache + PHP (http://mangos.ytdb.ru/showthread.php?t=3255)

KiriX 20.12.2010 12:44

Настройка Apache + PHP
 

Установка и настройка PHP 5.х.х

Сайт разработчика: http://www.php.net (анг) http://www.php.su (рус)
Скачайте архив последней стабильной версии PHP: http://www.php.net/downloads.php
Для работы с Apache используйте только VC6 версии!

Распакуйте архив в желаемый каталог (изначально предлагается «C:\php»). Откройте конфигурационный файл содержащий рекомендуемые настройки - php.ini-recommended (находящийся в корне дистрибутива), переименуйте его в php.ini и произведите следующие изменения.
Редакция php.ini:
  • Найдите и включите (измените Off на On) следующие директивы:
Код:

short_open_tag = On
display_errors = On
register_globals = On
register_long_arrays = On

  • Найдите строку:
Код:

post_max_size = 8M
  • Увеличьте до 16 Мбайт максимальный размер данных принимаемых методом POST, изменив ее на:
Код:

post_max_size = 16M
  • Найдите строку:
Код:

;include_path = ".;c:\php\includes"
  • Раскомментируйте ее, убрав перед строкой символ точки с запятой. (Внимание исключение! Обратные косые черты при указании пути):
Код:

include_path = ".;c:\php\includes"
  • Создайте пустой каталог «C:\php\includes», для хранения подключаемых классов.
  • Найдите строку:
Код:

extension_dir = "./"
  • Установите значением данной директивы путь к папке с расширениями:
Код:

extension_dir = "C:/php/ext"
  • Найдите строку:
Код:

;upload_tmp_dir =
  • Раскомментируйте ее и укажите в значении следующий путь:
Код:

upload_tmp_dir = "C:/php/upload"
  • Создайте пустую папку «C:\php\upload», для хранения временных файлов загружаемых через HTTP.
  • Найдите строку:
Код:

upload_max_filesize = 2M
  • Увеличьте максимально допустимый размер загружаемых файлов до 16 Мбайт:
Код:

upload_max_filesize = 16M
  • Подключите, расскомментировав, данные библиотеки расширений:
Код:

extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mcrypt.dll
extension=php_mysql.dll
extension=php_mysqli.dll

  • Найдите строку:
Код:

;session.save_path = "/tmp"
  • Раскомментируйте и установите значением данной директивы такой путь:
Код:

session.save_path = "C:/php/tmp"
  • Создайте пустую папку «C:\php\tmp» для хранения временных файлов сессий.
Сохраните изменения и закройте файл php.ini.

Далее необходимо добавить каталог с установленным PHP интерпретатором в PATH операционной системы. Для чего пройдите по пути «Start» («Пуск») → «Control Panel» («Панель управления») → «System» («Система»), откройте вкладку «Advanced» («Дополнительно»), нажмите кнопку «Environment Variables» («Переменные среды»), в разделе «System Variables» («Системные переменные») сделайте двойной щелчок на строке «Path», добавьте в поле «Variable Value» («Значение переменной»), к тому что там уже существует, путь к каталогу с установленным PHP, например, «C:\php» (без кавычек). Обратите внимание на то что символ точки с запятой разделяет пути. И еще один важный момент – обязательно установите в переменных среды путь к PHP перед уже имеющимся там путем к каталогу «bin» установочной директории MySQL. Чтобы внесенные изменения вступили в силу, перезагрузите операционную систему.

Пример строки Path:
Код:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\php;C:\Program Files\MySQL\MySQL Server 5.0\bin
Установка и настройка PHP-интерпретатора – завершена.

Описание подключаемых библиотек:

php_curl.dll – Очень важная и нужная библиотека, позволяющая соединяться и работать с серверами, с помощью огромного количества интернет-протоколов.

php_gd2.dll – Ещё одна незаменимая библиотека, позволяющая работать с графикой. Вы думали на PHPможно только HTML странички генерировать? А вот и нет! С помощью PHP можно почти всё, в том числе и рисовать.

php_mbstring.dll – Библиотека содержит функции для работы с много-байтными кодировками, к которым относятся кодировки восточных языков (японский, китайский, корейский), Юникод (UTF-8) и другие.

php_mcrypt.dll – Библиотека позволяющая работать с большим количеством алгоритмов шифрования, среди которых DES, TripleDES, Blowfish и другие.

php_mysql.dll – Имя библиотеки говорит само за себя - она необходима для работы с сервером MySQL.

php_mysqli.dll – Данная библиотека является расширением предыдущей и содержит дополнительные функции PHP для работы с сервером MySQL версии 4.1.3 и выше.

Данных библиотек должно хватить для полноценной работы PHP. Со временем, если появится такая необходимость, вы сможете подключить дополнительные библиотеки, но не стоит подключать их все сразу с мыслью, что кашу маслом не испортишь, в данном случае излишнее количество подключенных библиотек может заметно замедлить работу PHP.

KiriX 20.12.2010 18:43

Установка и Apache HTTP Server 2.2.x (на основе 2.2.17)
Сайт разработчика: http://www.apache.org
Скачайте дистрибутив последней стабильной версии (Win32 Binary (MSI Installer)): http://httpd.apache.org/download.cgi
Ставим в штатном режиме - всё по умолчанию, можно ничего не менять.

В корне диска необходимо создать каталог «apache» - в нем будут лежать ваши виртуальные хосты (домены), глобальный файл журнала ошибок «error.log» (создается программой при первом запуске, автоматически), глобальный файл доступа «access.log» (создается автоматически). В каталоге «apache» создаем еще одну пустую папку - «localhost», в которой, в свою очередь, создаем папку «www», именно в последней и надо будет держать наше добро в виде локальных скриптов. Такая, казалось бы странная структура каталогов, продиктована схожей схемой построения каталогов в системах Unix, и призвана упростить в дальнейшем ее понимание и использование.

Далее в директории, куда был установлен Apache, необходимо найти и открыть в текстовом редакторе файл «conf\httpd.conf», являющийся основным конфигурационным файлом сервера Apache.

Правка файла httpd.conf
  • Для загрузки модуля mod_rewrite найдите и раскомментируйте (уберите в начале строки символ »#») данную строку:
Код:

LoadModule rewrite_module modules/mod_rewrite.so
  • Для загрузки PHP интерпретатора, в конец блока загрузки модулей необходимо добавить строку:
Код:

LoadModule php5_module "C:/php/php5apache2_2.dll"
  • Добавьте строку, определяющую каталог содержащий конфигурационный файл PHP:
Код:

PHPIniDir "C:/php"
  • Назначаем корневую директорию управления сайтами (немного раньше мы её уже создали):
Код:

DocumentRoot "C:/apache"
  • Найдите данный блок:
Код:

<Directory />
  Options FollowSymLinks
  AllowOverride None
  Order deny,allow
  Deny from all
  Satisfy all
</Directory>

  • И замените его на нижеследующий:
Код:

<Directory />
  Options Includes Indexes FollowSymLinks
  AllowOverride All
  Allow from all
</Directory>

  • Удалите или закомментируйте первоначальный блок управления директориями (он нам не понадобится), который без комментариев выглядит примерно так:
Код:

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">
  Options Indexes FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

  • Найдите блок:
Код:

<IfModule dir_module>
  DirectoryIndex index.html
</IfModule>

  • Замените его на:
Код:

<IfModule dir_module>
  DirectoryIndex index.html index.htm index.shtml index.php
</IfModule>

  • Найдите строку:
Код:

ErrorLog logs/error.log
  • Замените на нижеследующую (в этом случае просматривать глобальный файл ошибок сервера будет удобнее):
Код:

ErrorLog C:/apache/error.log
  • Найдите строку:
Код:

CustomLog logs/access.log common
  • Замените на:
Код:

CustomLog C:/apache/access.log common
  • Для работы SSI (включения на стороне сервера) следующие строки, находящийся в блоке <IfModule mime_module>, необходимо найти и раскомментировать:
Код:

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

  • Добавьте ниже, в тот же блок <IfModule mime_module>, две строки:
Код:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

  • И, наконец, найдите и раскомментируйте строки:
Код:

Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-manual.conf
Include conf/extra/httpd-default.conf

Сохраните изменения и закройте файл "httpd.conf"

Теперь откройте файл «httpd-vhosts.conf» находящийся в директории «conf\extra», и произведите в нём следующие изменения:

Существующие блоки примеров виртуальных хостов необходимо закомментировать, либо удалить, и вставить нижеследующее:

Код:

<VirtualHost *:80>
  DocumentRoot C:/apache/localhost/www
  ServerName localhost
  ErrorLog C:/apache/localhost/error.log
  CustomLog C:/apache/localhost/access.log common
</VirtualHost>

Пример создания виртуального хоста
При необходимости установки собственных виртуальных хостов сделайте следующее:
Откройте файл «httpd-vhosts.conf», и создайте в нём блок, примерно, следующего содержания:
Код:

<VirtualHost *:80>
  # Папка, в которой будет корень вашего хоста.
  DocumentRoot C:/apache/test.ru/www
  # Домен по которому вы сможете обращаться к виртуальному хосту.
  ServerName test.ru
  # Алиас (добавочное имя) домена.
  ServerAlias www.test.ru
  # Файл, в который будут записываться ошибки.
  ErrorLog C:/apache/test.ru/error.log
  # Файл журнала доступа к хосту.
  CustomLog C:/apache/test.ru/access.log common
</VirtualHost>

Затем в каталоге «apache», создайте папку «test.ru» (прямо так, с точкой), в которой, в свою очередь, создайте папку «www».

Следующий шаг создания виртуального хоста – это изменение файла C:\WINDOWS\system32\drivers\etc\hosts операционной системы. Откройте данный файл и добавьте в него две строки:
Код:

127.0.0.1 test.ru
127.0.0.1 www.test.ru

Теперь перезапустите сервер Apache ярлыком «Restart», находящимся в меню «Start», откройте браузер, введите в адресной строке test.ru или http://www.test.ru/ и вы окажетесь в своем виртуальном хосте. Только будьте внимательны, теперь вы сможете попасть на оригинальный сайт с именем виртуального хоста (http://www.test.ru/ если таковой существует), только закомментировав либо удалив строку: 127.0.0.1 http://www.test.ru/, в вышеупомянутом файле «hosts».

Документация Apache, при запущенном сервере, доступна по адресу http://localhost/manual/

Установка и настройка веб-сервера Apache – завершена.


KiriX 20.12.2010 18:57

Вложений: 1
Резервный пост...

P.S: Этот мануал составлен вовсе не мною, я лишь сохранил его с ресурса, который ныне недоступен.

Естественно, любые пожелания по дополнению, исправлению неточностей приветствуется ;)

rsa, без обид, удалил посто просто потому что третий должен быть резервом ;)
А вообще ты не совсем прав. Чистый апач ставится и запускается без всяких проблем ;) Это инструкция по связке его и работе с php.

20.12.2010 19:14

забыли про Listen "порт"
размножаю виртуальные хосты открытием дополнительного порта, в файл хост реже лазить...да и для веб приложений дополнительный тест на совместимость со сложным путем :pardon: типо test, test:90, test:8080 и тд
апач и пхп по пути "c:\Program Files\" - глаз не мылят
виртуальные хосты в папке с апачем, но с условием ,что папка является симлинком директории на другом диске (невозможно предсказать сколько понадобится места на диске с, да и лежать может где угодно, в общем очень удобно), темповые директории винды всегда на другом диске...
HKEY_LOCAL_MACHINE\SOFTWARE\PHP - ветка php в реестре, иногда помогает =))) особенно если проблемы с php.ini и установкой с архива
зы копии php.ini httpd.conf httpd-vhosts.conf хранятся как реликвии =)))

tempura 21.12.2010 08:12

Цитата:

Сообщение от Minimajack (Сообщение 17387)
забыли про Listen "порт"
размножаю виртуальные хосты открытием дополнительного порта, в файл хост реже лазить...да и для веб приложений дополнительный тест на совместимость со сложным путем :pardon: типо test, test:90, test:8080 и тд

Плохая идея. :) Если имеется ввиду только локальная машина, у которой нет привязки к ДНС, то наилучшим вариантом будет привязка вирт-хостов к loopback адресам 127.0.0.1-255. Например:
PHP код:

NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1>
ServerName 127.0.0.1
DocumentRoot 
"/htdocs/test1.loc/www"
ErrorLog "/htdocs/test1.loc/logs/error.log"
CustomLog "|/Apache2/bin/rotatelogs.exe -f /htdocs/test1.loc/logs/access_%Y-%m-%d.log 50M" combined
</VirtualHost>

NameVirtualHost 127.0.0.2
<VirtualHost 127.0.0.2>
ServerName 127.0.0.2
DocumentRoot 
"/htdocs/test2.loc/www"
ErrorLog "/htdocs/test2.loc/logs/error.log"
CustomLog "|/Apache2/bin/rotatelogs.exe -f /htdocs/test2.loc/logs/access_%Y-%m-%d.log 50M" combined
</VirtualHost

Хотя на локале вряд ли когда-нибудь понадобится ротейтлог. :) :) :)

Цитата:

Сообщение от Minimajack (Сообщение 17387)
апач и пхп по пути "c:\Program Files\" - глаз не мылят

Еще как мылят. Часто нужен доступ к апачу-мусклу из командной строки, и набрать cd apache2/bin гораздо проще и быстрее, чем лезть туда через програм файлз.
Цитата:

Сообщение от Minimajack (Сообщение 17387)
виртуальные хосты в папке с апачем, но с условием ,что папка является симлинком директории на другом диске (невозможно предсказать сколько понадобится места на диске с, да и лежать может где угодно, в общем очень удобно), темповые директории винды всегда на другом диске...

опять же - от корня в папки вирт-хостов было бы проще входить, чем придумывать какие-то симлинки. :) Хостишь все в папку (например) htdocs в корне чего угодно - и не любишь свой моск. :)
Цитата:

Сообщение от Minimajack (Сообщение 17387)
HKEY_LOCAL_MACHINE\SOFTWARE\PHP - ветка php в реестре, иногда помогает =))) особенно если проблемы с php.ini и установкой с архива

Оопс. У меня такого раздела нигде нет. Что надо сделать, чтобы он появился? :) :)
Цитата:

Сообщение от Minimajack (Сообщение 17387)
зы копии php.ini httpd.conf httpd-vhosts.conf хранятся как реликвии =)))

Угу, дефолтовые конфиги бекапить ОБЯЗАТЕЛЬНО. Мало ли что где накосячишь - хоть бекап останется.



Кстати, для первого редактирования конфига апача рекомендую попробовать утилиту ApacheConf. Она платная, но триального времени (45 дней) на один конфиг вполне хватает. :) Главное запомнить: это только помощник!!! Рекомендуется после всех изменений открыть рядом свой бекап оригинального конфига, и конфига после редактирования, и сидеть сравнивать. Сидеть, смотреть, проверять себя, и все проверять самому. Редактирование конфига в текстовом режиме вам в любом случае ОБЯЗАТЕЛЬНО нужно.

Ну и самое главное - читать мануалы апача. :) Распечатать, и читать на ночь (как я когда-то), читать при возникновении любых вопросов, самому придумывать вопросы и искать их решение в мануале. Тестить различные подходы и т.п. Очень полезная штука.



Ну и еще две интересных фишки для Апача, которые может пригодятся кому-то:

rsa 21.12.2010 09:10

Цитата:

Сообщение от KiriX (Сообщение 17385)
Чистый апач ставится и запускается без всяких проблем ;) Это инструкция по связке его и работе с php.

убранные тобой команды пакетного менеджера устанавливают апача в полном комплекте с PHP и большинством описанных расширений (если они не установлены by-default как в большинстве линуксей). И даже настраивают минимальный комплект виртуалхостов и хомедиров (впрочем второе виндовс-версии не грозит).

21.12.2010 09:51

Цитата:

Сообщение от tempura (Сообщение 17394)
Плохая идея. :) Если имеется ввиду только локальная машина, у которой нет привязки к ДНС, то наилучшим вариантом будет привязка вирт-хостов к loopback адресам 127.0.0.1-255.

имеется в виду лок-ная сеть, где доступ возможен из других машин.
Цитата:

Сообщение от tempura (Сообщение 17394)
Еще как мылят. Часто нужен доступ к апачу-мусклу из командной строки, и набрать cd apache2/bin гораздо проще и быстрее, чем лезть туда через програм файлз.

я про мускул ничего не говорил...хотя он при установке предлагает прописать себя в path
зачем доступ к апачу? Конфиги править?
Цитата:

Сообщение от tempura (Сообщение 17394)
опять же - от корня в папки вирт-хостов было бы проще входить, чем придумывать какие-то симлинки. :) Хостишь все в папку (например) htdocs в корне чего угодно - и не любишь свой моск. :)

это дело 10 секунд. Разные ситуации - разные потребности...мне например удобней хранить в структурированом виде
PHP код:

с сервером
"Server/ServerИмя/src/исходники сервер"
"Server/ServerИмя/distr/сам сервер"
"Server/ServerИмя/webtest/веб под него" 
"Server/ServerИмя/webwork/веб под него"
без сервера
"http/имявеба/самвеб" 

а вот апаче их видит уже по своему...как ему надо...
надо срочно проверить(изменить), удаляем старый симлинк, создаем новый(на другую папку) - больше ничего не трогаю.
Цитата:

Сообщение от tempura (Сообщение 17394)
Оопс. У меня такого раздела нигде нет. Что надо сделать, чтобы он появился? :) :)

запустить php install ... а не архив распаковать =)))

tempura 21.12.2010 11:44

Цитата:

Сообщение от Minimajack (Сообщение 17398)
зачем доступ к апачу? Конфиги править?

Ну, вообще-то, тестировать конфиг. :) :) :) Делать .htpasswd файлы и т.п.
Цитата:

Сообщение от Minimajack (Сообщение 17398)
запустить php install ... а не архив распаковать =)))

Фу-у-у-у!!!!!! Ламо!

KiriX 21.12.2010 13:14

Цитата:

Сообщение от rsa (Сообщение 17396)
убранные тобой команды пакетного менеджера устанавливают апача в полном комплекте с PHP и большинством описанных расширений (если они не установлены by-default как в большинстве линуксей). И даже настраивают минимальный комплект виртуалхостов и хомедиров (впрочем второе виндовс-версии не грозит).


saint diablo 21.12.2010 14:05

внесу свою ложку меда
если кто соберется ставить apache на win7, то по дефолту на 80 порту он не запустится (так иногда на ноуте балуюсь с web-обвязкой)
в конфиге пока не поменял значение listen port, в упор не хотел запускаться

ps может кому-нибудь поможет это

KiriX 21.12.2010 14:12

Цитата:

Сообщение от saint diablo (Сообщение 17419)
внесу свою ложку меда
если кто соберется ставить apache на win7, то по дефолту на 80 порту он не запустится (так иногда на ноуте балуюсь с web-обвязкой)
в конфиге пока не поменял значение listen port, в упор не хотел запускаться
ps может кому-нибудь поможет это

Ложь ;)
Абсолютно нормально ставится на 80 порт на win7 ;)

tempura 21.12.2010 15:41

Цитата:

Сообщение от saint diablo (Сообщение 17419)
внесу свою ложку меда
если кто соберется ставить apache на win7, то по дефолту на 80 порту он не запустится (так иногда на ноуте балуюсь с web-обвязкой)
в конфиге пока не поменял значение listen port, в упор не хотел запускаться

ps может кому-нибудь поможет это

Рекомендую проверить собственный 80 порт на предмет его использования, похоже там сидит какая-то гадость. :) Например на 80 порту может сидеть торрент, скайп, иис, ну или еще какая-нибудь фигня

Lurker 21.12.2010 15:56

В win 7 проблема не с портом, а с именем localhost
его в хостсе нету в семерке .... так что указывайте 127.0.0.1 или пропишите его сами в hosts
Эта фишка семерки отражается на всем где по умолчанию прописано localhost =))

KiriX 21.12.2010 17:20

Цитата:

Сообщение от Lurker (Сообщение 17428)
В win 7 проблема не с портом, а с именем localhost
его в хостсе нету в семерке .... так что указывайте 127.0.0.1 или пропишите его сами в hosts
Эта фишка семерки отражается на всем где по умолчанию прописано localhost =))

И с такой проблемой на вин7 я также не сталкивался...

saint diablo 21.12.2010 18:34

Цитата:

Сообщение от tempura (Сообщение 17426)
Рекомендую проверить собственный 80 порт на предмет его использования, похоже там сидит какая-то гадость. :) Например на 80 порту может сидеть торрент, скайп, иис, ну или еще какая-нибудь фигня

конечно интересно, но торрент сейчас выключен (был поставлен еще до сноса винды), скайпом и IIS не пользуюсь вообще, а КИС определяет этот открытый порт как system и адреса :: и 0.0.0.0 по TCP протоколу:pardon:

tempura 21.12.2010 22:02

Цитата:

Сообщение от saint diablo (Сообщение 17432)
конечно интересно, но торрент сейчас выключен (был поставлен еще до сноса винды), скайпом и IIS не пользуюсь вообще, а КИС определяет этот открытый порт как system и адреса :: и 0.0.0.0 по TCP протоколу:pardon:

Удали нах свою КИСу и поставь нормальную защиту.

В консоли проверь какое приложение висит на 80 порту.

Дмитрий "Айдин" 22.09.2011 13:03

Тема смотрю старая, но у меня до сих пор про это спрашивают.
Вот вариант ответа на вопрос - http://habrahabr.ru/qa/222/
Кстати, если стоит КИС - http://forum.kaspersky.com/index.php?showtopic=214495 - тоже полезно.


Цитата:

So Windows 7 by default appears to be using port 80.

After a bit of hunting around the Internet and doing some research of my own I found that the service http.sys was the culprit and all I needed to do was disable it but I could not find this service listed in the Services control panel applet.

So what’s the solution?
You have to disable the http.sys service manually via the registry:

1) Launch RegEdit:
2) Go to: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\HTTP
3) Add a new DWORD (32-bit) value
4) Name it ‘NoRun’ not including the quotes
5) Double click the new property
6) In the Value data field type ’1′ not including quotes and click OK
7) Re-boot your computer

You should now find that Apache will start on port 80!

zhenya 22.09.2011 19:00

apache не нужен :)

nginx + php-fpm рулит.


Текущее время: 09:44. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS