Configurando OpenShift com Python 3.5 + Flask + Gunicorn
http://pythonclub.com.br/configurando-python-3.5-openshift-flask-gunicorn.html
Configurando OpenShift com Python 3.5
Introdução
O OpenShift (
https://www.openshift.com/) é uma plataforma de PasS que possibilita aos desenvolvedores "subir" aplicações na nuvem de uma maneira simples e rápida. Ele funciona a partir de gears(engrenagens) que representam máquinas que irão rodar as aplicações. Dentro de cada gear é possível instalar serviços, os são chamados de "cartridges".
Existem 3 planos:
Online (gratuito, com três gears)
Enterprise (pago com suporte)
Origin (versão da comunidade e pode ser utilizado livremente)
Um problema que me deparei ao utilizar o Openshift é que ele não possui um cartridge com Python3.5. Porém existe uma forma um pouco mais complicada de resolver esse problema.
Após fazer seu cadastro no OpenShift e instalar o client tools (
https://developers.openshift.com/managing-your-applications/client-tools.html) que contém as ferramentas necessárias para configurar nossa aplicação.
Após tudo isso vamos colocar a mão na massa, abra seu terminal e vamos lá.
Criando a aplicação
rhc app create
https://raw.githubusercontent.com/Grief/openshift-cartridge-python-3.5/master/metadata/manifest.yml diy-0.1
Substituindo "" pelo nome de sua aplicação.
O arquivo manifest.yml criado por Changaco(github) e "forkeado" por Grief(github) contém as configurações de um cartridge customizado que contém o python 3.5.
Para os curiosos o conteúdo do arquivo
---
Name: python
Cartridge-Short-Name: PYTHON
Display-Name: Only Python
Description: 'An embedded cartridge that provides only python, nothing else.'
Version: '3.5.0'
Versions: ['3.5.0', '2.7.11']
License: The Python License
License-Url:
http://docs.python.org/3/license.html
Vendor:
python.org
Cartridge-Version: 0.0.2
Cartridge-Vendor: praisebetoscience
Categories:
- service
- python
- embedded
Website:
https://github.com/praisebetoscience/openshift-cartridge-python-3.5
Help-Topics:
Developer Center:
https://www.openshift.com/developers
Provides:
- python
Publishes:
Subscribes:
set-env:
Type: ENV:*
Required: false
set-doc-url:
Type: STRING:urlpath
Required: false
Scaling:
Min: 1
Max: -1
Version-Overrides:
'2.7.11':
Display-Name: Python 2.7
License: The Python License, version 2.7
Provides:
- python-2.7
- python
- python(version) = 2.7
'3.5.0':
Display-Name: Python 3.5
License: The Python License, version 3.5
Provides:
- python-3.5
- python
- python(version) = 3.5
Após isso sua aplicação já estárá executando, caso deseje acessar o endereço da mesma deverá ser http://-.rhcloud.com.
Você verá que a página do seu projeto não é nada mais do que o diy (Dot It Yourself), que é uma aplicação Ruby de exemplo que você pode alterar, e é o que vamos fazer.
Se você acessar o diretório do seu projeto verá que existe um diretório ".openshift", dentro desse diretório existe um outro diretório chamado "action_hooks", e dentro desse diretório existem dois arquivos "start" e "stop".
"/.openshift/action_hooks/start"
"/.openshift/action_hooks/stop"
Os dois arquivos são respectivamente os comandos para "subir" e "pausar" sua aplicação.
Flask
Vamos criar um projeto de exemplo, bem simples, que apenas nos retorne a versão do python utilizada.
Primeiramente vamos criar nosso requirements.txt, com gunicorn e o flask.
"requirements.txt"
gunicorn
flask
Depois disso vamos criar o arquivo
app.py que conterá nossa aplicação.
"
app.py"
import sys
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return sys.version
Após isso basta fazer o commit de suas alterações.
shell
git add .
git commit -am 'Minhas alterações'
Após isso você verá que sua aplicação não está rodando, pois ainda não alteramos os arquivos "start" e "stop".
Configurando o Gunicorn no Start e Stop