Установка и настройка LAMP Server

Установка и настройка LAMP Server

iSergium

Инструкций по установке LAMP полно, по настройкам тоже немало. Полных же инструкций как-то совсем мало - при установке и настройке LAMP приходилось пользоваться несколькими, включая stackoverflow и т.п. Эта статейка станет попыткой собрать всё вместе. Консольные команды будут предоставлены для Ubuntu и других Debian-дистрибутивов.

1. Установка LAMP

Удобнее и быстрее всего это делается с помощью Tasksel. Т.к. он не установлен в систему по умолчанию, то его тоже придётся установить:

sudo apt-get install tasksel
sudo tasksel install lamp-server

Все опции при установке желательно оставлять по умолчанию, кроме пароля для MySQL-пользователя - его лучше не оставлять пустым.

Вот как бы и всё, localhost после этого должен заработать. Если не заработал, то перезапуск apache должен помочь:

sudo service apache2 restart

Примечание. Сервис Apache будет запускаться вместе с системой. Если вдруг это вызывает какие-то неудобства, то можно отключить его автозагрузку:

sudo update-rc.d -f apache2 disable

Запускать / останавливать сервис придётся вручную:

sudo service apache2 start
sudo service apache2 stop

2. Настройка LAMP и установка дополнительных компонентов

2.1. Виртуальные хосты

По умолчанию после установки LAMP доступен лишь один виртуальный хост, он доступен по адресу localhost. Настройки виртуальных хостов находятся в /etc/apache2/sites-available, среди них находится 000-default.conf (название в различных сборках может немного отличаться). В его DocumentRoot указана папка, в которой хранится показываемый в localhost сайт, обычно это /var/www или /var/www/html. Чтобы узнать конфигурацию PHP в этой папке нужно создать, например, info.php с таким содержимым:

<?php phpinfo();

Он будет доступен по такому адресу: localhost/info.php.

Для создания файлов в папке /var/www требуются права администратора, поэтому на выбор:

  1. Открыть редактор под правами администратора
  2. Выставить папке права на запись всем
    sudo chmod -R 777 /var/www
  3. Переопределить владельца папки
    sudo chown -R $USER:$USER /var/www

2.1.1. Добавление нового виртуального хоста

Для примера нужно сделать сайт, который хранится в /var/www/test и доступен по URL test.dev.

2.1.1.1. Создать конфиг

В папке /etc/apache2/sites-available создать файл, пусть он называется test.conf и содержит это:

<VirtualHost *:80>
    ServerName test.dev
    DocumentRoot /var/www/test
</VirtualHost>

Этот конфиг сокращён до крайнего минимума. Его можно расширить другими директивами, но для тестового хоста этого достаточно. Для полноценной работы лучше создать нечто такое:

<VirtualHost *:80>
    ServerName test.dev
    DirectoryIndex index.php
    DocumentRoot /var/www/test
    <Directory /var/www/test>
        Options Indexes FollowSymLinks MultiViews
        Require all granted
        Order allow,deny
        Allow from all
        AllowOverride All
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Логи по умолчанию хранятся в папку /var/log/apache2.

2.1.1.2. Сделать хост активным

Все имеющиеся хосты можно делать активными и неактивными с помощью команд a2ensite и a2dissite.

sudo a2ensite test
sudo a2dissite test

В параметре нужно указывать название conf-файла, в данном примере это test. После этих команд требуется перезагрузка apache2:

sudo service apache2 restart

2.1.1.3. Прописать домен

Добавить в файл /etc/hosts эту строку:

127.0.1.1 test.dev

2.1.1.4. Написать сайт

В папку /var/www/test нужно поместить что-то вебовское. Пусть это будет index.php с таким содержимым:

<?php echo phpversion();

Теперь по адресу test.dev показывается версия PHP. Разумеется, можно выводить что-то более полезное, но для теста достаточно.

2.2. PhpMyAdmin

Это веб-приложение не является обязательным, но в рамках этой статьи на него возложена миссия проверить работу MySQL-сервера. Ну и, дополнительно, это один из лучших MySQL-клиентов, поэтому стоит упоминания.

Его можно скачать, но проще установить:

sudo apt-get install phpmyadmin

Все настройки оставить по умолчанию и ввести пароль MySQL-пользователя root, введённый при установке LAMP.

phpmyadmin install

После установки он должен стать доступным по адресу localhost/phpmyadmin. Если не доступен, то это тоже вполне нормально: нужно открыть файл /etc/apache2/apache2.conf, добавить в него строку "Include /etc/phpmyadmin/apache.conf" и перезагрузить apache2. После этого он станет доступным.

Пароль для входа задавался при установке LAMP, пользователь root.

phpmyadmin

2.3. Настройки php.ini

Находится этот файл конфигурации здесь: /etc/php5/apache2/php.ini

2.3.1. Вывод PHP-ошибок.

По умолчанию не все ошибки выводятся, что плохо для разработки. Поэтому нужно в php.ini выставить следующие значения:

Значение error_reporting можно делать составным, например E_ALL & ~E_DEPRECATED & ~E_STRICT.

2.3.2. Изменение ограничений на загрузку файлов.

Выставленных по умолчанию ограничений почти никогда не достаточно, потому их приходится увеличивать. Перечисленные ниже директивы скорее всего придётся увеличить под Ваши требования.

  • upload_max_filesize
    Максимальный размер загружаемого файла, по умолчанию 2 МБ
  • post_max_size
    Устанавливает максимально допустимый размер данных, отправляемых методом POST, по умолчанию 8 МБ. Это значение также влияет на загрузку файлов. Для загрузки больших файлов это значение должно быть больше значения директивы upload_max_filesize
  • memory_limit
    Эта директива задает максимальный объем памяти в байтах, который разрешается использовать скрипту, по умолчанию 128 МБ. Это помогает предотвратить ситуацию, при которой плохо написанный скрипт съедает всю доступную память сервера. Для того, чтобы убрать ограничения, установите значение этой директивы в -1. Memory_limit должна быть больше чем post_max_size.
  • max_file_uploads
    Максимально разрешенное количество одновременно загружаемых файлов, по умолчанию 20 файлов.

Описание директив взято с php.net.

3. Когда LAMP больше не нужен

3.1. Удаление LAMP

Tasksel не является частью LAMP, но его тоже можно удалить, если установка каких-либо групповых пакетов не планируется.

sudo tasksel remove lamp-server
sudo apt-get remove tasksel

 Дополнительно: