Привет, читатели. В данный момент, в свое свободное время я изучаю 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.
Удачной настройки. Задавайте свои ответы.
Хорошая статья 😉
Еще напиши про установку 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 адресу сетевого интерфейса вашей виртуальной машины, ну и конечно же сам компьютер должен быть настроен и входить в единую сеть с виртуальной машиной.
Очень крутой туториал, спасибо! Счас вот настроил и писаюсь от счастья. И даже шустрее чем руби устанавливать!
Пожалуйста, рад что помог.
Почему может не открывать второй сайт заходит только на main
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
на второй сайт ????
Причин может быть много. Уверены что делали по инструкции все?
Кстати, зацените мой блог на английском.
У меня вообще сервер Фаталил ошибки и на сайт не заходил. Делал всё по инструкции
Скиньте ошибку подробнее, если еще актуально.
И кстати, зацените мой английский блог в шапке сайта.