Установка apache, mysql, php, ftp на Debian GNU/Linux

Привет, читатели. В данный момент, в свое свободное время я изучаю php ради интереса. Поэтому есть необходимость в испытании php-скриптов в «боевых» условиях. Многие советуют использовать сборку denver. Я предпочитаю устанавливать подобный софт на виртуальную машину, что бы не мусорить лишними службами/демонами на рабочем компьютере. Самый простой вариант установить apache + mysql + php + ftp. Для демонстрации поэтапной установки я создал виртуальную машину и установил в нее Debian GNU/Linux без каких-либо дополнительных программ. Только системные утилиты.

И так, если вас заинтересовала установка apache + mysql + php + ftp на девственно чистый Debian GNU/Linux, прошу под кат.

Для совсем новичков, желающих установить debian, есть статья. В ней я подробно описываю процесс установки Debian GNU/Linux в VirtualBox.

Возможно у вас возник вопрос: «А зачем нужен в этой связке вообще ftp?» Можно обойтись без него, на функционал веб-сервера и php интерпретатора это никак не скажется. Я лично настраиваю ftp для удобства работы с файлами на сервере. То есть что бы залить новый файл, можно использовать любой удобный ftp клиент.

Ну что ж, приступим. Для начала стоит обновить все пакеты в системе:

Примечание: если вы залогинились не из под root’а вам необходимо использовать программу sudo для выполнения этих команд, так как они требуют прав администратора.

Теперь можно установить нужные пакеты:

Во время установки mysql-server будет предложено ввести пароль для root: Так же proftpd предложит выбрать вариант конфигурации: Я выбрал standalone.

Когда установка завершена настроем наш apache2 так, что бы можно было держать два(или более) разных сайтов на одной машине. Для этого создадим для каждого сайта отдельные директории в папке /var/www/. Я буду использовать два сайта с именами maintest и secondtest, поэтому создам такие директории:

Не забудем так же создать файлы логов для каждого сайта:

После этого нужно настроить конфиг для каждого сайта. Перейдите в директорию /etc/apache2/sites-available/ командой:

Создайте в ней два файла с именами сайтов. Я сделал так:

Примечание: для удобства работы с файлами вы можете не использовать полный путь, а просто переходить в нужную папку с помощью команды cd, а уже оттуда пользоваться относительным путем. Так же можно использовать файловый менеджер mc.

Теперь нужно заполнить каждый файл настройками. Открываем в любом редакторе, я использовал nano и пишем:

Аналогичные операции нужно проделать и со вторым файлом, лишь заменив maintest на secondtest(ну или ваше название).

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

Теперь нужно активировать сайты. Кроме того я деактивирую стандартный конфиг, что бы клиенты могли получать доступ только к /var/www/maintest или /var/www/secondtest. Делается это так:

Утилита a2ensite(apache2 enable site) активирует сайт, добавляя на него симлинк в папку /etc/apache2/sites-enabled, а утилита a2dissite(apache2 disable site) как вы уже догадались дективирует сайт. Кстати, если вам не нужны стандартные конфиги, вы можете их удалить командой:

Необходимо перезапустить apache2:

Теперь изменим файл hosts на рабочей машине. В windows он лежит в папке C:WindowsSystem32driversetc, а в linux — /etc/. У меня в результате на windows машине получился такой файл:

После перезагрузки проверим как все работает, и как себя чувствует php. Для этого создадим два файла, один в /var/www/maintest/, а другой в /var/www/secondtest/. Оба назовем index.php:

Заполним каждый следующими строчками:

Потом попробуйте с вашей рабочей машины зайти на maintest или secondtest. Вы должны увидеть следующее: Если видите — значит все работает. Осталось настроить proftpd. Для использования ftp-сервера нам понадобится создать еще одного пользователя с ограниченными правами. Перед этим нужно открыть файл /etc/shells и добавить в конец строчку /bin/false. Пользователя создаем командой:

Где ftpuser — имя пользователя(можете выбрать свое), ftppass — пароль(выберете свой), /var/www — домашняя директория. Теперь можно приступить к редактированию конфига proftpd. Сделаем бекап стандартной конфигурации:

Теперь создаем новый конфиг и открываем его для редактирования вашим редактором. Если вы используете nano, тогда это можно сделать одной командой:

У меня получился следующий конфиг:

В принципе ничего сложного. Осталось перезапустить proftpd командой:

А так же не забудьте назначить права для папки /var/www/:

Все должно работать. Для проверки используйте любой файловый менеджер поддерживающий ftp или ftp клиент. Просто перейдите по ftp://maintest.

Для удобства работы с базой данный вы можете установить phpmyadmin:

Или использовать какой-нибудь SQL-клиент. Тогда нужно будет добавить в базу данных нового пользователя или существующего и разрешить ему соединение с внешней сети. Например следующая команда создаст нового пользователя с логином user и паролем password, разрешит ему все операции для всех баз данных, а так же соединение с любого хоста:

Подробнее можете почитать здесь. Кроме того понадобится отредактировать конфиг /etc/mysql/my.cnf, закоментировав строчку bind-address 127.0.0.1.

Удачной настройки. Задавайте свои ответы.

Комментарии 16

  • Хорошая статья 😉
    Еще напиши про установку smtp/pop3 сервера или о какой-то заглушке для того, чтобы можно было тестировать отправку почты с прикреплением файлов и т.д.

  • Спасибо. Ну если найду время — сделаю.

  • Спасибо огромное… а есть что-нибудь по поводу переноса сайта из денвера (windows) в LAMP. Ну вот есть папка с сайтом, + есть dump.sql (дамп базы данных)… создать виртуальный хост создал, а вот как прикрутить dump.sql?

    • Нужно импортировать базу данных в существующую mysql. Для этого можно например воспользоваться командой:

      mysql -p -u username database_name < file.sql,

      где username - имя пользователя БД, а database_name - имя базы данных, а file.sql собственно сам файл.

  • как запустить сервер после перезапуска машины????

    • Запускаю апач командой /etc/init.d/apache2 start, запускается, а сайт на сайте все равно белый лист открывается

      • Белый лист или ошибка? Если белый лист — то скорее всего вы просто ничего не написали в коде страницы, которую получает браузер при попадании на ваш сайт.

  • Отлично, спасибо.
    Почему-то каждый раз приходится заново настраивать. Интересно, нет сборок, где всё включено, и «по уму»?

  • Добрый день.
    А как сделать, чтобы сайты, созданные в дебиане на виртуалке, были доступны на рабочей машине в win7.
    В hosts в винде добавил записи, перезагрузился, но не работает. Вообще не находит такого адреса.
    Или там не обязательно должен быть IP 192.168.1.102?

    • Зависит от того, как у вас настроена сеть между компьютером и виртуальной машиной. IP сайтов в файле hosts должен соответствовать IP адресу сетевого интерфейса вашей виртуальной машины, ну и конечно же сам компьютер должен быть настроен и входить в единую сеть с виртуальной машиной.

  • Очень крутой туториал, спасибо! Счас вот настроил и писаюсь от счастья. И даже шустрее чем руби устанавливать!

  • localhost/secondtest
    localhost/maintest

    Not Found

    The requested URL /secondtest was not found on this server.

    Apache/2.2.22 (Debian) Server at 192.168.1.98 Port 80

    не работает работает только localhost и открывает maintest
    на второй сайт ????

  • У меня вообще сервер Фаталил ошибки и на сайт не заходил. Делал всё по инструкции

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *