
Инструкций по установке 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 требуются права администратора, поэтому на выбор:
- Открыть редактор под правами администратора
- Выставить папке права на запись всем
sudo chmod -R 777 /var/www
- Переопределить владельца папки
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.
После установки он должен стать доступным по адресу localhost/phpmyadmin. Если не доступен, то это тоже вполне нормально: нужно открыть файл /etc/apache2/apache2.conf, добавить в него строку "Include /etc/phpmyadmin/apache.conf" и перезагрузить apache2. После этого он станет доступным.
Пароль для входа задавался при установке LAMP, пользователь root.
2.3. Настройки php.ini
Находится этот файл конфигурации здесь: /etc/php5/apache2/php.ini
2.3.1. Вывод PHP-ошибок.
По умолчанию не все ошибки выводятся, что плохо для разработки. Поэтому нужно в php.ini выставить следующие значения:
- display_errors = On
- log_errors = On
- error_reporting = E_ALL (или подберите по своим требованиям)
Значение 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