Установка 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 клиент.

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

aptitude update && aptitude upgrade

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

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

aptitude install apache2 php5 php5-mysql mysql-server proftpd

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

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

mkdir /var/www/maintest
mkdir /var/www/secondtest

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

touch /var/log/apache2/maintest-error.log
touch /var/log/apache2/secondtest-error.log

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

cd /etc/apache2/sites-available

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

touch maintest
touch secondtest

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

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

<VirtualHost *:80>
    ServerName maintest
    DocumentRoot /var/www/maintest
    ErrorLog /var/log/apache2/maintest-error.log
</VirtualHost>

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

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

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

a2ensite maintest
a2ensite secondtest
a2dissite default

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

rm /etc/apache2/sites-available/default* -R

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

/etc/init.d/apache2 restart

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

192.168.1.102 maintest
192.168.1.102 secondtest

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

touch /var/www/maintest/index.php
touch /var/www/secondtest/index.php

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

<?php
  print_r (phpinfo());
?>

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

useradd ftpuser -p ftppass -d /var/www -s /bin/false

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

mv /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf_backup

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

nano /etc/proftpd/proftpd.conf

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

#Разрешение на перезапись
Allowoverwrite			on

#Авторизация только по алиасам пользователя
AuthAliasOnly			on

#Алиас для пользователя
UserAlias				admin ftpuser

#Имя сервера
ServerName				"server-lamp-debian"

#Тип сервера
ServerType				standalone

#Пользователь и группа под которыми будет запущен сервер
User					nobody
Group					nogroup

#Задержка привествия
DeferWelcome			on

#Использование по умолчанию
DefaultServer			on

#Логин из под рута
RootLogin				off

#Файлы логов
ExtendedLog				/var/log/proftpd/ftp.log
TransferLog				/var/log/proftpd/xfer.log
SystemLog				/var/log/proftpd/system.log

#Использования файла /etc/ftpusers
UseFtpUsers				off

#Разрешить перезагрузку хранилища
AllowStoreRestart 		on

#Порт
Port					21

#Дефолтная папка
DefaultRoot				/var/www/

#Запрещаем выход за пределы домашней папки
DefaultRoot				~

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

/etc/init.d/proftpd restart

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

chmod 777 /var/www/ -R

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

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

aptitude install phpmyadmin

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

GRANT ALL PRIVILEGES ON *.* TO user@"%"
    IDENTIFIED BY 'password' WITH GRANT OPTION;

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

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

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

  • Хорошая статья 😉
    Еще напиши про установку 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
    на второй сайт ????

    • Причин может быть много. Уверены что делали по инструкции все?

      Кстати, зацените мой блог на английском.

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

    • Скиньте ошибку подробнее, если еще актуально.

      И кстати, зацените мой английский блог в шапке сайта.

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

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