Inspirado en el motor de búsqueda Bunnylol de Facebook. La versión que actualmente está abierta en GitHub es bastante antigua y tenía algunas dependencias antiguas, así que pensé que sería más fácil escribir una más moderna. Este sigue siendo bastante básico y lo más probable es que tenga agujeros de seguridad con los que me encontraré más tarde. Solo quería sacar algo del suelo y agregaré más funciones que lo permite el tiempo.
Visite el enlace para configurar usando esta versión que estoy alojando.
Lista de comandos compatibles actualmente
g [insert query] Buscando Googlep [insert class number] Haz una búsqueda de plaza, un poco personalizado solo para Jack lolfb [insert query] Búsqueda en Facebook. Ponal predeterminados en la página de inicio de FBcpp [insert query] Búsqueda de términos sintácticos de CPP en cpPreference.comw [insert query] Búsqueda de wikipedia, valores predeterminados en la página de Wikipedia en inglésyt [insert query] Haga una búsqueda en YouTube. Si no se pasa la consulta, el valor predeterminado a la página de inicio de YouTubegm [insert number from 0-n where n = number of gmail accounts - 1] abre Gmail. Si no hay argumento específico, abre la primera cuenta. Puede abrir cuentas alternativas con argumentoshelp devuelve una lista de comandos utilizables Creo que extender esto es bastante intuitivo por ahora. Simplemente agregue nuevos métodos a la clase de comandos. Puede ser un poco confuso porque todo está sucediendo en el archivo jack_bunny.py , probablemente modularizaré esto más tarde cuando tenga tiempo.
Alojé esto en un servidor de Amazon EC2, configurado con Nginx y Gunicorn, así que recorreré los pasos que pasé.
El primer paso es clonar este repositorio en el servidor en el que desea ejecutar esto y descargar todas las dependencias. Todo esto debería estar en el archivo requirements.txt , por lo que algo como pip3 install -r /path/to/requirements.txt debería funcionar. Si se encuentra con algún problema, las únicas bibliotecas de Python que realmente usan son flask y wikipedia por lo que descargarlas debería resolver cualquier problema.
Hay paquetes adicionales que necesita para alojar esto. El primero es nginx . Para instalar esto, simplemente puede usar sudo apt-get install nginx . También necesitaremos instalar gunicorn y para hacerlo, puede usar pip3 install gunicorn .
La idea detrás de esto es que usaremos gunicorn para ejecutar esto en el localhost en algún puerto no utilizado. Luego usaremos nginx como un proxy inverso para que entregue la solicitud que recibió a gunicorn y luego gunicorn le servirá a nginx que se le dará al usuario.
Entonces, ¿cómo hacemos esto?
Primero queremos hacer correr gunicorn . El comando para ejecutar es gunicorn jack_bunny:app -p jack_bunny.pid -D . En este comando, jack_bunny representa el nombre del archivo sin el .py y app representa la aplicación Flask. Agregamos la etiqueta -D para que esto se ejecute en segundo plano, incluso cuando cerramos. El -p jack_bunny.pid guarda el proceso_id a este archivo, por lo que si quieres matar este proceso, puedes matarlo -9.
Ahora solo tenemos que configurar nginx porque esto todavía solo se ejecuta localmente.
Primero creé este nuevo archivo de configuración en /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;
}
}
Luego creé Symlink aquí.
$ sudo ln -s
/etc/nginx/sites-available/jack_bunny
/etc/nginx/sites-enabled/jack_bunny
¡Después de reiniciar nginx , deberías estar listo para ir!
Si se encuentra con algunos problemas de configuración nginx , verifique los registros de errores para ver qué podría estar mal. Una cosa en la que me encontré fue que el nombre de mi servidor fue demasiado largo y esto me dio un error de nombre de hash del servidor. Resolví esto agregando la línea server_names_hash_bucket_size 128; a mi archivo de configuración nginx aquí /etc/nginx/nginx.conf .
Hay muchas formas de implementar una aplicación Flask en un servidor para que no tenga que hacer esto. Acabo de encontrar que esta es la forma más rápida. Como referencia, esta es la guía que seguí, es bastante detallada.