demon.pmi.basnet.by - авторская страница разработчика сайтов.

Установка Debian LAMP (Apache+PHP+MySQL)

Постановка задачи: LAMP — акроним, обозначающий набор (комплекс) серверного программного обеспечения, широко используемый во Всемирной паутине. LAMP назван по первым буквам входящих в его состав компонентов:
  • Linux — операционная система GNU/Linux;
  • Apache — веб-сервер;
  • MySQL — СУБД;
  • PHP — язык программирования, используемый для создания веб-приложений.
Замечание: Любая переписанная копия хуже оригинала, поэтому сошлюсь на оригинал статьи – http://www.mysql-apache-php.com/. Статья на английском. Моя статья - вольный перевод с практической реализацией и обходом подводных камней!

Установка Apache + PHP


Если вы хотите установить PHP4, используйте команду

server:/# apt-get install apache2 php4 libapache2-mod-php4

Для установки PHP5, вы можете явно указать '5' или не указывать вовсе, тогда PHP5 будет установлен автоматически (как более новая версия этого пакета).

server:/# apt-get install apache2 php5 libapache2-mod-php5

Конфигурационные файлы Apache находятся: /etc/apache2/apache2.conf, а папка вашего веб-сайта по умолчанию /var/www. Чтобы проверить корректность установленного php создайте файл test.php в вашей папке /var/www folder содержащей код phpinfo()

server:/# vim /var/www/test.php

# test.php
<?php phpinfo(); ?>

и просмотрите его в браузере http://ip.address/test.php or http://domain/test.php и этот скрипт выдаст вам подробные настройки вашего php


Подключение GD Library для языка PHP

Замучил СПАМ!? Хотите использовать капчу (CAPTCHA, картинка для роботов) для защиты от нежелательной корреспонденции или защитить свой форум от роботов-регистраторов? Тогда Вам потребуется поддержка в языке программирования php методов работы с графическими изображениями, так называемая связка php-gd. Установим её:

apt-get install php5-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 посредством директив .htaccess

Mod_rewrite предоставляет механизм динамического изменения запрашиваемых URL-ов. Так называется дополнительный модуль для популярного веб-сервера Apache, доля которого на рынке веб-серверов составляет более 70%. Для включения mod_rewrite, достаточно чтобы модуль mod_rewrite.so был загружен в Apache. Этот модуль содержится в стандартной поставке сервера. Но как правило, он обычно отключен.

Нижеследующая команда включает за нас модуль mod_rewrite в состав веб-сервера, обслуживающего Ваш веб-сайт, и допускается использование его директив в файлах .htaccess.

server:/# a2enmod rewrite

Снова посещаем тестовую страницу http://ip.address/test.php или http://domain/test.php и ищем там новую секцию Mod Rewrite

Замечу, чтобы директивы mod_rewrite можно было использовать, надо в файле httpd.conf (в соответствующем разделе "") прописать: AllowOverride all

server:/# vim /etc/apache2/sites-enabled/000-default

В начале файла добавляем опции 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

AddDefaultCharset 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 5


    StartServers          2
    MinSpareServers       2
    MaxSpareServers       5
    MaxClients            20
    MaxRequestsPerChild   10000


Перезапускаем апач:

server:/# /etc/init.d/apache2 force-reload
Forcing reload of web server (apache2)....

Установка MySQL Database Server

Немало сказано про безудержную прожорливость сервера БД MySQL! Даже по самым скромным подсчетам, - ядро демона использует свыше 256 МБ оперативной памяти. Имеет массу уязвимостей и периодически "падает". Но по своей производительности, широте применения и огромных возможностях в этом классе мало конкурентов. Дважды подумайте какая БД Вам нужна... Может не такая мощная как MySQL!? Нет... тогда ставим:

apt-get install mysql-server mysql-client php5-mysql

Если Вы хотите установить php4, обязательно укажите это установщику пакетов.

apt-get install mysql-server mysql-client php4-mysql

Кстати, при установке 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-а у вас попросят при установке и можете вышеуказанные действия не производить.


Пользователи MySQL, создание, привиолегии, безопасность

Граждане! Не оставляйте пароль главного пользователя ROOT нашей БД пустым!!! Выберите его посерьёзнее и нигде больше не используйте. Для работы с отдельными базами создавайте отдельного пользователя, грамотно выбирайте нужные для него права (ничего лишнего!) и используйте всю мощь привилегий, предоставляемых сервером БД MySQL. Однако сразу скажу - из консоли рядовому пользователю это сделать ой как не просто! Но для решения всех задач есть хорошее решение, написанное на языке PHP - Webmin и phpmyadmin. Установкой этих двух программ завершаем настройку нашего LAMP.


Установка PhpMyAdmin

phpMyAdmin — веб-приложение с открытым кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования СУБД MySQL. phpMyAdmin позволяет через браузер осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных. Приложение пользуется большой популярностью у веб-разработчиков, так как позволяет управлять СУБД MySQL без непосредственного ввода SQL команд, предоставляя дружественный интерфейс.

server:/# apt-get install phpmyadmin

Конфигурационный файл находится в /etc/phpmyadmin

Если вы работаете в Debian Etch, то после установки всего этого добра (здесь: phpmyadmin) не забудьте увязать его с апачем, для этого снова редактируем файл /etc/apache2/apache2.conf

Include /etc/phpmyadmin/apache.conf

Перезапускаем апач:

server:# /etc/init.d/apache2 restart

Если в Lenny – то он сам спросит у вас с чем увязывать)

Доступ к настроенному phpMyAdmin: http://localhost/phpmyadmin с сервера или http://server.ex/phpmyadmin из сети.

Поздравляю! MySQL и phpMyAdmin настроены. Берите и логиньтесь в эту чудо оболочку и создавайте новых пользователей и базы данных для ваших php скриптов.


Написать комментарий

  • Обязательные для заполнения поля помечены знаком *.