Önceki yazıda basit bir panele bir açılır düğme yerleştirmiştim. Artık projeyi Nginx+Tornado Server sunucusundan çalıştırıyorum.
Sunucu olarak sanal makinemde her zaman bulunan Debian'ı kullandım, Nginx ve Tornado'yu nasıl kurduğumu hatırlamıyorum, epey zaman olmuş, Nginx depodan olabilir ama Tornado'yu sitesinden indirmiş olabilirim, zaten Python ile geliştirilmiş, kurulumu oldukça kolay.
Nginx ayarları neredeyse standart, sadece upstream'a dikkat, Tornado için 8000 numaralı kapıyı (port) seçtim. Alttaki include tanımı ile ~conf.d/ altında sunucu ayarlarını ayırıyoruz.
user www-data; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept on; use epoll; } http { include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; upstream frontends{ server 127.0.0.1:8000; } proxy_read_timeout 200; sendfile on; tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; gzip_min_length 1000; gzip_proxied any; gzip_types text/plain text/html text/css text/xml application/x-javascript application/xml application/atom+xml text/javascript; proxy_next_upstream error; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }
/static Dizininde medya dosyaları, dojo kütüphanesi ve uygulama .js dosyaları gibi sabit içerikler bulunacak.
/etc/nginx/conf.d/server.conf
server { listen 80; # Allow file uploads client_max_body_size 50M; location ^~ /static/ { root /var/www; #if ($query_string) { # expires max; #} } location = /favicon.ico { rewrite (.*) /static/favicon.ico; } location = /robots.txt { rewrite (.*) /static/robots.txt; } location / { root /var/www; proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://frontends; } }
Tornado sunucumuz ise bu küçük betik ile çalışıyor, tek yaptığı / çağrıları için bir MainHandler nesnesi oluşturup, get çağrısı ise index.html dosyasını okuyup cevap olarak göndermek. Bunu konsoldan elle python app.py komutu ile çalıştırıyorum, 8000 numaralı kapıyı dinliyor.
/var/www/app.py
#!/usr/bin/python # -*- coding: utf-8 -*- import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.render("index.html") application = tornado.web.Application([ (r"/", MainHandler), ]) if __name__ == "__main__": application.listen(8000) tornado.ioloop.IOLoop.instance().start()
Uygulamayı /static/app/ altına kaydediyorum, gerçekte /var/www/static/app yoluna karşılık geliyor.
/var/www/index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Ornek:Merhaba Dojo!</title> <!-- Dojo'yu yukle --> <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.8.0/dijit/themes/claro/claro.css"> <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.8.0/dojo/dojo.js" data-dojo-config="async: true, isDebug: true"></script> </head> <body class="claro" style="margin:0;"> <!-- Uygulamayi calistir --> <script src="/static/app/main.js"></script> </body> </html>
Uygulama dosyalarını sonraki yazıda veriyorum.
Hiç yorum yok:
Yorum Gönder