Inspiriert von der Bunylol -Suchmaschine von Facebook. Die Version, die derzeit auf Github geöffnet ist, ist ziemlich alt und hatte einige alte Abhängigkeiten, daher dachte ich, es wäre einfacher, einfach eine modernere zu schreiben. Dieser ist immer noch ziemlich einfach und hat höchstwahrscheinlich Sicherheitslöcher, auf die ich später stoßen werde. Ich wollte nur etwas auf den Boden bringen und ich werde mehr Funktionen für die Zeit hinzufügen, die es zulässt.
Besuchen Sie den Link zum Setup mit dieser Version, die ich hebe.
Liste der derzeit unterstützten Befehle
g [insert query] Google durchsuchenp [insert class number] Machen Sie eine Piazza -Suche, irgendwie personalisiert nur für Jack lolfb [insert query] Auf Facebook suchen. Standardeinstellungen auf der FB -Homepagecpp [insert query] Sucht nach syntaktischen CPP -Begriffen auf cppreference.comw [insert query] Sucht Wikipedia, standardmäßig auf der englischen Wikipedia -Seiteyt [insert query] Machen Sie eine YouTube -Suche. Wenn keine Abfrage übergeben wirdgm [insert number from 0-n where n = number of gmail accounts - 1] Google Mail öffnet. Wenn kein Argument spezifisch ist, eröffnet das erste Konto. Kann alternative Konten mit Argumenten eröffnenhelp gibt eine Liste der Gebrauchsbefehle zurück Ich denke, dies ist vorerst ziemlich intuitiv. Fügen Sie einfach neue Methoden zur Befehlsklasse hinzu. Es könnte ein wenig verwirrend sein, weil in der Datei jack_bunny.py alles passiert. Ich werde dies wahrscheinlich später modularisieren, wenn ich Zeit habe.
Ich habe dies auf einem Amazon EC2 -Server gehostet, der mit Nginx und Gunicorn konfiguriert ist, also werde ich die Schritte durchgehen, die ich durchgemacht habe.
Der erste Schritt besteht darin, dieses Repo auf den Server zu klonen, auf dem Sie dies ausführen möchten, und alle Abhängigkeiten herunterladen. Diese sollten alle in der Datei requirements.txt enthalten, sodass pip3 install -r /path/to/requirements.txt funktionieren sollte. Wenn Sie auf Probleme stoßen, sind die einzigen Python -Bibliotheken, die diese wirklich verwendet, flask und wikipedia Das Herunterladen sollte also Probleme lösen.
Es gibt zusätzliche Pakete, die Sie zur Moderne benötigen. Das erste ist nginx . Um dies zu installieren, können Sie einfach sudo apt-get install nginx verwenden. Wir müssen auch gunicorn installieren und dazu pip3 install gunicorn verwenden.
Die Idee dahinter ist, dass wir gunicorn verwenden, um dies auf dem örtlichen Hafen auf einem ungenutzten Hafen zu führen. Wir werden dann nginx als Reverse -Proxy verwenden, damit die Anfrage an gunicorn erhalten wird, und dann wird gunicorn dies an nginx bedienen, die dem Benutzer gegeben werden.
Wie machen wir das?
Zuerst wollen wir gunicorn zum Laufen bringen. Der Befehl zum Ausführen ist gunicorn jack_bunny:app -p jack_bunny.pid -D . In diesem Befehl repräsentiert jack_bunny den Dateinamen ohne .py und app repräsentiert die Flask -App. Wir fügen das -D -Tag hinzu, damit dies im Hintergrund ausgeführt wird, auch wenn wir uns schließen. Der -p jack_bunny.pid speichert die Process_ID in dieser Datei. Wenn Sie diesen Prozess abtöten möchten, können Sie es einfach töten.
Jetzt müssen wir nur nginx einrichten, da dies nur noch lokal ausgeführt wird.
Ich habe diese neue Konfigurationsdatei zuerst erstellt unter /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;
}
}
Dann habe ich hier Symlink erstellt.
$ sudo ln -s
/etc/nginx/sites-available/jack_bunny
/etc/nginx/sites-enabled/jack_bunny
Nach dem Neustart nginx sollten Sie gut gehen!
Wenn Sie auf einige nginx -Konfigurationsprobleme stoßen, überprüfen Sie die Fehlerprotokolle, um zu sehen, was schief gehen könnte. Eine Sache, auf die ich getroffen wurde, war, dass mein Servername zu lang war, und dies gab mir einen Server -Hash -Namensfehler. Ich habe dies aufgelöst, indem ich das Zeilen server_names_hash_bucket_size 128; zu meiner nginx config -Datei hier /etc/nginx/nginx.conf .
Es gibt eine Reihe von Möglichkeiten, eine Flask -App auf einem Server bereitzustellen, sodass Oyou dies nicht tun muss. Ich fand gerade das schnellste Weg. Als Referenz ist dies der Leitfaden, den ich verfolgt habe, es ist ziemlich detailliert.