Benutzer-Werkzeuge

Webseiten-Werkzeuge


dev:shelltricks

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
dev:shelltricks [2014/09/12 15:20]
phi [imapsync]
dev:shelltricks [2018/05/14 08:36] (aktuell)
phi [Anzeige WP-CLI Version]
Zeile 86: Zeile 86:
  
 <code bash> <code bash>
-$ imapsync --host1 imap.oldhost.tld --ssl1 --port1 993 --authmech1 PLAIN --user1 old_user ​       ​--password1 oldPassword1234 ​\  +$ export IMAPSYNC_PASSWORD1=oldPassword1234 
-           ​--host2 imap.onlime.ch ​  --ssl2 --port2 993 --authmech2 PLAIN --user2 new@example.com ​--password2 newPasswordXYZ ​\+$ export IMAPSYNC_PASSWORD2=newPasswordXYZ 
 +$ imapsync --host1 imap.example.com --authmech1 PLAIN --user1 old_user \  
 +           ​--host2 imap.onlime.ch ​  ​--authmech2 PLAIN --user2 new@example.com \
            ​--delete2 --delete2folders            ​--delete2 --delete2folders
 </​code>​ </​code>​
  
-<note tip>Unterstützt Ihr bisheriger Anbieter keine verschlüsselte ​IMAP-Verbindung via SSL/​TLS, ​passen ​Sie dies wie folgt an:+<note tip>imapsync erkennt automatisch,​ ob die IMAP-Server jeweils ​SSL/​TLS ​unterstützen und wählt in diesem Fall eine verschlüsselte Verbindung via Port 993. 
 +</​note>​ 
 + 
 +<note warning>​ 
 +**ACHTUNG:​** Wenn Sie den neuen Mailaccount bei Onlime bereits nutzen und nachträglich erneut die Daten des bisherigen Mailaccounts synchronisieren möchten (z.B. nach einer Umstellung der MX records im DNS)sollten ​Sie die Parameter ''​--delete2''​ und ''​--delete2folders''​ entfernen!\\ 
 +Ansonsten riskieren Sie, dass die neu eingegangenen E-Mails im neuen Mailaccount unwiederruflich gelöscht werden.
  
 <code bash> <code bash>
-$ imapsync --host1 imap.oldhost.tld        --port1 143 --authmech1 PLAIN --user1 old_user ​       ​--password1 oldPassword1234 ​\  +$ export IMAPSYNC_PASSWORD1=oldPassword1234 
-           ​--host2 imap.onlime.ch ​  --ssl2 --port2 993 --authmech2 PLAIN --user2 new@example.com ​--password2 newPasswordXYZ \ +$ export IMAPSYNC_PASSWORD2=newPasswordXYZ 
-           ​--delete2 --delete2folders+$ imapsync --host1 imap.example.com --authmech1 PLAIN --user1 old_user \  
 +           ​--host2 imap.onlime.ch ​  ​--authmech2 PLAIN --user2 new@example.com
 </​code>​ </​code>​
 </​note>​ </​note>​
Zeile 116: Zeile 124:
 #######################################​ #######################################​
  
-EXTRALOG=sync.log 
 TSFORMAT="​%Y-%m-%d %H:​%M:​%S"​ TSFORMAT="​%Y-%m-%d %H:​%M:​%S"​
  
Zeile 122: Zeile 129:
 grep -ve '​^#​.*'​ $ACCOUNTS | while read SRCUSER SRCPW DSTUSER DSTPW grep -ve '​^#​.*'​ $ACCOUNTS | while read SRCUSER SRCPW DSTUSER DSTPW
 do do
-    MESSAGE="​[`date +"​$TSFORMAT"​`] synchronizing $SRCUSER@$SRCHOST to $DSTUSER@$DSTHOST ..."+    MESSAGE="​[`date +"​$TSFORMAT"​`] synchronizing $SRCUSER ​($SRCHOSTto $DSTUSER ​($DSTHOST..."
     echo $MESSAGE     echo $MESSAGE
-    echo $MESSAGE >> $EXTRALOG+    echo $MESSAGE >> ​imapsync_err.log 
 +    echo $MESSAGE >> imapsync_results.log
  
-    # security: ​temporarly store passwords ​to files in order +    # security: ​use environment variables for passwords in order 
     # not to pass them directly by command line option     # not to pass them directly by command line option
-    ​echo -n $SRCPW ​> imap-secret-src +    ​export IMAPSYNC_PASSWORD1="​$SRCPW" 
-    ​echo -n $DSTPW ​> imap-secret-dst+    ​export IMAPSYNC_PASSWORD2="​$DSTPW"
     ​     ​
     ## VARIANT 1) source host supports SSL/TLS (imap port 993)     ## VARIANT 1) source host supports SSL/TLS (imap port 993)
-    imapsync --host1 $SRCHOST ​--ssl1 --port1 993 --authmech1 PLAIN --user1 $SRCUSER ​--passfile1 imap-secret-src ​+    imapsync --host1 $SRCHOST --authmech1 PLAIN --user1 $SRCUSER \ 
-             ​--host2 $DSTHOST ​--ssl2 --port2 993 --authmech2 PLAIN --user2 $DSTUSER ​--passfile2 imap-secret-dst \ +             ​--host2 $DSTHOST --authmech2 PLAIN --user2 $DSTUSER ​2> imapsync_err.log > imapsync_results.log
-             ​--delete2 --delete2folders+
  
-    ## VARIANT 2) source host does not support SSL/TLS (imap port 143) +    ## VARIANT 2) source host has different INBOX prefix, transform it while syncing 
-    #imapsync --host1 $SRCHOST ​       --port1 143 --authmech1 PLAIN --user1 $SRCUSER --passfile1 imap-secret-src \ +    #imapsync --host1 $SRCHOST --authmech1 PLAIN --user1 $SRCUSER \ 
-    #         ​--host2 $DSTHOST --ssl2 --port2 993 --authmech2 PLAIN --user2 $DSTUSER --passfile2 imap-secret-dst \ +    #         ​--host2 $DSTHOST --authmech2 PLAIN --user2 $DSTUSER \ 
-    #         ​--delete2 --delete2folders +    #         ​--regextrans2 "​s/​INBOX.INBOX/​INBOX/" ​2> imapsync_err.log > imapsync_results.log
- +
-    ## VARIANT 3) source host has different INBOX prefix, transform it while syncing +
-    #imapsync --host1 $SRCHOST ​--ssl1 --port1 993 --authmech1 PLAIN --user1 $SRCUSER ​--passfile1 imap-secret-src ​+
-    #         ​--host2 $DSTHOST ​--ssl2 --port2 993 --authmech2 PLAIN --user2 $DSTUSER ​--passfile2 imap-secret-dst ​+
-    #         --delete2 --delete2folders ​--regextrans2 "​s/​INBOX.INBOX/​INBOX/"​ +
- +
-    rm -f imap-secret-*+
 done done
  
 MESSAGE="​[`date +"​$TSFORMAT"​`] imapsync sucessfully completed!"​ MESSAGE="​[`date +"​$TSFORMAT"​`] imapsync sucessfully completed!"​
 echo $MESSAGE echo $MESSAGE
-echo $MESSAGE >> ​$EXTRALOG+echo $MESSAGE >> ​imapsync_results.log
 exit 0 exit 0
 </​code>​ </​code>​
Zeile 294: Zeile 294:
 </​code>​ </​code>​
 </​note>​ </​note>​
 +
 +===== PHP fixes =====
 +
 +==== short_open_tag ====
 +
 +Short open tags (''<?''​ anstelle von ''<?​php''​) sind veraltet und wurden bei Onlime Webhosting ab PHP 5.5 standardmässig deaktiviert. Sie sollten Ihre PHP-Webapplikation bereinigen und alle PHP short open tags ersetzen.
 +
 +Wechseln Sie dazu in das gewünschte Verzeichnis (z.B. ''​public_html/​www/''​) und führen Sie ein rekursives Search-Replace aus:
 +
 +<code bash>
 +$ find . -iname '​*.php'​ -type f -print0 | xargs -0 sed -i -e '​s/<?​ /<?php /g' -e '​s/<?​\/​\//<?​php \/​\//​g'​ -e '​s/<?​\/​\*/<?​php \/​\*/​g'​ -e '​s/<?​$/<?​php/​g'​
 +</​code>​
 +
 +Dieser Befehl macht in all Ihren PHP-Dateien mit Endung ''​.php''​ folgende Ersetzungen:​
 +
 +^ von ^ nach ^
 +| ''<?''​ | ''<?​php''​ |
 +| ''<​nowiki><?//</​nowiki>''​ | ''<​nowiki><?​php //</​nowiki>''​ |
 +| ''<?/​*''​ | ''<?​php /​*''​ |
 +
 +<note important>​
 +**ACHTUNG!** Sofern Sie Ihre PHP-Dateien im DOS/​Windows-Format mit ''​CRLF''​ Zeilenenden abgespeichert haben, müssen Sie diese zuvor ins Unix-Format (empfohlen!) mit ''​LF''​ Zeilenenden umwandeln:
 +
 +<code bash>
 +$ find . -iname '​*.php'​ -type f -print0 | xargs -0 dos2unix
 +</​code>​
 +
 +Ansonsten klappt es mit der Ersetzung von ''<?''​ -> ''<?​php''​ vor Zeilenende nicht.
 +</​note>​
 +===== WP-CLI (Wordpress) =====
 +
 +  * [[http://​wp-cli.org/​|WP-CLI - A command line interface for WordPress]]
 +
 +WP-CLI ist ein Kommandozeilen-Werkzeug,​ mit dem sich viele Aufgaben einer WordPress-Installation schnell und übersichtlich erledigen lassen.\\
 +Sie brauchen WP-CLI nicht selbst zu installieren,​ denn es ist bereits von uns auf dem Webserver installiert und wird laufend von Onlime gewartet, d.h. es steht Ihnen auch immer die aktuellste Version zur Verfügung. Verwenden Sie ganz einfach den command ''​wp''​.
 +
 +==== Anzeige WP-CLI Version ====
 +
 +<code bash>
 +$ wp --version
 +WP-CLI 1.5.1
 +</​code>​
 +
 +==== Wordpress Installieren ====
 +
 +Wordpress lässt sich mit WP-CLI command [[http://​wp-cli.org/​commands/​core/​|wp core]] ganz einfach installieren:​
 +
 +<code bash>
 +$ cd ~/​webhome/​public_html/​www/​
 +$ rm -f default-index.php
 +
 +# download latest version of wordpress
 +$ wp core download
 +</​code>​
 +
 +Sie können beim Download von Wordpress auch gleich einen anderen Pfad und/oder eine andere Sprachvariante angeben:
 +
 +<code bash>
 +$ wp core download --path=/​var/​www/​web123/​public_html/​relaunch --locale=de_DE
 +</​code>​
 +
 +Anstatt sich durch den Setup-Assistenten von Wordpress zu quälen, können Sie dafür auch WP-CLI verwenden (ACHTUNG: Die Datenbank muss zuvor via unser [[https://​my.onlime.ch/​|Controlpanel]] eingerichtet werden, auch empfehlen wir, vorgängig das SSL-Zertifikat aufzuschalten via unser Controlpanel,​ sofern Sie die Site über HTTPS laufen lassen wollen:
 +
 +<code bash>
 +$ wp core config --dbname=web123_wp --dbuser=web123_wp --dbpass=************
 +$ wp core install --url='​https://​www.example.com'​ --title='​Test Site' --admin_user='​USER'​ --admin_email='​EMAIL'​
 +</​code>​
 +==== Migration / Search-Replace ====
 +
 +Nachdem Sie eine Wordpress-Installation auf eine andere Subdomain verschieben (z.B. via unser Subdomain-Swapping im [[https://​my.onlime.ch/​|Controlpanel]]),​ sollten Sie danach umgehend alle Hostnames und Server-Pfade ersetzen. Mit [[http://​wp-cli.org/​commands/​search-replace/​|wp search-replace]] ist dies ein Kinderspiel - WP-CLI behandelt dabei auch serialisierte Daten korrekt (was mit direkten SQL-Queries ein Ding der Unmöglichkeit wäre):
 +
 +<code bash>
 +$ wp search-replace '​relaunch.example.com'​ '​www.example.com'​ --dry-run
 +$ wp search-replace '/​var/​www/​web123/​public_html/​relaunch'​ '/​var/​www/​web123/​public_html/​www'​ --dry-run
 +</​code>​
 +
 +Sind Sie sich sicher, dass Sie das korrekte search-replace Muster gewählt haben, führen Sie den Befehl ohne Parameter ''​--dry-run''​ aus:
 +
 +<code bash>
 +$ wp search-replace '​relaunch.example.com'​ '​www.example.com'​
 +$ wp search-replace '/​var/​www/​web123/​public_html/​relaunch'​ '/​var/​www/​web123/​public_html/​www'​
 +</​code>​
 +
 +Bei einer Umstellung auf SSL machen Sie am besten ein Search-replace auf eine genügend spezifische URL, z.B.:
 +
 +<code bash>
 +$ wp search-replace '​http://​www.example.com'​ '​https://​www.example.com'​
 +</​code>​
  
dev/shelltricks.1410528043.txt.gz · Zuletzt geändert: 2014/09/12 15:20 von phi