Решил настроить LAMP под Debian'ом.
LAMP — акроним, обозначающий набор (комплекс) серверного программного обеспечения, широко используемый во Всемирной паутине. LAMP назван по первым буквам входящих в его состав компонентов:
* Linux — операционная система GNU/Linux;
* Apache – веб-сервер;
* MySQL — СУБД;
* PHP — язык программирования, используемый для создания веб-приложений.
Акроним LAMP может использоваться для обозначения:
1.Инфраструктуры веб-сервера
2.Парадигмы программирования
3.Пакета программ
Хотя изначально эти программные продукты не разрабатывались специально для работы друг с другом, такая связка стала весьма популярной, в первую очередь из-за своей низкой стоимости (все её составляющие являются открытыми и могут быть бесплатно загружены из Интернета). Набор LAMP входит в состав большинства дистрибутивов GNU/Linux и предоставляется многими хостинговыми компаниями. (Взято с http:/ /ru.wikipedia.org).
1. Устанавливаю apache и php - 'apt-get install apache2 php5 libapache2-mod-php5 php5-gd' если кто пожелает использовать php4, ставит командой - 'apt-get install apache2 php4 libapache2-mod-php4 php4-gd'.
Конфигурационные файлы Apache находятся по пути '/etc/apache2/apache2.conf', а папка веб-сайта по умолчанию - '/var/www'.
2. Проверяю корректность установленного php, для чего создаю файл test.php в папке /var/www - 'touch /var/www/test.php'. Затем радактирую созданный файл — 'nano /var/www/test.php' до следующего вида:
Просматриваю в браузере — 'http:\ \ip_setevoi_LAN\test.php' или http:\ \localhost\test.php', скрипт должен выдать подробную информацию о настройках php.
3. Настраиваю Apache,для чего редактирую файл — 'nano /etc/apache2/sites-enabled/000-default' В начале файла добавляю опции ServerAdmin и ServerName, а также нахожу опцию AllowOverride и измению её с значения None на All. Закомментировал RedirectMatch. Т.е. Получилось следующее:
NameVirtualHost *
ServerName "www.server.ex"
DocumentRoot /var/www/
AllowOverride None
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/
Далее исправляю кодировку по-умолчанию с UTF-8 на Windows-1251 — 'nano /etc/apache2/conf.d':
AddDefaultCharset Windows-1251.
4. А вот теперь довожу конфигурацию Apache «напильником» до ума, «обрезая» настройки по самое не хочу — 'nano /etc/apache2/apache2.conf':
KeepAlive on
KeepAliveTimeout 5
MinSpareServers 2
MaxSpareServers 5
MaxClients 20
MaxRequestsPerChild 10000
Настройки достаточны для локальной сети из 30 машин исключительно для просмотра статистики. Если кому-то понадобятся другие настройки надеюсь приведенная ниже информация позволит лучше разобраться в настройках.
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 секунд обычно достаточно.
5. Перезапускаю Apache - '/etc/init.d/apache2 force-reload'
6. Устанавливаю MySQL - 'apt-get install mysql-server mysql-client php5-mysql' или 'apt-get install mysql-server mysql-client php4-mysql' для php4.
7. По умолчанию mysql создает пользователя root без пароля. Установил пароль для пользователя root.
server:/# mysql
mysql> USE mysql;
mysql> UPDATE user SET Password=PASSWORD('пароль') WHERE user='root';
mysql> FLUSH PRIVILEGES;
8. Устанавливаю phpMyAdmin - 'apt-get install phpmyadmin', который ставится в папку - '/etc/phpmyadmin'.
phpMyAdmin — веб-приложение с открытым кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования СУБД MySQL. phpMyAdmin позволяет через браузер осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных. Приложение пользуется большой популярностью у веб-разработчиков, так как позволяет управлять СУБД MySQL без непосредственного ввода SQL команд, предоставляя дружественный интерфейс. (Взято с http:/ /ru.wikipedia.org).
У меня в дистрибутиве Lenny phpMyAdmin сам подключился модулем к Apache. Возможно в дистрибутиве Etch придется подключить его руками, для чего надо редактировать файл 'nano /etc/apache2/apache2.conf', дописав в конце конфига:
Include /etc/phpmyadmin/apache.conf
9. Перезапускаю Apache - '/etc/init.d/apache2 restart'.
Доступ к настроенному phpMyAdmin можно осуществить набрав в браузере 'http:/ /localhost/phpmyadmin' с сервера.
PS. У меня на работе отсутствует статический IP для входа на сервер с Interneta, а пользователи выходят в интернет через Squid, т.е. Если кто-то из пользователей захочет войти в LAMP набрав IP сервера, его запрос будет отправлен по 80 портому в Squid который в свою очередь вернет ответ что хост не найден. Пришлось поправить настройки Apache, заставив его обрабатывать запросы по порту 8080, и создать виртуальный хост.
Отрадактировал файл 'nano /etc/apache2/httpd.conf' прописав в нем:
Listen 8080
т.е. указал чтоы Apache слушал порт 8080.
Я создал файл с настройками виртуального хоста 'touch /etc/apache2/sites-enabled/@statistica.conf' следующего содержания — 'nano /etc/apache2/sites-enabled/@statistica.conf':
DocumentRoot /var/www/
ServerName server.ex
Order allow,deny
allow from all
Далее включаю обработку виртуального хоста в Apache – 'nano /etc/apache2/apache2.conf' добавив:
Include /etc/apache2/sites-enabled/
Теперь чтобы из локальной сети попасть на созданный хост нужно набрать в браузере 'http:/ /192.168.0.1:8080' или 'http:/ /server.ex:8080'.
PSPS. Все манипуляции описанные в PS. производились в дистрибутиве Lenny.
1 комментарий:
Оформление блога ужасное! читать не возможно! а статья помогла.
Отправить комментарий