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

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

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 и пишем:


ServerName maintest
DocumentRoot /var/www/maintest
ErrorLog /var/log/apache2/maintest-error.log

Аналогичные операции нужно проделать и со вторым файлом, лишь заменив 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
Заполним каждый следующими строчками:


Потом попробуйте с вашей рабочей машины зайти на 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 [email protected]»%»
IDENTIFIED BY ‘password’ WITH GRANT OPTION;
Подробнее можете почитать здесь. Кроме того понадобится отредактировать конфиг /etc/mysql/my.cnf, закоментировав строчку bind-address 127.0.0.1.

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