User Tools

Site Tools


de:start:howto:package_full_manual

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
de:start:howto:package_full_manual [2012/03/04 13:34]
TheCry [4. Inhalt der Datei sql_tables]
de:start:howto:package_full_manual [2012/03/07 18:04] (current)
TheCry
Line 36: Line 36:
  
 {{start:​app_struct_richtig.jpg?​nolink}} {{start:​app_struct_richtig.jpg?​nolink}}
 +
 +**Wenn ihr die Dateien der Webapplikation in das Verzeichnis kopiert, achtet auch folgende Dinge:**
 +    * Die Konfigurationsdatei(en) welche später vom [[de:​start:​howto:​package_installation_script|Paket Installations Skript]] erstellt werden müssen gelöscht werden
 +    * Der Inhalt von Verzeichnissen,​ wo die Webapplikation Cache-Dateien oder TEMP-Dateien ablegt muss geleert werden
  
 === Verzeichnis "​xml"​ === === Verzeichnis "​xml"​ ===
Line 91: Line 95:
   * **$sw_install_email** = Emailadresse für den späteren Login   * **$sw_install_email** = Emailadresse für den späteren Login
   * **$domain_name** = Domain Name (dort wo die Applikation installiert wird)   * **$domain_name** = Domain Name (dort wo die Applikation installiert wird)
-  * **$sw_dest_path** = Pfad wo die Applikation installiert werden soll (voller ​Pfad: /​var/​www/​virtual.....) +  * **$sw_dest_path** = Pfad wo die Applikation installiert werden soll (absoluter ​Pfad: /​var/​www/​virtual.....) 
-  * **$sw_path** = Pfad ab "​htdocs"​ +  * **$sw_path** = Pfad ab "​htdocs" ​(/​htdocs/​abc/​def) 
-  * **$url_path** = Hier wird ein Pfad erzeugt ohne htdocs und was dahinter liegt  (/​abc/​def......[z.B.: http://​meineDomain.tld/​abc/​def])+  * **$url_path** = Hier wird ein Pfad erzeugt ohne htdocs und was dahinter liegt  (z.B.: ​<del>http://​meineDomain.tld</​del>​/abc/def)
   * **$db_tables** = Datei mit dem Inhalt der Tabellen die einen Präfix brauchen   * **$db_tables** = Datei mit dem Inhalt der Tabellen die einen Präfix brauchen
  
Line 156: Line 160:
 Dazu wird in diesem Fall eine ApPI von Wordpress.org genutzt.\\ Dazu wird in diesem Fall eine ApPI von Wordpress.org genutzt.\\
 http://​api.wordpress.org/​secret-key/​1.1/​\\ http://​api.wordpress.org/​secret-key/​1.1/​\\
-Vor der Zeile ">**my $configfile_entry =**"​erstellt man folgende Zeile:+Vor der Zeile "**my $configfile_entry =**"​erstellt man folgende Zeile:
 <​code>​my $securekeys = `$main::​cfg{'​CMD_PHP'​} -n ./​get_secure_keys.php`;</​code>​ <​code>​my $securekeys = `$main::​cfg{'​CMD_PHP'​} -n ./​get_secure_keys.php`;</​code>​
 Dadurch wird die externe API aufgerufen und die Variable "​**$securekeys**"​ mit der Ausgabe der API befüllt. Die befüllte Variable "​**$securekeys**"​ wird dann unter **my $configfile_entry =** eingetragen.\\ Dadurch wird die externe API aufgerufen und die Variable "​**$securekeys**"​ mit der Ausgabe der API befüllt. Die befüllte Variable "​**$securekeys**"​ wird dann unter **my $configfile_entry =** eingetragen.\\
 Es gibt viele Möglichkeiten solche Variablen dynamisch zu erstellen. Genauere Informationen findest Du hier:  Es gibt viele Möglichkeiten solche Variablen dynamisch zu erstellen. Genauere Informationen findest Du hier: 
-[[de:​start:​howto:​package_external_scripts|Externe Skripte erstellen]]+[[de:​start:​howto:​package_external_scripts|Externe Skripte erstellen]]\\ 
 + 
 +Solltet Ihr mal Konfiguartionsdateien haben wo Einträge wie 
 +<​code>​var \$sitename = '​$domain_name';​ 
 +var \$dbtype = '​mysqli';​ 
 +var \$host = '​localhost';</​code>​ 
 +eingetragen werden müssen, dann achtet darauf, dass ihr Zeichen wie "**@, $, %, [**" escaped (einen \ vor das entsprechende Zeichnen, damit es seine Wertigkeit verliert). 
 +Wenn Ihr das nicht macht wird die Installation 100%ig fehlschlagen!
  
 === Sektion install ($processing_type eq "​install"​) === === Sektion install ($processing_type eq "​install"​) ===
Line 176: Line 187:
 close(SQL_TABLES);​ close(SQL_TABLES);​
 foreach my $sql_table_data_line (@sql_table_data) { foreach my $sql_table_data_line (@sql_table_data) {
-$sql = " +    ​$sql = " 
-RENAME TABLE +        RENAME TABLE 
-`"​.$sql_table_data_line."​` +            `"​.$sql_table_data_line."​` 
-TO +        TO 
-`"​.$sw_software_prefix.$sql_table_data_line."​` +        `"​.$sw_software_prefix.$sql_table_data_line."​` 
-+        
-"; +    "; 
-doSQL($sql);​+    doSQL($sql);​
 }</​code>​ }</​code>​
 Nutzt bitte diese Zeilen, weil damit funktioniert es auf jeden Fall. Nutzt bitte diese Zeilen, weil damit funktioniert es auf jeden Fall.
Line 193: Line 204:
 #Update Datebase with variables #Update Datebase with variables
 $sql = " $sql = "
-UPDATE +    ​UPDATE 
-`"​.$new_table_comments."​` +        `"​.$new_table_comments."​` 
-SET +    SET 
-`comment_date` = '"​.$setdatetime."',​ +        `comment_date` = '"​.$setdatetime."',​ 
-`comment_date_gmt` = '"​.$setdatetime."'​ +        `comment_date_gmt` = '"​.$setdatetime."'​ 
-WHERE +    WHERE 
-`comment_ID` = '​1'​ +        `comment_ID` = '​1'​ 
-;+    ;
 "; ";
 doSQL($sql);​ doSQL($sql);​
  
 $sql = " $sql = "
-UPDATE +    ​UPDATE 
-`"​.$new_table_options."​` +        `"​.$new_table_options."​` 
-SET +    SET 
-`option_value` = '​http://"​.$domain_name."'​ +        `option_value` = '​http://"​.$domain_name."'​ 
-WHERE +    WHERE 
-`option_id` = '​3'​ +        `option_id` = '​3'​ 
-;+    ;
 "; ";
 doSQL($sql);​ doSQL($sql);​
  
 $sql = " $sql = "
-UPDATE +    ​UPDATE 
-`"​.$new_table_options."​` +        `"​.$new_table_options."​` 
-SET +    SET 
-`option_value` = '"​.$domain_name."'​ +        `option_value` = '"​.$domain_name."'​ 
-WHERE +    WHERE 
-`option_id` = '​4'​ +        `option_id` = '​4'​ 
-;+    ;
 "; ";
 doSQL($sql);​ doSQL($sql);​
  
 $sql = " $sql = "
-UPDATE +    ​UPDATE 
-`"​.$new_table_options."​` +        `"​.$new_table_options."​` 
-SET +    SET 
-`option_value` = '"​.$emailadress."'​ +        `option_value` = '"​.$emailadress."'​ 
-WHERE +    WHERE 
-`option_id` = '​7'​ +        `option_id` = '​7'​ 
-;+    ;
 "; ";
 doSQL($sql);​ doSQL($sql);​
  
 $sql = " $sql = "
-UPDATE +    ​UPDATE 
-`"​.$new_table_options."​` +        `"​.$new_table_options."​` 
-SET +    SET 
-`option_value` = '​http://"​.$domain_name."'​ +        `option_value` = '​http://"​.$domain_name."'​ 
-WHERE +    WHERE 
-`option_id` = '​39'​ +        `option_id` = '​39'​ 
-;+    ;
 "; ";
 doSQL($sql);​ doSQL($sql);​
  
 $sql = " $sql = "
-UPDATE +    ​UPDATE 
-`"​.$new_table_posts."​` +        `"​.$new_table_posts."​` 
-SET +    SET 
-`post_date` = '"​.$setdatetime."',​ +        `post_date` = '"​.$setdatetime."',​ 
-`post_date_gmt` = '"​.$setdatetime."',​ +        `post_date_gmt` = '"​.$setdatetime."',​ 
-`post_modified` = '"​.$setdatetime."',​ +        `post_modified` = '"​.$setdatetime."',​ 
-`post_modified_gmt` = '"​.$setdatetime."',​ +        `post_modified_gmt` = '"​.$setdatetime."',​ 
-`guid` = '​http://"​.$domain_name."/?​p=1'​ +        `guid` = '​http://"​.$domain_name."/?​p=1'​ 
-WHERE +    WHERE 
-`ID` = '​1'​ +        `ID` = '​1'​ 
-;+    ;
 "; ";
 doSQL($sql);​ doSQL($sql);​
  
 $sql = " $sql = "
-UPDATE +    ​UPDATE 
-`"​.$new_table_posts."​` +        `"​.$new_table_posts."​` 
-SET +    SET 
-`post_date` = '"​.$setdatetime."',​ +        `post_date` = '"​.$setdatetime."',​ 
-`post_date_gmt` = '"​.$setdatetime."',​ +        `post_date_gmt` = '"​.$setdatetime."',​ 
-`post_content` = 'Dies ist ein Beispiel einer statischen Seite. Du kannst sie bearbeiten und beispielsweise Infos über dich oder das Weblog eingeben, damit die Leser wissen, woher du kommst und was du machst.\n\nDu kannst entweder beliebig viele Hauptseiten (wie diese hier) oder Unterseiten,​ die sich in der Hierachiestruktur den Hauptseiten unterordnen,​ anlegen. Du kannst sie auch alle innerhalb von WordPress ändern und verwalten.\n\nAls stolzer Besitzer eines neuen WordPress-Blogs,​ solltest du zur Übersichtsseite,​ dem <a href=\"​http://"​.$domain_name."/​wp-admin/​\">​Dashboard</​a>​ gehen, diese Seite löschen und damit loslegen, eigene Inhalte zu erstellen. Viel Spaß!',​ +        `post_content` = 'Dies ist ein Beispiel einer statischen Seite. Du kannst sie bearbeiten und beispielsweise Infos über dich oder das Weblog eingeben, damit die Leser wissen, woher du kommst und was du machst.\n\nDu kannst entweder beliebig viele Hauptseiten (wie diese hier) oder Unterseiten,​ die sich in der Hierachiestruktur den Hauptseiten unterordnen,​ anlegen. Du kannst sie auch alle innerhalb von WordPress ändern und verwalten.\n\nAls stolzer Besitzer eines neuen WordPress-Blogs,​ solltest du zur Übersichtsseite,​ dem <a href=\"​http://"​.$domain_name."/​wp-admin/​\">​Dashboard</​a>​ gehen, diese Seite löschen und damit loslegen, eigene Inhalte zu erstellen. Viel Spaß!',​ 
-`post_modified` = '"​.$setdatetime."',​ +        `post_modified` = '"​.$setdatetime."',​ 
-`post_modified_gmt` = '"​.$setdatetime."',​ +        `post_modified_gmt` = '"​.$setdatetime."',​ 
-`guid` = '​http://"​.$domain_name."/?​p=2'​ +        `guid` = '​http://"​.$domain_name."/?​p=2'​ 
-WHERE +    WHERE 
-`ID` = '​2'​ +        `ID` = '​2'​ 
-;+    ;
 "; ";
 doSQL($sql);​ doSQL($sql);​
  
 $sql = " $sql = "
-UPDATE +    ​UPDATE 
-`"​.$new_table_users."​` +        `"​.$new_table_users."​` 
-SET +    SET 
-`user_login` = '"​.$sw_install_username."',​ +        `user_login` = '"​.$sw_install_username."',​ 
-`user_pass` = '"​.$loginpasswordhash."',​ +        `user_pass` = '"​.$loginpasswordhash."',​ 
-`user_nicename` = '"​.$sw_install_username."',​ +        `user_nicename` = '"​.$sw_install_username."',​ 
-`user_email` = '"​.$sw_install_email."',​ +        `user_email` = '"​.$sw_install_email."',​ 
-`user_registered` = '"​.$setdatetime."',​ +        `user_registered` = '"​.$setdatetime."',​ 
-`display_name` = '"​.$sw_install_username."'​ +        `display_name` = '"​.$sw_install_username."'​ 
-WHERE +    WHERE 
-`user_login` = '​admin'​ +        `user_login` = '​admin'​ 
-;+    ;
 "; ";
 doSQL($sql);</​code>​ doSQL($sql);</​code>​
Line 319: Line 330:
 close(SQL_TABLES);​ close(SQL_TABLES);​
 foreach my $sql_table_data_line (@sql_table_data) { foreach my $sql_table_data_line (@sql_table_data) {
-$sql = " +    ​$sql = " 
-DROP TABLE IF EXISTS +        DROP TABLE IF EXISTS 
-`"​.$sw_software_prefix.$sql_table_data_line."​` +            `"​.$sw_software_prefix.$sql_table_data_line."​` 
-+        
-"; +    "; 
-doSQL($sql);​+    doSQL($sql);​
 } }
 </​code>​ </​code>​
  
-==== 3. SQL-DUMP ====+==== 3. Testen des Paket Installations Skript ==== 
 +Das [[de:​start:​howto:​package_installation_script|Paket Installations Skript]] kann man ganz einfach auf der Linux-Konsole auf Fehler testen.\\ 
 +Dazu gebt ihr einfach folgenden Befehl auf der Linux-Konsole ein: 
 +<​code>​perl Name_des_Installationsskripts</​code>​ 
 +ein. Wenn keine Fehler (das heisst alle Variablen definiert sind usw.) im [[de:​start:​howto:​package_installation_script|Paket Installations Skript]] sind wird folgende Ausgabe erscheinen:​ 
 +<​code>​[DEGUB] i-MSCP installer file - No Input Data available</​code>​ 
 +Andernfalls werdet Ihr schon erkennen wo das Problem liegt.\\ 
 + 
 + 
 +==== 4. SQL-DUMP ====
 Den SQL- Dump sollte man mit phpmyadmin ziehen. Dabei ist darauf zu achten das man auch den Haken "Füge DROP TABLE / VIEW / PROCEDURE / FUNCTION hinzu" setzt!\\ Den SQL- Dump sollte man mit phpmyadmin ziehen. Dabei ist darauf zu achten das man auch den Haken "Füge DROP TABLE / VIEW / PROCEDURE / FUNCTION hinzu" setzt!\\
 Den Dump speichert man dann als Den Dump speichert man dann als
Line 340: Line 360:
 Worauf ihr genau achten müsst findet Ihr hier: [[de:​start:​howto:​package_sql_dump|SQL Dump erstellen]] Worauf ihr genau achten müsst findet Ihr hier: [[de:​start:​howto:​package_sql_dump|SQL Dump erstellen]]
  
-==== 4. Inhalt der Datei sql_tables ====+==== 5. Inhalt der Datei sql_tables ====
 Dieses Datei liegt im Root-Verzeichnis des Paketes und beeinhaltet alle Tabellen, die später den Präfix erhalten sollen. Die Einträge bekommen keinen "​Präfix"​ davor. Um eine Auflistung der Tabellen zu bekommen, kann man in phpmyadmin "​**SHOW TABLES**"​ ausführen (vorher natürlich die richtige Datenbank auswählen). Diese Liste fügt man dann in eine Datei ein, die man "​sql_tables"​ nennt. Jetzt nur noch die existierenden Präfixe entfernen (Bei WordPress "​wp_"​). Im Beispiel von WordPress sehen die Einträge wie folgt aus: Dieses Datei liegt im Root-Verzeichnis des Paketes und beeinhaltet alle Tabellen, die später den Präfix erhalten sollen. Die Einträge bekommen keinen "​Präfix"​ davor. Um eine Auflistung der Tabellen zu bekommen, kann man in phpmyadmin "​**SHOW TABLES**"​ ausführen (vorher natürlich die richtige Datenbank auswählen). Diese Liste fügt man dann in eine Datei ein, die man "​sql_tables"​ nennt. Jetzt nur noch die existierenden Präfixe entfernen (Bei WordPress "​wp_"​). Im Beispiel von WordPress sehen die Einträge wie folgt aus:
 <​code>​commentmeta <​code>​commentmeta
Line 353: Line 373:
 usermeta usermeta
 users</​code>​ users</​code>​
-Wie man sieht, wurde aus "​wp_comments"​ jetzt "​comments"​. ​+Wie man sieht, wurde aus "​wp_comments"​ jetzt "​comments"​. 
 + 
 +==== 6. Packen des Paketes ==== 
 +Die Pakete werden immer als "​**tar.gz**"​ gepackt.\\ 
 +Andere Formate werden zur Zeit nicht unterstützt. Ich rate dazu die Pakete auf einem Linuxsystem zu packen.\\ 
 +Unter Windows könnte es da zu Problemen kommen.\\ 
 +Ich selbst erstelle immer einen Unterordner im Verzeichnis "​**tmp**"​. Bei WordPress z.B. "​**/​tmp/​wordpress/​**"​. Alle Dateien und Verzeichnisse (Paketstruktur) kopiere ich dort rein. Nun wechselt man in das angelegte Verzeichnis (**/​tmp/​wordpress**).\\ 
 +Jetzt überprüft an ob keine Datei ausführbar ist. Die Berechtigungen sollten wie folgt aussehen: 
 +   * Dateien "​**644**"​ 
 +   * Verzeichnisse "​**755**"​ 
 +Damit man nicht jedes Verzeichnis und jede Datei auf seine Richtigkeit überprüfen muss, kann man das ganz simple mit einem "​**find**"​ durchführen lassen. 
 +<​code>​find ./ -type f -print0 | xargs -0 chmod 0644 
 +find ./ -type d -print0 | xargs -0 chmod 0755 
 +</​code>​ 
 +Jetzt wird das Paket gepackt. Wichtig ist das man das Paket eine Ebene höher erstellen lässt! Die Namen für das Paket sollten eindeutig und auch leicht zu erkennen sein (**wordpress_3_3_1_de.tar.gz**). >>​Apllikationsname_Version_Sprache.tar.gz<<​ (Bitte keine Bindestriche und keine Punkte im Namen nutzen. Ersetzt diese mit einem Unterstrich "​**_**"​\\ 
 +Nun führt folgenden Befehl aus: 
 +<​code>​tar czvf ../​wordpress_3_3_1_de.tar.gz *</​code>​ 
 +Damit erstellt man nun ein Paket im Verzeichnis "​**/​tmp**"​ mit dem Namen "​**wordpress_3_3_1_de.tar.gz**"​. Nun nur noch testen ob die Arbeit korrekt durchgeführt wurde. Ladet das Paket als Admin oder Reseller hoch und testet es als User.\\ 
 +Bei Problemen mit Paketen könnt Ihr Euch jederzeit im Forum melden. 
/var/www/virtual/i-mscp.net/wiki/htdocs/data/attic/de/start/howto/package_full_manual.1330868064.txt.gz · Last modified: 2012/03/04 13:34 by TheCry