Wir basteln uns ein Entwickersystem

Hier geht es um die Programmierung von Opencaching.de - User mit Erfahrungen im Bereich PHP, MySQL, HTML, JavaScript, CSS werden hier ständig gesucht
following

Diese Anleitung ist nicht mehr aktuell. Eine neue gibt es im internen Teamwiki, und die ist noch ins öffentliche Wiki zu übertragen.

Ich mag nicht länger auf das neue Entwcklerimage warten, daher habe ich nun den Code aus dem Git ins alte eingebaut.

- Git-Fork-Klon anlegen:

Code: Alles auswählen

cd /usr/local/apache2/htdocs/oc-server/
sudo -u apache git clone https://github.com/<username>/server-3.0.git
cd server-3.0/htdocs
- statische Daten importieren:

Code: Alles auswählen

cat doc/sql/static-data/data.sql | mysql -uroot -p opencaching
... und nach jeder Fehlermeldung die entsprechenden Tabellenfelder bzw. Tabellen anlegen, solange bis es durchläuft: Felder jeweils mit phpMyAdmin hinzufügen, ganze Tabellen mit

Code: Alles auswählen

cat doc/sql/tables/<tabelle>.sql | mysql -uroot -p opencaching
Außerdem noch folgende Tabellen anlegen:

* cache_logs_archive
* coordinates
* mp3
* rating_tops

- Konfigurationsdateien aus altem Entwickersystem kopieren, ausgehend von /usr/local/apache2/htdocs:

Code: Alles auswählen

cp branches/dev/code/htdocs/config2/settings.inc.php server-3.0/htdocs/config2
cp branches/dev/code/htdocs/lib/settings.inc.php server-3.0/htdocs/lib
cp branches/dev/code/htdocs/util/mysql_root/settings.inc.php server-3.0/htdocs/util/mysql_root
und in server-3.0/htdocs/lib/settings.inc.php provisorisch Folgendes hinzufügen:

Code: Alles auswählen

	$opt['logic']['node']['id'] = 4;
	$opt['page']['subtitle1'] = 'Geocaching with Opencaching';
	$opt['page']['subtitle2'] = '';
	$opt['page']['title'] = 'OPENCACHING';
	$oc_waypoint_prefix = 'OC';
.. und in server-3.0/htdocs/config2/settings.inc.php  Folgendes:

Code: Alles auswählen

	$opt['template']['locales']['DE']['flag'] = 'images/flag/DE.gif';
	$opt['template']['locales']['FR']['flag'] = 'images/flag/FR.gif';
	$opt['template']['locales']['NL']['flag'] = 'images/flag/NL.gif';
	$opt['template']['locales']['EN']['flag'] = 'images/flag/EN.gif';
	$opt['template']['locales']['PL']['flag'] = 'images/flag/PL.gif';
	$opt['template']['locales']['IT']['flag'] = 'images/flag/IT.gif';
	$opt['template']['locales']['RU']['flag'] = 'images/flag/RU.gif';
	$opt['template']['locales']['ES']['flag'] = 'images/flag/ES.png';
	$opt['template']['locales']['JA']['flag'] = 'images/flag/JP.gif';
In den ersten beiden config-Dateien sind zusätzlich alle absoluten Pfade (.../oc-server/branches/dev/code/...) umzustellen.

(Kann sein dass in dem Config-Dateien noch mehr fehlt; die Einträge habe ich aus branches/dev/code/htdocs/config2/settings-dist-inc.php entnommen.)

- Stored Procedures importieren:

Code: Alles auswählen

php htdocs/doc/sql/stored-proc/maintain.php
- in server-3.0 ein .gitignore anlegen mit folgendem Inhalt:

Code: Alles auswählen

.gitignore
htdocs/cache/*
htdocs/cache2/*
htdocs/download/*
htdocs/images/statpics/*
htdocs/images/uploads/*
htdocs/config2/settings.inc.php
htdocs/lib/settings.inc.php
htdocs/util/mysql_root/settings.inc.php
In /usr/local/apache2/index.html die neue Website hinzufügen:

Code: Alles auswählen

      <a href="http://local.opencaching.de/oc-server/server-3.0/htdocs/">OC 3.0</a> website<br />
Damit dieser Link funktioniert, muss local.opencaching.de in der /etc/hosts (Windows: windows\system32\drivers\etc\hosts) des Gastsystems eingetragen sein.

Da ich Git als root verwende, fehlen in der Standard-Samba-Konfiguration (user apache) die Schreibrechte auf die Codedateien. Bis das sauber gelöst ist, hab ich den Samba-User auf root umgebogen und die filemasks geändert, ...
(entfällt, siehe unten)

Es kann sein, dass noch ein paar Tabellenfelder und/oder -indizes fehlen, aber grundsätzlich läuft's.

Nachtrag: weitere relevante Änderungen an der Datenbankstruktur:

- user: Feld "password": Länge 32 -> 512 Zeichen
- var_statpic: neues Feld "lang"
- xmlsession: neues Feld "remote_addr"

Außerdem gibt's noch ein paar geänderte Indizes.

Zweiter Nachtrag: Um die Datenbank exakt auf den richtigen Stand zu bringen, geht man am besten wie folgt vor:

1. http://local.opencaching.de/oc-server/server-3.0/htdocs/translate.php
2. SQL Export
3. cd /usr/local/apache2/htdocs/oc-server/server-3.0/htdocs/doc/sql/tables
4. git diff
5. die angezeigten Änderungen mit phpMyAdmin "rückwärts einbauen": grün = falsch, rot = richtig

Schritt 2-5 so oft wiederholen, bis git diff keine Änderungen mehr anzeigt.
Zuletzt geändert von following am 03.04.2013, 20:04, insgesamt 1-mal geändert.
following

Noch offene Probleme:

- Flaggen in der Titelzeile werden verzerrt dargestellt

- Auf der Suchseite erscheint oben die Warnung "Strict Standards:  Declaration of translateEdit::t() should be compatible with that of translate::t() in /usr/local/apache2/htdocs/oc-server/server-3.0/htdocs/lib2/translate.class.php on line 164" #4487 -> gefixt

- Auf der Suchseite gibt es noch ein paar Darstellungsprobleme. wurde durch die Fehlermeldung verursacht

- Ticket #4504: falscher Pfad beim XML-Download

- sendmail macht Probleme, weil es den Hostname 'oc-devel' nicht auflösen kann.
Zuletzt geändert von following am 03.08.2012, 15:55, insgesamt 1-mal geändert.
Benutzeravatar
flopp
Vereinsmitglied
Vereinsmitglied
Beiträge: 1008
Registriert: 18.03.2012, 17:02

Jetzt bitte schlafen gehen :-)

Heute Abend probiere ich auch aus, ob ich die aktuelle Git-Version zum Laufen bekomme.

Was ich nicht verstehe (ich bin kein MySQL-Held): warum ist das manuelle Anlegen von Tabellen und Feldern nötig? Kann man das nicht via Shellscript automatisieren?
[url=http://www.flopp-caching.de/]Flopps Tolle Karte[/url] | [url=http://www.florian-pigorsch.de/oc]OC[/url] | [url=http://www.florian-pigorsch.de/gc]GC[/url] | [url=http://florian-pigorsch.de/+]G+[/url] | [url=http://florian-pigorsch.de/t]Tw[/url] | [url=http://florian-pigorsch.de/fb]Fb[/url]
following

[quote="flopp"]
Was ich nicht verstehe (ich bin kein MySQL-Held): warum ist das manuelle Anlegen von Tabellen und Feldern nötig? Kann man das nicht via Shellscript automatisieren?
[/quote]

Im jetzigen Zustand könnte es schiefgehen, z.B. wenn ein Tabellenfeld umbenannt wurde - das kann das Script nicht von einem gelöschten und neu angelegten Feld unterscheiden, d.h. es weiß nicht was mit den Dateninhalten zu tun ist. In Zukunft soll die Datenbank versioniert werden, dann geht's automatisch und man hat volle Kontrolle über die Inhalte: http://forum.opencaching-network.org/http://localhost//viewtopic.php?t=4

[quote="oliver"]
Zur Überprüfung könntest du über /translate.php einen Export der Datenstruktur machen und dann über das GIT kontrollieren, ob Änderungen an den Dateien in doc/sql/tables gemacht wurden. Wenn nach dem Export in doc/sql/tables alle Dateien den aktuellen Zeitstempel haben und keine Änderungen drin sind, sind in deiner Datenbank alle Felder und Indizes vorhanden.
[/quote]

Danke für den Tip. Es gibt 42 veränderte Tabellen.  :o  Der Großteil davon anscheinend hinzugefügte Kommentare und geänderte Defaultwerte und Feldgrößen. Da weiß ich ja, was ich die nächste Stunde zu tun habe.

Edit: Link für Thread Datenbankversionierung korrigiert
Zuletzt geändert von following am 03.04.2013, 20:05, insgesamt 1-mal geändert.
Benutzeravatar
bohrsty
Administrator
Administrator
Beiträge: 1367
Registriert: 30.03.2012, 22:54

[quote="following"]
[...]
Da ich Git als root verwende, fehlen in der Standard-Samba-Konfiguration (user apache) die Schreibrechte auf die Codedateien. Bis das sauber gelöst ist, hab ich den Samba-User auf root umgebogen und die filemasks geändert, damit der Apache die root-erzeugten Dateien noch lesen kann:

/etc/samba/smb.conf:

Code: Alles auswählen

[wwwroot] 
...
force user = root
force group = root
force create mode = 0664
create mask = 0664
[...]
[/quote]

Code: Alles auswählen

su - apache -c "git ..."
koennte helfen, aber vorher die aktuellen berechtigungen anpassen...
gruss Nils (bohrsty)

Bild
following

[quote="bohrsty"]

Code: Alles auswählen

su - apache -c "git ..."
koennte helfen, aber vorher die aktuellen berechtigungen anpassen...
[/quote]

Ok, das ist eindeutig die bessere Lösung. Ich passe mal die Beschreibung oben an.
following

[quote="following"]
- Flaggen in der Titelzeile werden verzerrt dargestellt
[/quote]

Liegt an den Pfaden auf die Flaggensymbole. Für neun Sprachen hab ich's korrigiert (siehe zusätzliche Einträge in config2/settings.inc.php oben); für Schwedisch, Norwegisch, Dänisch und Portugieisch gibt es keine Grafiken in images/flag. Ausblenden mit

Code: Alles auswählen

	$opt['template']['locales']['SV']['show'] = false;
	$opt['template']['locales']['NO']['show'] = false;
	$opt['template']['locales']['DA']['show'] = false;
	$opt['template']['locales']['PT']['show'] = false;
Benutzeravatar
flopp
Vereinsmitglied
Vereinsmitglied
Beiträge: 1008
Registriert: 18.03.2012, 17:02

Ich hatte noch einige Fehlermeldungen wegen fehlender Schreibrechte auf

Code: Alles auswählen

htdocs/cache2/smarty/compiled
htdocs/cache2/smarty/cache
und wegen fehlender Dateien:

Code: Alles auswählen

htdocs/cache2/labels-DE.inc.php
htdocs/cache2/menu-DE.inc.php
Da habe ich einfach die Dateien aus dem originalen Image genommen.
[url=http://www.flopp-caching.de/]Flopps Tolle Karte[/url] | [url=http://www.florian-pigorsch.de/oc]OC[/url] | [url=http://www.florian-pigorsch.de/gc]GC[/url] | [url=http://florian-pigorsch.de/+]G+[/url] | [url=http://florian-pigorsch.de/t]Tw[/url] | [url=http://florian-pigorsch.de/fb]Fb[/url]
following

Ein Problem bei Git via Samba (mit oder ohne GUI) ist die teils grottige Performance. Ein "git status" vom Windows-Host aus braucht bei mir 30 Sekunden, gegenüber ca. einer Sekunde auf der Linux-Konsole.

Nach etwas Recherche habe ich folgende Lösung gefunden: Man lege das lokale Repository auf den Windows-Host, gebe es frei und mounte es in der VM. Funktioniert einwandfrei. Der Nachteil ist dass sich der Zugriff vom Apache auf die Webdaten verlangsamt, dafür hat man volle Git-Power auf dem Host. Und man hat das Repository immer verfügbar, auch wenn die VM gerade nicht hochgefahren ist, ohne mit einem zweiten Klon arbeiten zu müssen (was recht umständlich ist, wenn man intensiv mit Branches arbeitet).
following

In config2/settings.inc.php und lib/settings.inc.php stehen diverse absolute URLs drin (.../oc-server/branches/dev/code/...), die sind auch noch anzupassen.
following

Ich habe den aktuellen Komplettstand der Entwicklersystem-Datenbank als Dump bereitgestellt, das erspart das Rumfrickeln an Einzeltabellen:

private URL vor Veröffentlichung des Threads entfernt

Einlesen mit

Code: Alles auswählen

bunzip2 oc.sql.bz2
cat oc.sql | mysql -uroot -p opencaching
(Passwort "developer")
Zuletzt geändert von following am 03.04.2013, 20:03, insgesamt 1-mal geändert.
Benutzeravatar
4_Vs
Vereinsmitglied
Vereinsmitglied
Beiträge: 3150
Registriert: 18.03.2012, 07:25

[quote="following"]

Code: Alles auswählen

su - apache -c "git clone https://github.com/<username>/server-3.0"
[/quote]
Mmmmh,

hier fängts an:

Code: Alles auswählen

su - apache -c "git clone https://github.com/4Vs/server-3.0"
This account is currently not available.
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)
following

[quote="4_Vs"]

Code: Alles auswählen

su - apache -c "git clone https://github.com/4Vs/server-3.0"
This account is currently not available.
[/quote]

hier ein paar Alternativen, vielleicht geht eine davon:

Code: Alles auswählen

su - apache -c "git clone git://github.com/4Vs/server-3.0"
sudo -u apache git clone https://github.com/4Vs/server-3.0
sudo -u apache git clone git://github.com/4Vs/server-3.0
und/oder wahlweise noch ein ".git" an die Adresse anhängen
Benutzeravatar
flopp
Vereinsmitglied
Vereinsmitglied
Beiträge: 1008
Registriert: 18.03.2012, 17:02

Ich denke die  Fehlermeldung "This account is currently not available." bezieht sich auf "apache" und hat nichts mit git zu tun.

"If you get this message attempting to ssh in or su’ing as another user, there is no valid shell set for this user."
[url=http://www.flopp-caching.de/]Flopps Tolle Karte[/url] | [url=http://www.florian-pigorsch.de/oc]OC[/url] | [url=http://www.florian-pigorsch.de/gc]GC[/url] | [url=http://florian-pigorsch.de/+]G+[/url] | [url=http://florian-pigorsch.de/t]Tw[/url] | [url=http://florian-pigorsch.de/fb]Fb[/url]
Benutzeravatar
bohrsty
Administrator
Administrator
Beiträge: 1367
Registriert: 30.03.2012, 22:54

[quote="flopp"]
Ich denke die  Fehlermeldung "This account is currently not available." bezieht sich auf "apache" und hat nichts mit git zu tun.

"If you get this message attempting to ssh in or su’ing as another user, there is no valid shell set for this user."
[/quote]

Korrekt, deshalb (je nach git-version) eine der sudo-varianten verwenden (bei Versionen <1.7 die mit git://), su logged mit komplettem profil ein, war mein Fehler  :-[
gruss Nils (bohrsty)

Bild
Antworten