Inspiré par le moteur de recherche Bunnylol de Facebook. La version qui est actuellement ouverte sur Github est assez ancienne et avait de vieilles dépendances, donc je pensais qu'il serait plus facile d'en écrire un plus moderne. Celui-ci est encore assez basique et a probablement des trous de sécurité que je rencontrerai plus tard. Je voulais juste faire décoller quelque chose et j'ajouterai plus de fonctionnalités de temps.
Visitez le lien vers la configuration à l'aide de cette version que j'héberge.
Liste des commandes actuellement prises en charge
g [insert query] Recherche de Googlep [insert class number] Faire une recherche de Piazza, un peu personnalisée juste pour Jack lolfb [insert query] Recherche sur Facebook. Par défaut sur la page d'accueil FBcpp [insert query] Recherche les termes CPP syntaxiques sur cppreference.comw [insert query] Recherche Wikipedia, par défaut sur la page Wikipedia anglaiseyt [insert query] Faites une recherche YouTube. Si la requête n'est pas réalisée, la page d'accueil YouTube est par défautgm [insert number from 0-n where n = number of gmail accounts - 1] ouvre Gmail. Si aucun argument spécifique, ouvre le premier compte. Peut ouvrir des comptes alternatifs avec des argumentshelp renvoie une liste de commandes utilisables Je pense que l'extension est assez intuitive pour l'instant. Ajoutez simplement de nouvelles méthodes à la classe des commandes. Cela pourrait être un peu déroutant car tout se passe dans le fichier jack_bunny.py , je vais probablement modulariser cela plus tard quand j'aurai le temps.
Je l'ai hébergé sur un serveur Amazon EC2, configuré avec Nginx et Gunicorn, je vais donc traverser les étapes que j'ai traversées.
La première étape consiste à cloner ce dépôt sur le serveur sur lequel vous souhaitez l'exécuter et à télécharger toutes les dépendances. Ceux-ci devraient être dans le fichier requirements.txt , donc quelque chose comme pip3 install -r /path/to/requirements.txt devrait fonctionner. Si vous rencontrez des problèmes, les seules bibliothèques Python que cela utilisent réellement sont flask et wikipedia , donc le télécharger devrait résoudre tout problème.
Il y a des packages supplémentaires dont vous avez besoin pour héberger cela. Le premier est nginx . Pour l'installer, vous pouvez simplement utiliser sudo apt-get install nginx . Nous devrons également installer gunicorn et pour ce faire, vous pouvez utiliser pip3 install gunicorn .
L'idée derrière cela est que nous utiliserons gunicorn pour exécuter cela sur le localhost sur un port inutilisé. Nous utiliserons ensuite nginx comme proxy inversé afin qu'il remette la demande qu'il a reçue à gunicorn , puis gunicorn le servira à nginx qui sera donné à l'utilisateur.
Alors, comment faisons-nous cela?
Nous voulons d'abord faire fonctionner gunicorn . La commande à exécuter est gunicorn jack_bunny:app -p jack_bunny.pid -D . Dans cette commande, jack_bunny représente le nom de fichier sans que le .py et app représente l'application FLASK. Nous ajoutons la balise -D afin que cela fonctionne en arrière-plan, même lorsque nous fermons. Le -p jack_bunny.pid enregistre le process_id dans ce fichier, donc si vous voulez tuer ce processus, vous pouvez simplement le tuer -9.
Maintenant, nous devons simplement configurer nginx car cela ne fonctionne encore que localement.
J'ai d'abord créé ce nouveau fichier de configuration sur /etc/nginx/sites-available/jack_bunny
# /etc/nginx/sites-available/jack_bunny
# Redirect www.[insert server name].com to [insert server name].com
server {
server_name www.[insert server name].com;
rewrite ^ http://[insert server name].com/ permanent;
}
# Handle requests to [insert server name].com on port 80
server {
listen 80;
server_name [insert server name].com;
# Handle all locations
location / {
# Pass the request to Gunicorn
proxy_pass http://127.0.0.1:8000;
# Set some HTTP headers so that our app knows where the
# request really came from
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Ensuite, j'ai créé Symlink ici.
$ sudo ln -s
/etc/nginx/sites-available/jack_bunny
/etc/nginx/sites-enabled/jack_bunny
Après avoir redémarré nginx vous devriez être prêt à partir!
Si vous rencontrez des problèmes de configuration nginx , vérifiez les journaux d'erreur pour voir ce qui pourrait mal tourner. Une chose que j'ai rencontrée était que le nom de mon serveur était trop long et cela m'a donné une erreur de nom de hachage de serveur. J'ai résolu ceci en ajoutant la ligne server_names_hash_bucket_size 128; à mon fichier nginx Config ici /etc/nginx/nginx.conf .
Il existe un tas de façons de déployer une application Flask sur un serveur, donc vous n'avez pas à le faire. Je viens de trouver que c'était le moyen le plus rapide. Pour référence, c'est le guide que j'ai suivi, c'est assez détaillé.