Essayez d'exécuter le framework Web Python Bottle sur un serveur Lollipop (plan Lollipo)

J'ai essayé d'exécuter un framework Web Python léger appelé Bottle sur un serveur local et lollipop (plan lollipop, ssh ne peut pas être utilisé ...). Lors de son exécution sur un serveur lollipop, il devait être modifié pour s'adapter à l'environnement.

échantillon

Sur la page de titre, entrez le "nom", sélectionnez "nouilles préférées" et affichez les paramètres passés par la méthode GET sur la page de sortie des résultats. タイトルページ.png 結果出力のページ.png

Premier local

organisation des fichiers

Cette fois, le nom du projet est `` Bottle_study```.

bottle_study
- views/
  |  title.tpl   # /Fichier modèle appelé par
  |  show.tpl    # /Fichier modèle appelé par show
  bottle.py      #Corps de bouteille
  index.py       #répartiteur

procédure

  1. Obtenez bottle.py

  2. Créez index.py

  3. Créez views / title.tpl

  4. Créez des vues / show.tpl

  5. Exécutez le serveur intégré

  6. bottle.py La bouteille elle-même, bouteille.py```, est obtenue par` wget``` directement sous le répertoire du projet.

bottle.Comment obtenir py


$ mkdir bottle_study
$ pwd
(Dépend de votre environnement)/bottle_study
$ wget http://bottlepy.org/bottle.py
$ ls
bottle.py
  1. index.py Cette fois, j'ai écrit tout le traitement dans index.py. En fin de compte, nous exécutons le serveur intégré.

index.py


#!/usr/local/bin/python
# -*- coding: utf-8 -*-

from bottle import route, run, template, request


# localhost:8080
@route('/')
def title():
    # views/title.Appeler tpl
    return template('title')


# localhost:8080/show
@route('/show', method='GET')
def men():
    #Obtenir les paramètres GET(username, men)
    username = request.query.username
    men = request.query.men

    #Partie contrôleur=======================================
    if (username == ""):
        username = "personne sans nom"

    if men in {"ramen"}:
        menname = "ramen"
    elif men in {"soba"}:
        menname = "Soba"
    elif men in {"udon"}:
        menname = "Udon"
    else:
        menname = "Error!!"

    #Voir la section=============================================
    # views/show.Appeler tpl
    return template('show', name=username, men=menname)


#Exécuter le serveur intégré
run(host='localhost', port=8080, debug=True, reloader=True)
  1. views/title.tpl Ceci est la page de titre. Par défaut, Bottle lit les fichiers dans le répertoire views.

views/title.tpl


<!DOCTYPE html>
<html lang=ja>
  <head>
    <meta charset="UTF-8">
    <title>Titre de page</title>
  </head>

  <body>
    <h1>Titre de page</h1>

    <form method="GET" action="/show">
    <p>Nom est? :<br>
    <input type="text" name="username"></p>

    <p>Quelles sont vos nouilles préférées?</p>
    <form>
    <select name="men">
      <option value="ramen">ramen</option>
      <option value="soba">Soba</option>
      <option value="udon">Udon</option>
    </select>
    <input type="submit" value="Envoyer">
    </form>
  </body>

</html>
  1. views/show.tpl Cette page reçoit les paramètres de la page de titre et produit les résultats. Les paramètres de la méthode GET sont reçus sous forme de variables. (nom et hommes)

views/show.tpl


<!DOCTYPE html>
<html lang=ja>
  <head>
    <meta charset="UTF-8">
    <title>Page de sortie des résultats</title>
  </head>

  <body>
    <h1>Page de sortie des résultats</h1>
    <p>Bienvenue{{name}}San! !!</br>
La prochaine fois ensemble{{men}}Allons manger!<p>
    <a href="/">return to HOME</a>
    </p>
  </body>

</html>

5. Exécutez le serveur intégré

Vous pouvez l'exécuter sur le serveur intégré en faisant python index.py. Tapez `` localhost: 8080 '' dans votre navigateur pour ouvrir la page de titre.

$ pwd
(Dépend de votre environnement)/bottle_study
$ ls
bottle.py	index.py	view/
$ python index.py

Ensuite, exécutez sur le serveur de location

Ensuite, exécutons-le avec le plan lollipop du serveur lollipop. À quoi ça ressemble

Donc, il y a beaucoup de restrictions, mais j'ai essayé de voir si une bouteille avec un seul fichier fonctionnerait.

organisation des fichiers

La structure de fichiers du serveur lollipop. Cette fois, la page racine de l'exemple de version du serveur de location est "http: // (page du serveur lollipop) /bottle_study/index.cgi", j'ai donc placé "Bottle_study" dans le répertoire du projet sous la racine du document.

Racine du document
| .htaccess   #Ajouté cette fois
- bottle_study
  - views/
    | title.tpl   #Pas de changement
    | show.tpl    #Pas de changement(Retour au chemin HOME/ → /bottle_étude)
  | bottle.py      #Pas de changement
  | index.cgi      # index.py → index.cgi, correctif requis

Points fixes

  1. index.py (chemin d'exécution Python, spécification du type de serveur, extension cgi, permission 700)
  2. Avec .htaccess, redirigez le chemin vers le répertoire racine vers `` `Bottle_study / index.cgi / show```

1.index.cgi(index.py→) Les 4 points suivants ont été corrigés.

index.cgi(Seule la différence avec la version locale)


#!/usr/bin/python2.7

…

run(server='cgi')

2..htaccess

Lors de la transition de la page de titre à la page d'affichage des résultats, l'URL de la page d'affichage des résultats attendus est

http://(Page du serveur Lollipop)/bottle_study/index.cgi/show?username=yamjack&men=ramen

Cependant, si cela reste tel quel

http://(Page du serveur Lollipop)/show?username=yamjack&men=ramen

Et il semble revenir à la page de la racine du document, et la page est introuvable. Redirigez-le avec la racine du document `` .htaccess``` pour passer à la page attendue.

.htaccess


RewriteEngine on
RewriteRule ^show(.*)$ http://(Page du serveur Lollipop)/bottle_study/index.cgi/show$1

N'oubliez pas de mettre un saut de ligne uniquement dans la dernière ligne du .htaccess et de définir l'autorisation sur 704 pour les serveurs lollipop.

Maintenant, il se comporte de la même manière que localement. Ceux que je fabrique sont pour le moment pour une étude personnelle, alors je vais les essayer dans cet environnement jusqu'à ce que je puisse faire quelque chose que je veux montrer aux autres!

Recommended Posts

Essayez d'exécuter le framework Web Python Bottle sur un serveur Lollipop (plan Lollipo)
Configurons un serveur WEB avec Chromebook
[Partie 2] Construisons un serveur Web avec EC2 Linux
[Introduction à AWS] Mémorandum de création d'un serveur Web sur AWS
J'ai essayé de créer un outil d'échafaudage pour le framework Web Python Bottle