- Установка и настройка LAMP Server
- 1. Установка LAMP
- 2. Настройка LAMP и установка дополнительных компонентов
- 2.1. Виртуальные хосты
- 2.1.1. Добавление нового виртуального хоста
- 2.1.1.1. Создать конфиг
- 2.1.1.2. Сделать хост активным
- 2.1.1.3. Прописать домен
- 2.1.1.4. Написать сайт
- 2.2. PhpMyAdmin
- 2.3. Настройки php.ini
- 2.3.1. Вывод PHP-ошибок.
- 2.3.2. Изменение ограничений на загрузку файлов.
- 3. Когда LAMP больше не нужен
- 3.1. Удаление LAMP
- Установка LAMP на Windows Subsystem Linux (WSL). Прощай XAMPP, WAMP и прочее.
- Начало работы с LAMP после автоматической установки из рецепта
Установка и настройка LAMP Server
Инструкций по установке 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 с таким содержимым:
Он будет доступен по такому адресу: 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 и содержит это:
ServerName test.dev
DocumentRoot /var/www/test
Этот конфиг сокращён до крайнего минимума. Его можно расширить другими директивами, но для тестового хоста этого достаточно. Для полноценной работы лучше создать нечто такое:
ServerName test.dev
DirectoryIndex index.php
DocumentRoot /var/www/test
Options Indexes FollowSymLinks MultiViews
Require all granted
Order allow,deny
Allow from all
AllowOverride All
ErrorLog $
CustomLog $
Логи по умолчанию хранятся в папку /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 эту строку:
2.1.1.4. Написать сайт
В папку /var/www/test нужно поместить что-то вебовское. Пусть это будет index.php с таким содержимым:
Теперь по адресу 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 выставить следующие значения:
Значение error_reporting можно делать составным, например E_ALL &
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
Установка LAMP на Windows Subsystem Linux (WSL). Прощай XAMPP, WAMP и прочее.
Добрый день друзья. В виду выхода большого обновления Windows в апреле 2017 под названием Creators Update невозможно не обратить внимание на обновление платформы Ubuntu Server которая стала доступна после Anniversary Update. И если там все было очень плохо, достаточное количество лагов, багов, одних только проблем с MySQL сервером была целая куча, фактически его невозможно было корректно запустить. Так же были значительные проблемы с работой SSH сервисов, которые по сути не позволяли корректно настроить подключение по SSH в подсистему Linux. Это было слишком критично, например для отладки кода используя современные IDE, такие как PHPStorm. Но в обновлении Creators Update произошли очевидные фундаментальные изменения в этом направлении.
Это обширная статья посвящена тому как корректно настроить полнофункциональный Web сервер для локальной разработки, под управлением Windows Subsystem Linux далее WSL в среде Windows 10
Итак, начнем с того, что в обновлении Creators Update платформа WSL прибывает уже на базе Ubuntu 16.04.1 с обновленной пакетной базой и целой кучей фиксов и улучшений после Anniversary Update. Список всех изменений можно посмотреть здесь https://msdn.microsoft.com/en-us/commandline/wsl/release_notes. Также наконец доработан терминал Ubuntu в Windows который называется Bash, он перестал глючит в разметке, стал более стабилен. Визуально ничего не изменилось, но те кто использовал его в Anniversary почувтсвует разницу.
Теперь давайте попытаемся установить типичный Ubuntu like LAMP стек и посмотреть как он там работает и себя чувтсвует.
Предусловие: У Вас должна быть установлена WSL в системе.
Как это сделать описано тут: http://freshnotes.org/ustanovka-windows-subsystem-linux/
ПОДГОТОВКА WSL.
- Если мы напишем команду lsb_release -a мы увидим что у нас на борту Ububtu 16.04.1 На момент написания статьи уже доступен второй корректирующий релиз для Ubuntu, по этому сразу обновимся до него используя следующие команды:
УСТАНОВКА APACHE2 (WSL).
Открываем bash консоль и выполняем команду
УСТАНОВКА MYSQL SERVER (WSL).
В консоли bash пишем команду
УСТАНОВКА PHP 5.6 (WSL).
В консоли bash выполняем следующие команды:
УСТАНОВКА TASKSEL (WSL)
В консоли bash пишем команду:
УСТАНОВКА SSH СЕРВЕРА:
Выполняем команду:
УСТАНОВКА EMAIL СЕРВЕРА POSTFIX:
Выполняем команду:
На этом этапе заканчиваем с установками. Теперь у нас на борту есть базовый набор для разработки Web Приложений (Apache, MYSQL, PHP, SSH, Email Server)
Теперь мы можеи в любом установленом браузере в системе перейти по адресу http://localhost/ и что мы увидим :
Далее самое интересное. Пробуем все это запустить.
Выполняем по очереди следующие команды:
Видим определенное количество ошибок, а именно:
Со стороны Apache — Invalid argument: AH00076: Failed to enable APR_TCP_DEFER_ACCEP
Cо стороны MySQL — No directory, logging in with HOME=/
Со стороны SSH —
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_dsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
Со стороны POSTFIX — postfix: Postfix is running with backwards-compatible default settings
Не спешите с выводами. Давайте разберемся что это вообще такое и как это исправить.
Исправляем APACHE (WSL)
На самом деле ошибка Invalid argument: AH00076: Failed to enable APR_TCP_DEFER_ACCEP имеет отношение исключительно к среде в которой запущена Ubuntu 16.04 Server под WSL и адресует конкретно на процесс upstream. Как нам известно на данный момент WSL не поддерживает upstream, да все сервисы нам нужно будет запускать самостоятельно каждый раз после перезагрузки устройства. Вполне сомнительная проблема которая не создает вообще ничего. Решается достаточно просто, добавлением параметра в конфиг Apache. В консоли открываем файл:
В конец файла добавляем параметр :
Должно получится так:
После этого перезапускаемся и убеждаемся что более Apache не выводит эту ошибку.
ИСПРАВЛЯЕМ MYSQL (WSL).
Команда разработчиков Bash On Linux в промежутке между Anniversary и Creators обновлениями очень много внимания уделили работе нативного сервера MySQL в среде WSL что очень позитивно сказалось на стабильности и отсутствии фантомных ошибок конфигурации и прочей ерунды которая фактически ставила в тупик корректную работу нативного сервера баз данных в среде WSL.
Ошибка MySQL сервера No directory, logging in with HOME=/ означает то, что MySQL пыталась создать папку для своих пользователей в папке home , но получила отказ, вероятно по пермишинам папки . Но это в корне не правильно, потому что папка home должна быть предназначена исключительно для физических пользлвателей но никак не для фиктивных пользователей mysql. Решаем эту проблему путем смены пути к этой папке в папку mysql.
- Останавливаем MySQL сервер
- Меняем домашнюю директорию MySQL с несуществующего на исходную директори, где она и должна быть:
- Запускаем MySQL сервер и проверем отсутствие ошибки:
ИСПРАВЛЯЕМ SSH SERVER (WSL).
Здесь вообще все просто. По непонятным мне причинам в штатной сборке Ubuntu Server от Canonical для WSL, openssh-server установлен не полностью. Соответственно не сгенерированы дефолные ssh ключи. Проблема решается простой переустановкой сервера. Выполняем следующие команды в терминале:
Все, после этого ошибок связаных с ключами ssh сервера не будет, так как при повторной установки они сгенерятся как пололжено. Для проверки отсутствия ошибок можно выплнить рестарт сервера
ИСПРАВЛЯЕМ POSTFIX (WSL).
Эта ошибка мне не была понятна. Я даже не стал разбираться а просто отключил режим совместимости, как было указано в терминале следующими командами
Вот таким образом решаются все ошибки связанные с нативным LAMP стеком в Creators Update.
Результат перезапуска всех сервисов
На этом все. Любые вопросы или проблемы кидайте в коменты, будем разбираться.
Начало работы с LAMP после автоматической установки из рецепта
Рецепт LAMP можно установить на любой OpenVZ и KVM сервер с любым доступным дистрибутивом семейства Linux
В качестве сервера баз данных устанавливается ответвление MySQL — MariaDB .
После установки рецепта LAMP на VPS вам доступна командная строка к серверу, на котором установлена выбранная вами ОС, Apache, MySQL (MariaDB) и PHP.
Установите рецепт LAMP на сервер и подключитесь по VNC/SSH. Проверьте установленную версию веб-сервера, выполнив команду:
Проверьте, установлен ли сервер баз данных. Подключитесь к нему, выполнив команду:
При запросе введите пароль для root.
Если прошло успешное подключение к серверу баз данных, вы увидите в командной строке ответ “Welcome to the MariaDB monitor”.
чтобы отключиться от сервера баз данных и перейти к командной строке VPS.
Проверьте версию установленного PHP из командной строки. Выполните команду:
Если все команды выполнены успешно, то продолжайте работу с VPS через консоль, либо установите панель управления ISPmanager для упрощенного управления сервером.