Jednym z głównych elementów OpenWrt jest busybox, który zawiera wbudowany już prosty serwer www.
Listę dostępnych opcji można uzyskać po wydaniu polecenia
httpd -h
Aby udostępnić zasoby wystarczy wydać polecenie:
httpd -h /mnt/disck0_1 -p 8080
- udostępnienie katalogu /mnt/disck0_1 na porcie 8080.
UWAGA: na porcie 80 najprawdopodobniej jest już uruchomiony interfejs webif, należy podać więc inny port (w przykładzie: 8080).
W tym katalogu należy również umieścić plik index.html zawierający listę udostępnionych zasobów
W przypadku udostępnienia zasobów z zewnątrz należy dodać odpowiednie reguły do pliku /etc/firewall.user
echo "iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 8080 -j ACCEPT" >> /etc/firewall.user echo "iptables -A input_rule -i $WAN -p tcp --dport 8080 -j ACCEPT" >> /etc/firewall.user
Często myślimy o instalacji serwera www wraz z obsługą php. Prostym serwerem spełniającym te wymagania jest lighttpd, którego w dość łatwy sposób można zintegrować z PHP. Zaleca się zainstalowanie pakietów na dysku zewnętrznym, gdyż zajmują one sporo miejsca.
opkg install lighttpd opkg install lighttpd-mod-cgi opkg install lighttpd-mod-status opkg install php5 opkg install php5-cgi opkg install php5-mod-gpd
Razem z tym powinny się zainstalować następujące biblioteki: libopenssl, libpcre, libpthread, libsqlite3, libxml2, zlib, libgd, libjpeg, libpng.
Konieczne jest edytowanie pliku
nano /etc/init.d/httpd
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=50
start() {
include /lib/network
scan_interfaces
config_get ifname wan hostname
[ -d /www ] && httpd -p 81 -h /www -r ${hostname:-OpenWrt}
}
stop() {
killall httpd
}
Następnie w konsoli ssh wpisujemy:
killall -9 httpd /etc/init.d/httpd start
Jeżeli nie korzystamy z X-Wrt można wogóle wyłączyć domyślny busybox'owy serwer http
/etc/init.d/httpd disable
Tworzymy teraz katalog w którym będą znajdowały się nasze stronki 'www': (w tym przypadku dysk zamontowany na /hdd)
mkdir /hdd/www chmod 777 /hdd/www
Kolejnym krokiem jest odpowiednia konfiguracja zarówno php, jak i lighttpd.
nano /etc/php.ini
zmiany dokonujemy takie same jak powyżej.
A w pliku '/etc/lighttpd.conf':
server.modules = ( # "mod_rewrite", # "mod_redirect", # "mod_alias", # "mod_auth", "mod_status", # "mod_setenv", # "mod_fastcgi", # "mod_proxy", # "mod_simple_vhost", "mod_cgi", # "mod_ssi", # "mod_usertrack", # "mod_expire" ) server.document-root = "/hdd/www/" server.errorlog = "/var/log/lighttpd/error.log" index-file.names = ( "index.php", "index.html", "default.html", "index.htm", "default.htm" ) server.dir-listing = "enable" cgi.assign = ( ".php" => "/usr/bin/php" ) #dla Whiterussian cgi.assign = ( ".php" => "/usr/bin/php-cgi" ) #dla Kamikaze #### status module status.status-url = "/server-status" status.config-url = "/server-config"
Tworzymy plik phpinfo:
cat > /www/phpinfo.php <?php phpinfo(); ?> <CTRL+C>
Możemy sprawdzić już trudy naszej prace poprzez:
http://192.168.1.1/phpinfo.php http://192.168.1.1/server-status http://192.168.1.1/server-config