Dieser Artikel beschreibt, wie Sie MetaGer in einem Web-Server aufsetzen können.
Abhängigkeiten installieren
- php7
- composer
- sqlite3
- redis-server
Apache installieren und konfigurieren
- Verlinke in der Apache Konfiguration das DocumentRoot auf %ProjectDir%/public/html
- In der Directory Definition für dieses Verzeichnis "AllowOverride all" setzen
Laravel Framework initialisieren
cd %ProjectDir%
composer install
php artisan key:generate
Laravel Framework konfigurieren
- Die Datei ".env" bearbeiten:
- Zugangsdaten zum lokalen Redis-Server eintragen.
-
QUEUE_DRIVER=redis
=> Dies aktiviert die parallele Abarbeitung der Anfragen an die Suchmaschinen - Sqlite-Daten Eintragen => Wenn z.B.:
DB_DATABASE=metager.sqlite
eingetragen wird, sollte eine entsprechende Datenbank under database/metager.sqlite liegen. -
SESSION_DRIVER=array
=> Ansonsten wird vom Framework automatisch ein Session Cookie gesendet -
APP_DEBUG=false
=> Ansonsten sehen eure Benutzer Details von eventuellen Fehlern.
Laravel Worker definieren
Wir verwenden die von Laravel zur Verfügung gestellten Worker um die Abfragen an die Suchdienste parallel abarbeiten zu können.
Ihr könnt entweder einzelne Worker starten:
php artisan queue:listen
bzw php artisan queue:work --sleep=1 --tries=3 --daemon
als daemon
Oder ihr installiert euch supervisor ( wie hier beschrieben), um dafür zu sorgen, dass viele Worker-Prozesse am laufen gehalten werden.
Wie viele Prozesse ihr benötigt, hängt dabei von eurem Traffic ab.
Suchmaschinen definieren
Damit bei einer MetaGer Suche überhaupt etwas passiert, müsst ihr natürlich Zugang zu den Apis von beliebig vielen Suchmaschinen haben.
Diese Zugänge sind in einer XML-Datei abgespeichert und Gruppiert. Die Struktur dieser Datei wird im Folgenden erklärt:
<sumas>
<suma />
</sumas>
Jedes einzelne <suma />
Element benötigt dabei folgende Attribute:
name | value | optional? |
---|---|---|
name | eindeutiger name der Suchmaschine | nein |
host | hostname (www.example.com) | nein |
skript | Pfad zum Skript ("/example.php") | nein |
formData | URL-Parameter, die übergeben werden sollen. (`query=<<QUERY>>`; `<<QUERY>>` wird dabei später durch die Sucheingabe ersetzt | nein |
package | Klassenname der Parser-Datei. (example) | nein |
port | Port auf dem die API zuhört (80) | ja |
inputEncoding | Encoding in dem die URL-Parameter übertragen werden (Latin1) | ja |
userSelectable | Soll der Benutzer diese Suchmaschine unter "/settings" auswählen können? [0|1] ( Default: 1) | ja |
displayName | Welcher Name soll auf der Settings-Seite angezeigt werden? | Nein |
type | Gehört diese Suchmaschine zu einem Fokus? [web|bilder|nachrichten|produktsuche] | ja |
engineBoost | Wie hochwertig sind die Ergebnisse dieser Suchmaschine? ( Float 0<Wert ) | ja |
homepage | Unter welchem Link ist diese Suchmaschine für die Öffentlichkeit erreichbar. ( https://example.com; wird dem Benutzer unter "/settings" angezeigt) | nein |
additionalHeaders | Zusätzliche HTTP-Header, die an die Suchmaschine übergeben werden. "$#!#$" wird in "\r\n" umgewandelt. | ja |
disabled | Ist diese Suchmaschine deaktiviert? [0|1] (Default: 0) | ja |