2015-10-14 2 views
1

У меня есть веб-сервер, написанный с помощью python и web.py. Я хочу сделать его демоном. Итак, есть Linux (debian) ОС. Я написал код. Итак, теперь этот веб-сервер запускается как демон, я вижу его в списке процессов и добираюсь до главной страницы в своем браузере.Web.py не может найти файлы

Я использовал модуль web.py, и в этом модуле есть технология рендеринга. Эта технология использует html-шаблоны для создания веб-страницы (html-код, смешанный с python). В этих шаблонах я использую стандартный html-код для добавления стилей CSS и изображений. Папка с таким содержимым помещается в местоположение файла запуска демона.

Так что мой демон загружает эти шаблоны. Но нет css или изображений. Я проверил выполнение кода шаблона (введите некоторые текстовые строки) - все в порядке.

Таким образом, возникает проблема: почему этот HTML-код не может достичь другого контента и как его восстановить?

Одна важная вещь: раньше это был только веб-сервер (а не демон), а версия не-демона (я сохраняю копию) хорошо! Все проблемы возникают при запуске демона.

Надеюсь на вашу помощь!

есть несколько частей коды:

#Daemon start file 
class Hive(Daemon): 
    def run(self): 
     app = web.application(urls, globals()) 
     app.run() 

if __name__ == "__main__": 

    daemon = Hive('/tmp/daemon-example.pid') 
    if len(sys.argv) == 2: 
     if 'start' == sys.argv[1]: 
      sys.argv[1] = '8080' 
      daemon.start() 
     elif 'stop' == sys.argv[1]: 
      daemon.stop() 
     elif 'restart' == sys.argv[1]: 
      daemon.restart() 
     else: 
      print "Unknown command" 
      sys.exit(2) 
     sys.exit(0) 
else: 
    print "usage: %s start|stop|restart" % sys.argv[0] 
    sys.exit(2) 
-------------------------------------------------------- 
#home.html - template that realizes a part of main page and loads some 
#picture. I've checked the "if" operator (that activates the <img> tag) - server 
#executes it. On my page I see a place for picture (standard form when 
#page cannot find the picture to download). 
$def with (clients) 
<!-- отображение данных о клиентах в базе: ip-адрес, состояние, привилегии 
--> 
<style type='text/css'> 
    .client { height: 40px; } 
    .client_current { border-left: 4px solid lightgreen; } 
</style> 

<!--<div><span class='glyphicon glyphicon-arrow-down' 
style='margin-right: 10px;'></span><a href='#' class='_sh' 
data-active='1' data-remote='.online'>Online</a></div>--> 
<div style="min-height: 100px;"> 
<div>Online</div> 
<div class='online'> 
$code: 
    offline = False 
$for client in clients: 
    $if not offline and not client.online: 
     $code: 
      offline = True 
     </div><div>Offline</div><div class='offline'> 
    $if client.admin: 
     <div class='client client-admin' style='clear: both; padding: 4px;'> 
    $else: 
     <div class='client' style='clear: both; padding: 4px;'> 
    <a href='#client$client.id' onclick='return activateClient(this);' id='client$client.id' class='client_item'> 
     <div class='img' style='float: left;'> 
     $if client.icon: 
      <img src='/powerhive-0.3.beta/static/img/wait.png' /> 
     $else: 
      <img src='/powerhive-0.3.beta/static/img/wait.png' /> 
     </div> 
     <div style='float: left; font-size: 10px; margin: 2px;'> 
      <div style='font-weight: bold; font-size: 11px;'>$client.ip</div> 
      $client.info 
     </div> 
    </a> 
    </div> 
</div> 
</div> 

ответ

0

И я нашел ответ! Я добавил к URL-адресу эту строку: '/(js|css|img)/(.*)', 'static',. Статический класс был реализован ранее. Этот класс так:

class static: 
    def GET(self, media, file): 
     try: 
      f = open(media+'/'+file, 'r') 
      return f.read() 
     except: 
      return '404' 

И после этого (наиболее escited части): Если мой демон был не может получить доступ к моей статической папке, я заменил параметр источника моим образа (и поэтому JS-файлы) до: http://localhost/static/img/wait.png

Вот и все! Может быть, это грубо, но это работает;)

 Смежные вопросы

  • Нет связанных вопросов^_^