Router Dir-320 DD-WRT + WWW + PHP + MySQL + PERL
From DD-WRT Wiki
Здесь я вам раскажу как настроить на роутере DIR-320 сайт с поддержкой PHP и MySQL.
Что нам понадобится?:
1) Роутер DIR-320(с установленной прошивкой DD-WRT) (Standard Generic | dd-wrt.v24_usb_generic.bin | 2009-10-10 | 3,21 MB) http://dd-wrt.com/routerdb/de/download/D-Link/DIR-320/A1/A2/dd-wrt.v24_usb_generic.bin/1964
2) Флешка 1 гигабайт(можно больше или меньше минимум 150(оптваре)+100(диск 2 так и непонял зачем)+100(Swap)+50(под сайт)=400)
3) Программа Putty(для подключения к роутеру через телнет)(на IP-адрес вашего роутера с портом 23)
4) Программа Acronis Disk Director Suite(для разбития и форматирования флешки)
Какие мы установим пакеты?:
optware (для установки программ)
lighttpd (веб-сервер)
php-fcgi (поддержка php)
microperl
phpmyadmin (База SQL с веб-админкой)
busybox (для Swap)
После установки прошивки заходим по адресу http://192.168.1.1/
видим рис1
если ероглифами страница нажимаем обновить
вводим новый Логин в "Router Username"
вводим новый пароль в "Router Password"
повторяем пароль в "Re-enter to confirm"
переходим на вкладку "Administration" ищем "Language Selection" в "Language" выбираем "Russian" нажимаем "Apply Settings"
рис2
переходим на вкладку "Setup" и нажимаем обновить должен появится русский язык
настраиваем интернет вкладка "Установка" "Тип соединения WAN"
Флешка
Необходимо разбить флешку на 3 раздела (ext3, ext3, swap).(например программой Acronis Disk Director Suite)
Я разделял свою флешку в 1 гиг на 3 раздела:
1. EXT3 ~ 776,5 мегабайт
2. EXT3 ~ 102 мегабайт
3. SWAP ~ 102 мегабайт
Прочитал в другой статье: Самое главное, чтобы первый раздел был не менее 150 мегабайт, второй не менее 100мб, третий не менее 150мб.
Я зделал как мне удобно! (Главное чтоб все три раздела были основными)
рис3
если зделать только первый раздел главным а второй и третий логическим увидем такое.
рис 4
Подключаем флешку к роутеру
Идем на вкладку "Тех.обслуживание" ищем "Поддержка JFFS2" включаем "JFFS2" нажимаем "Применить"
рис5
Переходим на вкладку "Службы" раздел "USB"
включить все кроме "Поддержка USB 1.1 (UHCI)", "Поддержка USB 2.0", "Automatic Drive Mount".
нажать "Применить" произойдет перезагрузка.
рис6
Переходим на вкладку "Тех.обслуживание" раздел "Команды"
вставляем:
gpio disable 4
sleep 5
mount -o noatime /dev/scsi/host0/bus0/target0/lun0/part1 /jffs
mount -o noatime /dev/scsi/host0/bus0/target0/lun0/part2 /mnt
/opt/bin/busybox swapon /dev/scsi/host0/bus0/target0/lun0/part3
mount -o bind /jffs/opt /opt
/opt/etc/init.d/S80lighttpd start
/opt/etc/init.d/S70mysqld start
sleep 5
gpio enable 5
gpio enable 4
нажимаем кнопку "Сохрю параметры запуска" ждем пока перезагрузится роутер(должен погаснуть и загорется индикатор принтера)
подробнее:
gpio disable 4 --- включает индикатор боковой кнопки синего цвета
sleep 5 --- пауза 5 секунд
mount -o noatime /dev/scsi/host0/bus0/target0/lun0/part1 /jffs --- монтируем первый раздел jffs
mount -o noatime /dev/scsi/host0/bus0/target0/lun0/part2 /mnt --- монтируем второй раздел mnt
/opt/bin/busybox swapon /dev/scsi/host0/bus0/target0/lun0/part3 --- монтируем третий раздел под SWAP
mount -o bind /jffs/opt /opt --- монтируем папку opt
/opt/etc/init.d/S80lighttpd start --- запуск сервера lighttpd
/opt/etc/init.d/S70mysqld start --- запуск сервера mysql
sleep 5 --- пауза 5 секунд
gpio enable 5 --- включает индикатор принтера
gpio enable 4 --- выключает индикатор боковой кнопки синего цвета
Очень удобно вы видите когда начался запуск монтирования и когда закончился.
пишем:
gpio disable 3
sleep 5
/opt/etc/init.d/S80lighttpd stop
/opt/etc/init.d/S70mysqld stop
umount /opt
umount /mnt
umount /jffs
sleep 5
gpio disable 5
gpio enable 3
нажимаем кнопку "Save Shutdown" ждем пока перезагрузится роутер(должен погаснуть и загорется индикатор принтера)
подробнее:
gpio disable 3 --- включает индикатор боковой кнопки красного цвета
sleep 5 --- пауза 5 секунд
/opt/etc/init.d/S80lighttpd stop --- остановка сервера lighttpd
/opt/etc/init.d/S70mysqld stop --- остановка сервера mysql
umount /opt --- размонтируем папку
umount /mnt --- размонтируем второй раздел
umount /jffs --- размонтируем первый раздел
sleep 5 --- пауза 5 секунд
gpio enable 5 --- выключает индикатор принтера
gpio enable 3 --- выключает индикатор боковой кнопки красного цвета
Очень удобно вы видете когда начался запуск размонтирования и когда закончился
пишем:
/usr/sbin/iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
/usr/sbin/iptables -I INPUT 1 -p tcp --dport 21 -j ACCEPT
подробно:
/usr/sbin/iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT --- открываем внешний 80 порт
/usr/sbin/iptables -I INPUT 1 -p tcp --dport 21 -j ACCEPT --- открываем внешний 21 порт
нажимаем кнопку "Сохр. брандмауэр" ждем пока перезагрузится роутер(должен погаснуть и загорется индикатор принтера)
рис7
Смена порта Админки роутера, запускаем программу putty.exe
nvram set http_lanport=81
nvram commit
reboot
Теперь для входа в Админку роутера адрес http://192.168.1.1:81 , а порт 80 использовать для сайта.
Для возврата по-умолчанию:
nvram set http_lanport=""
nvram commit
reboot
ждем пока загорится индикатор принтера запускаем putty.exe
dmesg
ищем строки
Partition check:
/dev/scsi/host0/bus0/target0/lun0: p1 p2 p3
если есть продолжаем
mount -o noatime /dev/scsi/host0/bus0/target0/lun0/part1 /jffs
mount -o noatime /dev/scsi/host0/bus0/target0/lun0/part2 /mnt
mount -o bind /jffs/opt /opt
mkdir /jffs/opt
mount -o bind /jffs/opt /opt
смотрим чтоб было примонтированно /jffs /mnt /opt
mount
/dev/scsi/host0/bus0/target0/lun0/part1 on /jffs type ext3 (rw,noatime)
/dev/scsi/host0/bus0/target0/lun0/part2 on /mnt type ext3 (rw,noatime)
/dev/scsi/host0/bus0/target0/lun0/part1 on /opt type ext3 (rw,noatime)
если есть продолжаем
перезагружаем(если неперезагрузить то установка пройдет успешно но после загрузки пропадает папка "opt/share/www/phpmyadmin/" наверно копирует в память)
reboot
ждем пока загорится индикатор принтера запускаем putty.exe
wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O - | tr -d "\r" > /tmp/optware-install.sh
sh /tmp/optware-install.sh
export PATH=/opt/bin:/opt/sbin:$PATH
unset LD_LIBRARY_PATH
/opt/bin/ipkg-opt update
/opt/bin/ipkg-opt install lighttpd
/opt/bin/ipkg-opt install php-fcgi
/opt/bin/ipkg-opt install microperl
/opt/bin/ipkg-opt install phpmyadmin
reboot
смотреть папку www
ls -l /opt/share/www/
drwxr-xr-x 2 root root 4096 Oct 11 18:00 lighttpd
drwxr-xr-x 7 root root 4096 Oct 11 18:10 phpmyadmin
если есть продолжаем
vi /opt/var/log/lighttpd/error.log
смотрим лог lighttpd последние 2 строки
2010-10-11 18:13:08: (fdevent.c.41) event-handler linux-sysepoll failed, try to set server.event-handler = "poll" or "select"
2010-10-11 18:13:08: (server.c.1112) fdevent_init failed
vi /opt/etc/lighttpd/lighttpd.conf
нажимаем латинскую букву a и редактируем
- server.event-handler = "freebsd-kqueue" # needed on OS X
меняем
server.event-handler = "poll" # needed on OS X
меняем порт на 80
server.port = 80
открываем чтобы видеть папки
- dir-listing.activate = "enable"
меняем на
dir-listing.activate = "enable"
нажимаем Esc для выхода из редактирования
сохраняем фаил набрав:
:x
если вы неуверенны что надо сохранять вдруг чтото нето стерли нажмаем :q! и выходим без сохранения
перезагружаем
reboot
проверяем lighttpd
если видем "lighttpd server is running." идем дальше
проверяем PHP и базу MySQL
http://192.168.1.1/phpmyadmin/
если работает идем дальше
устанавливаем busybox
/opt/bin/ipkg-opt install busybox
перезагружаем
reboot
Чтобы изменить пароль к доступу MySQL в телнет введите строку:
/opt/bin/mysqladmin -u root password 'new-password'
Вместо new-password – введите новый пароль.
Пример: /opt/bin/mysqladmin -u root password 'root'
Это мы задали пароль root
если сменили пароль то надо ввести пароль на админку http://192.168.1.1/phpmyadmin/
vi /opt/share/www/phpmyadmin/config.inc.php
найти
$cfg['Servers'][$i]['password'] = ; // MySQL password (only needed
нажать латинскую букву а вписать пароль нажать Esc затем набрать :x
Чтоб в дальнейшем редактировать не через телнет настраиваем FTP
В админке роутера преходим на вкладку "Службы" раздел "NAS" включаем "ProFTPD"
Files Directory === /jffs
Allow Write === включить (запись, изменение файлов папок)
User Password List === тут пользователь и пароль через пробел
Anonymous Login (Read-only) === включит анонимного пользователя
Anonymous Home Sub-directory === указываем папку для анонимного пользователя например у меня /opt/share/www/files/ (ни в коем случае неоткрывайте папку /opt/share/www/ или еще глубже ибо все смогут смотреть пароли в конфигурационных файлах сайта)
рис8
ВСЕ:)
готовые файлы(lighttpd.conf) можно взять здесь http://files.alastanka.org.ua/
Обсуждение здесь http://www.dd-wrt.com/phpBB2/viewtopic.php?t=81374
С уважением ваш Shaman Demon Alastanka.Org.Ua