Tornado Web Server – MiniHowto

tornado-128x32  Serwis Facebook udostępnił na licencji Apache Licence, Version 2.0 serwer WWW o nazwieTornado Web Server. Wraz z    serwerem     zostały udostępnione narzędzia przy pomocy których powstała strona FriendFeed. Tornado potrafi obsługiwać tysiące jednoczesnych połączeń.

Aplikacja FriendFeed została napisana przy użyciu webowych frameworków podobnych do web.py oraz Google’s webapp.

Całość serwera została napisana w Pythonie. Do swojego działania wymagany jest Python 2.5 lub 2.6 oraz biblioteki PycURL oraz obsługi języka JSON na przykład dzięki simplejson.

Dokładniejszy opis Tornado, jego funkcji oraz zastosowań znajduję się tutaj, mój artykuł pokazuje podstawową konfigurację, sposob szybkiej instalacji i uruchomienia.

Instalacja przeprowadzana na Linux Mint 15:

Pobieramy potrzebne pakiety:

apt-get install python python-pip pycurl screen

Instalujemy Tornado Web Server

pip install tornado

Proces szybki, serwer malutki – teraz konfiguracja:

mkdir -p ~/website/{static,templates/layouts}
cd ~/website
wget -O application.py http://pliki.gru.one.pl/11-2013/application.py

Po pobraniu pliku application.py – można go wyedytować – znajdują się w nim podstawowe dan konfiguracyjne serwera Tornado, przygotowany przeze mnie plik wystarcza do uruchomienia serwera WWW.

Teraz plik index.html i 404.html. w index’ie znajduję się strona główna, a 404 będzie ładowane jeżeli użytkownik będzie próbował wczytać nie istniejącą zawartość

touch templates/index.html templates/404.html
echo 'Zapraszam na <a href="http://blog.linuxiarz.pl">gru.one.pl">' > templates/index.html
echo '<h1><b>404 - Not found</b>></h1>' > templates/404.html

Prawa uruchamiania do pliku application.py:

chmod +x application.py

I uruchomienie

python application.py

Teraz w przeglądarce powinien przywitać cię na porcie 8080, uruchomiony serwer www z wcześniej zdefiniowaną treścią.

Oczywiście port serwera i inne rzeczy można dowolnie zmieniać w pliku application.py.

#!/usr/bin/env python
## -*- coding: utf-8 -*-
import os
from mako import exceptions
from mako.lookup import TemplateLookup
import tornado.ioloop
import tornado.web
from tornado import httpclient

root = os.path.dirname(__file__)
template_root = os.path.join(root, 'templates')
blacklist_templates = ('layouts',)
template_lookup = TemplateLookup(input_encoding='utf-8',
 output_encoding='utf-8',
 encoding_errors='replace',
 directories=[template_root])

def render_template(filename):
 if os.path.isdir(os.path.join(template_root, filename)):
 filename = os.path.join(filename, 'index.html')
 else:
 filename = '%s.html' % filename
 if any(filename.lstrip('/').startswith(p) for p in blacklist_templates):
 raise httpclient.HTTPError(404)
 try:
 return template_lookup.get_template(filename).render()
 except exceptions.TopLevelLookupException:
 raise httpclient.HTTPError(404)

class DefaultHandler(tornado.web.RequestHandler):
 def get_error_html(self, status_code, exception, **kwargs):
 if hasattr(exception, 'code'):
 self.set_status(exception.code)
 if exception.code == 500:
 return exceptions.html_error_template().render()
 return render_template(str(exception.code))
 return exceptions.html_error_template().render()

class MainHandler(DefaultHandler):
 def get(self, filename):
 self.write(render_template(filename))

application = tornado.web.Application([
 (r'^/(.*)$', MainHandler),
], debug=True, static_path=os.path.join(root, 'static'))

if __name__ == '__main__':
 application.listen(8080)
 tornado.ioloop.IOLoop.instance().start()

O porcie serwera mówi końcowy wpis:

if __name__ == '__main__':
application.listen(8080)
tornado.ioloop.IOLoop.instance().start()

Wystarczy zmienić to na 80 lub inny.

Uruchomienie Tornado w tle: (w screenie)

screen -dmS tornado-server python ~/website/application.py

Uruchamianie przy starcie:

nano /etc/rc.local

I przed  exit dodaj: (jeśli serwer znajduję sie w katalogu root)

@reboot screen -dmS tornado-server python ~/website/application.py

Jeśli pliki serwera u innego użytkownika to analogicznie:

@reboot screen -dmS tornado-server python /home/UZYTKOWNIK/website/application.py

Adblock w Gargoyle – blokowanie reklam na routerze

Masz dość oglądania denerwujących reklam i banerów, które dodatkowo wydłużają wczytywanie stron?

Zainstaluj Adblock i uwolnij się od nich!

Początkowo wtyczka istniała jako rozszerzenie do przeglądarki internetowe, dziś pokaże jak zainstalować to na routerze z alternatywnym oprogramowanie Gargoyle (OpenWRT)

opkg update

opkg install nano

Pobieranie gotowego skryptu


wget -O /usr/bin/adblock.sh http://pliki.linuxiarz.pl/11-2013/adblock.sh

Teraz tworzymy malutki serwerek WWW z wykorzystaniem już istniejących pakietów w systemie – który będzie serwował nam zamiast reklam obraz o rozmiarze 1×2 pixel dzięki czemu zamiast reklam będzie pokazywało się “nic”

mkdir -p /www/px/
wget -O /www/px/blank.gif http://probablyprogramming.com/wp-content/uploads/2009/03/tinytrans.gif

Przestawiamy nasz interfejs GUI systemy Gargoyle na port 81 (domyślnie 80)

W tym celu edytujemy plik:

nano /etc/config/httpd_gargoyle

I edytujemy wpis:

option http_port '80'

na

option http_port '81'

Uruchamiamy ponownie:

/etc/init.d/httpd_gargoyle restart

Teraz uruchamiamy jeszcze jeden serwer, do którego tworzyliśmy katalog powyżej:

httpd_gargoyle -d /www/px -p 80 -PNF /blank.gif

Od teraz po wpisaniu w przeglądarkę adresu http://192.168.1.1 powinien wyświetlić się nam listing katalogu /www/px a w nim plik blank.gif

Tworzymy przekierowanie naszego GUI zeby w adresie routera nie wpisywać za każdym razem  portu na którym znajduje sie teraz interfejs graficzny:

touch /www/px/index.html
echo '<html><head><meta http-equiv="Refresh" content="0; url=http://192.168.1.1:81" /></head></html>' >> /www/px/index.html

Mamy właściwie wszystko gotowe – teraz pozostało dodanie kilka kosmetycznych rzeczy takich jak uruchamianie skryptu adblock.sh co jakiś czas:

Edytujemy to w tym pliku

nano /etc/crontabs/root

Na końcu można dopisać:

0 3 * * 0 /usr/bin/adblock.sh

Biała lista – jest to pokazanie skryptowi (systemowi) na jakich stronach mają się wyświetlać reklamy:

Wiadomo że dopiszemy tam mojego bloga 🙂

touch /etc/white.list
echo "gru.one.pl" >> /etc/white.list

Wskazujemy serwerowi DNS na naszym routerze (dnsmasq) aby używał wygenerowanej przez nasz skrypt czarnej listy z bazą złych adresów:

uci add_list dhcp.@dnsmasq[0].addnhosts=/tmp/block.hosts

uci commit dhcp 

Nadajemy prawa do wykonywania skryptowi:

chmod 777 /usr/bin/adblock.sh

Po czym go uruchamiamy:

adblock.sh

Po prawidłowym skonfigurowaniu powinno się w logach pokazać:

Nov 13 22:59:02 Gargoyle daemon.info dnsmasq[7707]: read /tmp/block.hosts - 29275 addresses

Teraz pozostaje nam ustawienie aby tworzył się wirtualny serwer WWW serwujący obrazek jednopikselowy oraz sam skrypt przy starcie, w tym celu edytujemy plik:

nano /etc/rc.local

I przed exit należy dodać dwie linijki:

httpd_gargoyle -d /www/px -p 80 -PNF /blank.gif &
adblock.sh &

Skrypt pochodzi z eko.one.pl / opis z http://pliki.linuxiarz.pl

Przeglądarka Opera w systemach Linux i innych

Opera_256x256 Opera jest szybką i bezpłatną alternatywną przeglądarką WWW. Dostępna jest na wiele platform, m.in: Android, Windows, MacOSX, I  także LINUX, co nas cieszy najbardziej.

 

 

Instalacja w systemach typu Linux Mint, Ubuntu, czy Debian, jest bardzo łatwa.

sudo su

jeśli jesteś zalogowany na koncie root – pomiń to

i tu podajemy  hasło administratora naszego komputera, po czym:

apt-get update
apt-get install opera

Gotowe 😉

Opera2

Opera

 

 

 

 

 

 

Wersja na Androida

Opera dla systemu iOS(iphone) i iOS(ipad)

Opera dla zwykłych telefonów komórkowych (java)

Wersja Windows

 

Co to jest Opera Next ?

Opera Next jest aktualizowana co dwa tygodnie. Zawiera wszystkie najnowsze udoskonalenia Opery. Bądź na bieżąco i testuj nowe funkcje.

Czyli w skrócie jest to Opera Trunk – wersja testowa.

Aktualne wersje Opery Next można śledzić tutaj

Plex – Kombajn multimedialny na domowym serwerze

Plex LOGO  Plex Media Server to program do zarządzania plikami multimedialnymi. Główną jego funkcją jest strumieniowe wysyłanie   danych do urządzeń rozmaitego typu (telefony komórkowe, tablety, telewizory, komputery z zainstalowaną aplikacją Plex     Media Center). Aplikacja bardzo dobrze nadaje się do współdzielenia treści multimedialnych pomiędzy wieloma        stanowiskami zgromadzonymi w jednej sieci. Narzędzie jest wyposażone w silnik transkodujący dane (modyfikowanie  multimediów zgodnie z możliwościami urządzenia).

Opisze sposób instalacji Plex’a na moim serwerze domowym działający pod obsługą systemu Debian 8

Dodać należy repo do naszej listy pakietów, ponieważ standardowo Plex’a nie ma w Debianie – skorzystamy zatem z alternatywnego

echo "deb http://shell.ninthgate.se/packages/debian/ squeeze main" >> /etc/apt/sources.list
apt-get update
apt-get install plexmediaserver

I opcjonalnie uruchamianie serwera Plex Media Server przy starcie

update-rc.d plexmediaserver defaults

Instalacja jak widać jest prosta i nie wymaga szczególnych umiejętności.

Konfiguracja przebiega przez stronę WWW, interfejs jest po Polsku i znajduję się pod adresem:

http://ip_serwera:32400/manage

Poniżej kilka zdjęć pokazujących działanie Plex’a

Mój domowy serwerek niestety nie jest kilkurdzeniowy, z kilkoma gigabajtami pamięci RAM dlatego load serwera podczas transkodowania filmu *.mkv jest dość wysoki:

Przechwycenie obrazu ekranu - 10.11.2013 - 14:02:47

 

 

 

 

 

Mimo wszystko jest to świetny program – kombajn – multimedialny który posiada wiele funkcji.

Jeśli potrzebujesz mieć serwer z możliwością wystawienia na zewnątrz i odtwarzania filmów z  przeglądarki w jakiej chcesz jakości (dostosowane do prędkości wysyłania twojego łącza) to jest  to idealny serwer dla Ciebie.

Nie testowałem zbyt długo serwera, ponieważ u siebie mam minidlna do strumienia 1:1 w sieci, na  TV Samsung.

Na pewno będę używał serwera Plex do oglądania przez przeglądarkę poza domem – jest to świetna funkcjonalność.

Na stronie domowej (http://www.plexapp.com) aplikacji można wyczytać o platformach na których działa Plex

Chciałbym wspomnieć o wersji na system Android: http://www.plexapp.com/android/ – aplikacja niestety nie jest darmowa

Ponadto – istnieje aplikacja na telewizory Samsunga Smart TV:

IMG_20131110_153936

 

 

 

 

 

 

 

 

Zapraszam do testowania!