Постановка задачи: LAMP — акроним, обозначающий набор (комплекс) серверного программного обеспечения, широко используемый во Всемирной паутине. LAMP назван по первым буквам входящих в его состав компонентов:
- Linux — операционная система GNU/Linux;
- Apache — веб-сервер;
- MySQL — СУБД;
- PHP — язык программирования, используемый для создания веб-приложений.
Замечание: Любая переписанная копия хуже оригинала, поэтому сошлюсь на оригинал статьи – . Статья на английском. Моя статья - вольный перевод с практической реализацией и обходом подводных камней!
Если вы хотите установить PHP4, используйте команду
Для установки PHP5, вы можете явно указать '5' или не указывать вовсе, тогда PHP5 будет установлен автоматически (как более новая версия этого пакета).
Конфигурационные файлы Apache находятся: /etc/apache2/apache2.conf, а папка вашего веб-сайта по умолчанию /var/www. Чтобы проверить корректность установленного php создайте файл test.php в вашей папке /var/www folder содержащей код phpinfo()
и просмотрите его в браузере http://ip.address/test.php or http://domain/test.php и этот скрипт выдаст вам подробные настройки вашего php
Замучил СПАМ!? Хотите использовать капчу (CAPTCHA, картинка для роботов) для защиты от нежелательной корреспонденции или защитить свой форум от роботов-регистраторов? Тогда Вам потребуется поддержка в языке программирования php методов работы с графическими изображениями, так называемая связка php-gd. Установим её:
Готово! Снова посещаем тестовую страницу http://ip.address/test.php или http://domain/test.php и этот скрипт выдаст вам в секции GD library информацию о поддержке работы с PNG, GIF, JPG и прочими иображениями в скриптах php.
Слегка повысим безопасность PHP, изменив в файле /etc/php5/php.ini следующие директивы:
error_reporting = E_ALL register_globals = OFF allow_url_fopen = Off upload_tmp_dir = /var/tmp
Mod_rewrite предоставляет механизм динамического изменения запрашиваемых URL-ов. Так называется дополнительный модуль для популярного веб-сервера Apache, доля которого на рынке веб-серверов составляет более 70%. Для включения mod_rewrite, достаточно чтобы модуль mod_rewrite.so был загружен в Apache. Этот модуль содержится в стандартной поставке сервера. Но как правило, он обычно отключен.
Нижеследующая команда включает за нас модуль mod_rewrite в состав веб-сервера, обслуживающего Ваш веб-сайт, и допускается использование его директив в файлах .htaccess.
Снова посещаем тестовую страницу http://ip.address/test.php или http://domain/test.php и ищем там новую секцию Mod Rewrite
Замечу, чтобы директивы mod_rewrite можно было использовать, надо в файле httpd.conf (в соответствующем разделе "
В начале файла добавляем опции ServerAdmin и ServerName, а также находим опцию AllowOverride и изменим её с значения None на All. За комментируем RedirectMatch.
NameVirtualHost *
<VirtualHost *>
ServerAdmin admin@server.ex
ServerName "www.server.ex"
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# RedirectMatch ^/$ /apache2-default/
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
Также исправим файл /etc/apache2/conf.d, заменив UTF-8 на Windows-1251
Псоле загрузки файлов директив .htaccess file на Ваш сервер перезапустите apache, чтобы изменения вступили в силу. Файлам .htaccess установите разрешения 644, дабы избежать ошибки ДОСТУП ЗАПРЕЩЕН ("permission denied").
Там же - откроем конфиг /etc/apache2/apache2.conf и доведем его «напильником» до ума!
Тэг(опция): MaxClients
Директива MaxClients устанавливает максимальное количество параллельных запросов, которые будет поддерживать сервер. Apache не будет порождать больше процессов/потоков чем MaxClients. Значение MaxClient не долно быть слишком маленьким (иначе много клиентов останутся необслуженными), но и не стоит устанавливать слишком большое количество - лучше не обслужить часть клиентов чем исчерпать все ресурсы, залезть в своп и умереть под нагрузкой.
Хорошим может быть значение MaxClients = количество памяти выделенное под веб-сервер / максимальный размер порожденного процесса или потока. Для статических файлов apache использует около 2-3 Мб на процесс, для динамики (php, cgi) - зависит от скрипта, но обычно около 16-32 Мб.Если сервер уже обслуживает MaxClients запросов, новые запросы попадут в очередь, размер которой устанавливается с помощью директивы ListenBacklog.
Тэг(опция): MinSpareServers, MaxSpareServers, и StartServers
Т.к. создание потока, и особенно процесса - дорогая операция, apache создает их заранее. Директивы MaxSpareServers и MinSpareServers устанавливают как много процессов/потоков должны ожидать в готовности принять запрос (максимум и минимум). Если значение MinSpareServers слишком маленькое и неожиданно приходит много запросов, apache вынужден будет создавать много новых процессов/потоков, что создаст дополнительную нагрузку в этой стрессовой ситуации. С другой стороны, если MaxSpareServers слишком велико, apache будет сильно нагружать систему этими процессами, даже если количество клиентов минимально.
Постарайтесь установить такие MinSpareServers и MaxSpareServers, чтобы apache не создавал более 4 процессов/потоков в секунду. Если он создаст более 4, в ErrorLog будет помещено сообщение об этом. Это - сигнал того что MinSpareServers слишком мало.
Тэг(опция): MaxRequestsPerChild
Директива MaxRequestsPerChild устанавливает сколько запросов может обработать один дочерний процесс/поток прежде чем он будет завершен. По умолчанию значение этой директивы установлено в 0, что означает что однажды созданный процесс/поток не будет завершен никогда (ну кроме случаев остановки сервера или краха этого процесса/потока).
Рекомендую установить MaxRequestsPerChild равное какому-нибудь достаточно большому числу (несколько тысяч). Это не создаст излишней нагрузки, связаной с тем что apache будет вынужден создавать новые дочерние процессы, в то же время это поможет избавиться от проблем с утечкой памяти в дочерних процессах (что очень возможно например если вы используете нестабильную версию php).
Тэг(опция): KeepAlive и KeepAliveTimeout
KeepAlive позволяет делать несколько запросов в одном TCP-подключении. Это особенно полезно для html-страниц с большим количеством изображений. Если KeepAlive установлен в Off, то для самой страницы и для каждого изображения будет создано отдельное подключение (которое нужно будет обработать master-процессу), что плохо и для сервера и для клиента. Так что для подобных случаев рекомендуется устанавливать KeepAlive в On.
Для других применений (например для download-сервера) KeepAlive может быть бесполезен и даже вреден, т.к. при включенном KeepAlive сервер закрывает соединение не сразу, а ждет KeepAliveTimeout секунд нового запроса. Для того чтобы процессы не висели слишком долго в бесполезном ожидании, устанавливайте KeepAliveTimeout достаточно малым, около 5-10 секунд обычно достаточно.
KeepAlive on KeepAliveTimeout 5StartServers 2 MinSpareServers 2 MaxSpareServers 5 MaxClients 20 MaxRequestsPerChild 10000
Перезапускаем апач:
Немало сказано про безудержную прожорливость сервера БД MySQL! Даже по самым скромным подсчетам, - ядро демона использует свыше 256 МБ оперативной памяти. Имеет массу уязвимостей и периодически "падает". Но по своей производительности, широте применения и огромных возможностях в этом классе мало конкурентов. Дважды подумайте какая БД Вам нужна... Может не такая мощная как MySQL!? Нет... тогда ставим:
Если Вы хотите установить php4, обязательно укажите это установщику пакетов.
Кстати, при установке mysql 5 он «дёрнул» с зеркала «секьюрити» 50 МБ. Так что, – задумайтесь, прежде чем ставить)
Конфигурационный файл mysql расположен в /etc/mysql/my.cnf
Создание пользователей MySQL и изменение пароля суперюзера (root)
По умолчанию в Debian Etch mysql создает пользователя root без пароля. Установим пароль для пользователя mysql - root.
server:/# mysql
mysql> USE mysql;
mysql> UPDATE user SET Password=PASSWORD('new-password') WHERE user='root';
mysql> FLUSH PRIVILEGES;
Если Вы работаете в Lenny, то пароль для root-а у вас попросят при установке и можете вышеуказанные действия не производить.
Граждане! Не оставляйте пароль главного пользователя ROOT нашей БД пустым!!! Выберите его посерьёзнее и нигде больше не используйте. Для работы с отдельными базами создавайте отдельного пользователя, грамотно выбирайте нужные для него права (ничего лишнего!) и используйте всю мощь привилегий, предоставляемых сервером БД MySQL. Однако сразу скажу - из консоли рядовому пользователю это сделать ой как не просто! Но для решения всех задач есть хорошее решение, написанное на языке PHP - Webmin и phpmyadmin. Установкой этих двух программ завершаем настройку нашего LAMP.
phpMyAdmin — веб-приложение с открытым кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования СУБД MySQL. phpMyAdmin позволяет через браузер осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных. Приложение пользуется большой популярностью у веб-разработчиков, так как позволяет управлять СУБД MySQL без непосредственного ввода SQL команд, предоставляя дружественный интерфейс.
Конфигурационный файл находится в /etc/phpmyadmin
Если вы работаете в Debian Etch, то после установки всего этого добра (здесь: phpmyadmin) не забудьте увязать его с апачем, для этого снова редактируем файл /etc/apache2/apache2.conf
Перезапускаем апач:
Если в Lenny – то он сам спросит у вас с чем увязывать)
Доступ к настроенному phpMyAdmin: http://localhost/phpmyadmin с сервера или http://server.ex/phpmyadmin из сети.
Поздравляю! MySQL и phpMyAdmin настроены. Берите и логиньтесь в эту чудо оболочку и создавайте новых пользователей и базы данных для ваших php скриптов.