2016-11-23 2 views
-1

im известно о flask deployment options, но все эти опции кажутся мне излишними для такого простого флеш-приложения, которое я написал. он отлично работает с собственным встроенным сервером фляшки.Самый быстрый способ развернуть приложение Flask на ubuntu

workon kittapp 
python run.py // runs the webserver at configured port, everything's fine 

Heres мой run.py файл

from kittapp import app 

if __name__ == '__main__': 
    app.run(host=app.config['HOST'], port=app.config['PORT'], debug=app.config['DEBUG']) 

первая проблема, сервер останавливается, как только я выйти из моего SSH сессии, поэтому я попытался оттолкнуть задачу в фоновом режиме, используя одноразовую cron вакансии, at now или nohup команд. он работает нормально, но вторая проблема заключается в том, что через несколько часов процесс python (который был нажат на bg) больше не работает, а веб-приложение не работает.

Я знаю, что в конце концов мне нужно написать сценарий запуска, подобный демонам. просто хотел посмотреть, есть ли еще какое-то еще простое, но надежное решение для развертывания флеш-приложения на машине ubuntu?

+0

проверить, почему сервер идти вниз, и лучше, чтобы обернуть его с руководителем или что-то подобное. –

+0

Где я могу проверить журналы для флеш-приложения? –

+0

nohup.out или что-то, что вы должны определить при запуске nohup –

ответ

0

Возможно, вы ищете Supervisor.

Supervisor - это инструмент управления технологическими процессами для Unix-подобных систем. Он предоставляет простой в использовании интерфейс для создания и управления подобными процессами, подобными демонам, с использованием только config files.

Вы можете создать простой конфигурационный файл для своего приложения Flask, добавить его в Supervisor, запустить его, и все готово. Вот как:

# Install supervisor 
sudo apt install supervisor -y # Or pip install supervisor 

# Start supervisor service 
sudo service supervisor start 

# Create your config file 
# I'll add a sample kittapp.conf later on... 
sudo vim /etc/supervisor/conf.d/kittapp.conf 

# Add and start your job 
sudo supervisorctl add kittapp 
sudo supervisorctl start kittapp 

Легкое право? Но есть немного gotcha при использовании virtualenvs, которым вы являетесь. Обратите внимание, что workon - это функция оболочки, а не исполняемый файл в PATH. Супервизор не загружает файлы ~/.bash* или ~/.zsh* перед выполнением заданий. Он понятия не имеет о них. В результате workon будет недоступен. Вместо этого нам нужно правильно установить путь python, чтобы указать на наш каталог bin/ нашего venv. Это можно сделать, используя директиву environment.

Вот минимальный Supervisor конфигурационный файл:

[program:kittapp] 
environment=PATH="/home/user/virtualenvs/kittapp/bin" # Point it to the bin/ directory of your venv 
command=python run.py         # Here's the actual command that supervisor needs to run in order to start the server 
directory=/var/www/kittapp        # Instructs supervisor to cd into this directory before running the command 
stdout_logfile=/var/www/kittapp/logs/supervisor.log  # Write logs to this file 
redirect_stderr=true          # Redirect errors to supervisor output, so you'll have your errors in the log file 

Ну, ну, вот и все.

И вы можете захотеть взглянуть на этот Laracasts урок Руководитель: журналы
https://laracasts.com/lessons/supervise-this

+0

спасибо за ваш ответ. Я проверю это. –

+0

вверх и бег с супервизором. спасибо за ссылку на видео. позволяет увидеть, продолжает ли он работать. –

+0

Нет! ** Не запускайте сервер dev на производстве. ** Он не является особенно стабильным, эффективным или безопасным. Это плохой совет. – davidism