понедельник, 27 февраля 2012 г.

LAMP server под ubuntu 10.04 и не только!


В связи с тем что уже реально заколебался каждый раз напрягать мозг и гуглить когда надо прикрутить «Лампу» решил сделать заметку для себя. Инфы в инетах много, но реально «стоящей» мало...
LAMP server — аббревиатура: Linux, Apache, MySQL, PHP/Perl/Python (плюс, сюда часто добавляют Ruby On Rails).
Устанавливается достаточно просто, можно при помощи одной команды:
$ sudo apt-get install lamp-server^

но это довольно тупо и как показала практика неэффективно... (для профессиональных танцоров с бубном подойдёт, ну или сервер планируется «не замысловатый»). А так...
  1. Linux — как установить и правильно настроить сервер на Linux надо отдельную статейку создавать, предполагается что он есть! (ubuntu 10.04 рулит!)
  2. Apache. Установка веб-сервера Apache довольно проста:
$ sudo apt-get install apache2
  1. PHP. Не забываем модуль для работы с мускулом:
$ sudo apt-get install php5 libapache2-mod-php5 php5-mysql
хотя на много лучше:
$ sudo apt-get install libapache2-mod-php5 libapache2-mod-ruby php5 php5-common php5-curl php5-dev
php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming
php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

последняя команда добавит модули PHP. Занимает не так много места, но мало ли что в жизни случиться...

(После данной операции, объём занятого дискового пространства возрастёт где-то на 60MB, но зато готовы ко всем превратностям судьбы). Если стрёмно или впадлу, но требуются дополнительные модули PHP, то полный список пакетов доступных в репозитарии, можно получить, введя
$sudo apt-cache search php5
  1. Пакеты для «мускула» устанавливаются командой:
$ sudo apt-get install mysql-server mysql-client

В процессе установки должен появиться запрос на ввод пароля администратора базы данных. Если установку прошла в тихом режиме (а такого я ни разу не встречал!), не задавая вопросов, то надыть установить пароль root вручную:
$ sudo mysqladmin -u root password пароль

После данной операции, объём занятого дискового пространства возрастёт ещё на 50MB
ну типо всё... а нет!
$ sudo /etc/init.d/apache2 restart
(для деликатного ребута : $ sudo /etc/init.d/apache2 reload)

Проверить что у на выхлопе получилось необходимо так:
Набираем в браузере строку http://localhost, – в ответ мы должны увидеть надпись «It works! и бла-бла-бла». Чтобы проверить работу PHP, создаем файл test.php и пробуем к нему обратиться:
$ sudo echo '<?phpinfo()?>' > /var/www/test.php
и в браузере http://localhost/test.php
В ответ появиться таблица с настройками PHP. Если вместо счастья ахинея типа «404» или вообще ошибка, следует просмотреть логи веб-сервера, расположенные в каталоге /var/log/apache2. Тут как правило багатенно информативных подсказок и косяки озвучиваются.
  1. web-сервер без виртуальных хостов (создания нескольких сайтов для одного ip-шника) - «унылость» и провокация (с возможностью наживы для разработчика в будущем!) Поэтому кратко:
Существует 2 папки - /etc/apache2/sites-available — там список потенциально возможных сайтов, и /etc/apache2/sites-enabled — тут рабочие сайты.
В папке sites-available есть готовый шаблон как правильно оформить виртуальный хост (его лучше оставить как памятку на будущие). На базе этого шаблона надо создать новый файл с таким содержанием:
<VirtualHost *:80>
ServerAlias Алиас_сайта #будет отдельная статья (указывать не обязательно, также рулится на уровне доменных имён)
ServerAdmin webmaster@localhost #мыло админа ;)
ServerName site1.lg.ua # имя сайта
DirectoryIndex index.php index.html index.htm # порядок поиска индексных файлов
DocumentRoot /var/www/site1.lg.ua # путь (любой) к папке с сайтом 

<Directory>

<Directory /var/www/site1.lg.ua> # настройка доступа для директории
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
…..
ErrorLog /var/log/apache2/error.log # лог ошибок
# Possible values include: debug, info, notice, warn, error, crit,alert, emerg.
LogLevel debug #логировать все ошибки и предупреждения 
CustomLog /var/log/apache2/access.log combined # лог доступа

</virtualHost>

Все каталоги указанные в этом конфиге должны быть созданы в ручную, а название сайта продублировано в /etc/hosts!
О! Чтобы сайт включить необходимо после всех вышеозначенных манипуляций воспользоваться командой
#a2ensite /etc/apache2/sites-available/имя_сайта

Чтобы выключить соответсвенно
#a2dissite /etc/apache2/sites-available/имя_сайта

Ну или прибить в папке sites-enabled одноимённый конфиг.
Пы.Сы. При первом запуске веб-сервера в консоли выводится сообщение о том, что Апач не может определить доменное имя данного хоста:

«apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName»
ну или как-то так.... Это не проблема, но реально кумарит! Чтобы его убрать, следует установить значение переменной ServerName в apache2.conf. (Иногда эта настройка вынесена в отдельный файл /etc/apache2/conf.d/fqdn).
ServerName пофиг-что

Пы.Пы.сы. Имеет смысл сразу поставить phpmyadmin... Веб-сервер работает с правами пользователя: USER=www-data GROUP=www-data
Основные конфигурационные файлы LAMP в Ubuntu
  • /etc/network/interfaces – настройка сетевых интерфейсов
  • /etc/hostname – сетевое имя узла
  • /etc/hosts – соответствие имени и IP (локальный DNS)
  • /etc/resolv.conf – IP-адреса DNS-серверов
  • /etc/apt/sources.list – используемые APT-репозитарии пакетов
  • /etc/mysql/my.cnf – настройка MySQL
  • /etc/apache2 – каталог с конфигурационными файлами веб-сервера
  • /etc/apache2/apache2.conf – основной файл настройки Apache
  • /etc/apache2/conf.d/fqdn – имя (ServerName) веб-сервера по дефолту
  • /etc/apache2/envvars – основные переменные Apache
  • /etc/apache2/sites-available/default – сайт по-умолчанию
  • /etc/php5 – файлы настроек PHP5


Большинство взято от сюда: http://www.xakep.ru/magazine/xa/120/120/1.asp ну и из личного опыта (само собой).

1 комментарий:

  1. Огромное спасибо за статью. После всех настроек описаных у Вас всё стало работать

    ОтветитьУдалить