Na WordCamp Lublin 2017 miałem przyjemność wygłosić prezentację pod tytułem „Całkiem przyzwoity backup”.
W prezentacji tej przedstawiam solidne podstawy jak powinien być przeprowadzany poprawnie backup i na co zwrócić uwagę przy wykonywaniu kopii zapasowej. Nacisk położyłem na bezpieczeństwo backupów, zachowanie ich integralności i poufności. Część prezentacji zajmuje przedstawienie cyklicznego testowania, czyli przeprowadzanie procesu odtwarzania backupu w kontrolowanych warunkach. Bez testów przywracania backupu nie mamy pewności czy kopia zapasowa wykonuje się poprawnie.
Nadal szukam optymalnego rozwiązania dla dystrybucji tego pliku ale za długo to trwa…
Wklejam poniżej .htaccess z prezentacji wygłoszonej podczas Wordup Trójmiasto mam nadzieję że dobrze opisany, choć pozbawiony niektórych (mniej wordpressowych) treści omawianych podczas prezentacji.
## trochę podrasowany .htaccess pod wordpresa
## 19.12.2017
## wersja zgodna z apache 2.2 (i hostingami akceptującymi te znaczniki)
## używasz na własną odpowiedzialność :) #SOA1
## niektóre wtyczki/motywy dopisują swoje regółki do .htaccess więc zacznij od skopiowania swojego obecnego pliku .htaccess żeby było co przywrócić w czarnej godzinie
## w tym pliku skasuj pojedyncze # na początkach linii
## jak wiesz co robisz możesz skasować również i podwójne # w niektórych liniach
## dopasuj konfigurację ścieżek do plików zamieszczonych na Twoim serwerze
## utwórz plik z hasłami .htpasswd (https://goo.gl/sZJBbz) najlepiej w katalogu niedostępnym z poziomu www
## wgraj ten plik (który właśnie czytasz) w katalog główny wordpressa pod nazwą .htaccess
## oczywiście jeżeli zawarte tu parametry/warunki są niewystarczające należy je zmienić
## nieużywane przez siebie sekcje skasuj, większość alternatywnych jest oznaczona poprzez (można skasować)
## znajdź 666.666.666.666 i podmień na adres IP z którego się łączysz
## utwórz pliki .htaccess opisane w sekcji „inne katalogi” (nie zapomnij skasować w nich #)
## rozważ zmianę uprawnień do pliku .htaccess opisane w sekcja „prawa dostępu”
## skasuj wszystko poniżej linii # END WordPress
## wpadnij na wordup warszawa napić się rumu z @bibliotekarz
## aktualizacje pliku znajdziesz pod adresem http://am.vj.pl/2017/01/22/htaccess-do-wordpressa/
## dodanie nagłówka na cześć Terrego Pracheta (jesli lubisz jego twórczość) (można skasować)
# <IfModule headers_module>
# header set X-Clacks-Overhead „GNU Terry Pratchett”
# </IfModule>
## ograniczanie wielkości pliku przesyłanego na serwer z poziomu apacza w bajtach, 0-2147483647(2GB)
## poniżej ograniczenie do 10BM
# LimitRequestBody 10240000
## dodatkowe parametry dla php zwiększające
## rozmiar uploadu dla pojedyńczego pliku
# php_value upload_max_filesize 25M
## rozmiar upload dla wielu plików jednocześnie wysyłanych (czyli powinno być większe równe upload_max_filesize)
# php_value post_max_size 50M
## wydłużenie czasu wykonywania skryptu
# php_value max_execution_time 300
## wydłużenie czasu uploadu
# php_value max_input_time 300
###########################
## pakowanie i keszowanie #
###########################
## tworzenie znaczników ETag (można skasować)
## można wdrozyć ale lepiej się skupić na Expires (poniżej)
# <Files „\.(gif|jpe?g|png|pdf)$”>
# FileETag MTime Size
# </Files>
# <IfModule mod_expires.c>
# ExpiresActive On
# ExpiresByType image/jpg „access plus 1 year”
# ExpiresByType image/jpeg „access plus 1 year”
# ExpiresByType image/gif „access plus 1 year”
# ExpiresByType image/png „access plus 1 year”
# ExpiresByType text/css „access plus 1 month”
# ExpiresByType application/pdf „access plus 1 month”
# ExpiresByType text/x-javascript „access plus 1 month”
# ExpiresByType application/x-shockwave-flash „access plus 1 month”
# ExpiresByType image/x-icon „access plus 1 year”
# ExpiresDefault „access plus 2 days”
# </IfModule>
## wersja dla serwisów na home.pl bo u nich nie działają dyrektywy przytoczone powyższe (można skasować)
# :Location /*.(gif|jpg|png|jpeg|ico)
# Expires A3110400
# :Location
# :Location /*.(txt|css|js|php|pl)
# Expires A2592000
# :Location
# :Location /*.(html|htm)
# Expires A86400
# :Location
## na home.pl nie działa FilesMach (można skasować tylko w przypadku home.pl)
## 2592000 = 30 dni, 864000 = 10 dni
# <ifModule mod_headers.c>
# <FilesMatch „\.(js|css|xml|gz|html)$”>
# Header append Vary: Accept-Encoding
# </FilesMatch>
# Header unset ETag
# <filesMatch „\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$”>
# Header set Cache-Control „max-age=2592000, public”
# </filesMatch>
# <filesMatch „\\.(css)$”>
# Header set Cache-Control „max-age=864000, private”
# </filesMatch>
# <filesMatch „\\.(js)$”>
# Header set Cache-Control „max-age=864000, private”
# </filesMatch>
# <filesMatch „\\.(xml|txt)$”>
# Header set Cache-Control „max-age=2592000, public, must-revalidate”
# </filesMatch>
# <filesMatch „\\.(html|htm|php)$”>
# Header set Cache-Control „max-age=864000, private, must-revalidate”
# </filesMatch>
# </ifModule>
### wygodniejsza blokada z dostępem bez hasła (na podstawie adresu IP) możesz podać wiele adresów lub klasę sieci (można skasować)
## <Files wp-login.php>
## AuthType Basic
## require valid-user
## Order allow,deny
## Allow from 666.666.666.666
## Allow from 666.666.666.
## Satisfy Any
## </Files>
### ograniczenie dostępu tylko do lokalnej sieci i domeny tere.vj.pl (można skasować)
## <Limit GET POST PUT>
## order deny,allow
## deny from all
## allow from 192.168.0.0/24
## allow from .tere\.vj\.pl.*
## możemy jednak zablokować niechcianych
## deny from 192.168.0.19
## </Limit>
## 401 – Unauthorized przekierowanie na jakiś inny adres
## ErrorDocument 401 http://vj.pl/401.html
## 403 – Forbidden brak dostępu przekierowanie na lokalny plik
## ErrorDocument 403 /dostep_zablokowany.html
## 404 – Not Found czyli nie znaleziono wyświetli komunikat zawarty w cudzysłowach
## przekierowanie nie zadziała przy włączonych przyjaznych adresach w wordpressie
## ErrorDocument 404 „<h1>404</h1> <h2>oznacza że nie znaleziono tego pliku</h2>”
## 410 – Gone czyli niema i nie będzie wyświetli komunikat zawarty w cudzysłowach
## ErrorDocument 410 „plik zakończył żywot i nie wróci z tamtego świata<br>410”
## 500 – error czyli błąd serwera przekierowanie na lokalny plik
## ErrorDocument 500 /padla.html
## 301 przekierowanie permanentne na zawsze pod SEO dopasuj jeśli potrzebijesz lub skasuj sekcję
## Redirect 301 /duda.html http://prezydent.pl
## Redirect 301 /stary-folder/duda.html /nowy-folder/duda-nowy-ta-sama-domena.html
## Redirect 301 / http://vj.pl
## 302 przekierowanie tymczasowe dopasuj jeśli potrzebijesz lub skasuj sekcję
## Redirect 302 /wp-content/duda.html /wp-content/uploads/wymiana-wkladu-w-dlugopisie.html
## Redirect 302 /mod_rewrite.html https://httpd.apache.org/docs/2.4/rewrite/intro.html
## włączamy moduł mod_rewrite
# RewriteEngine on
## ustawiamy główną ścieżkę do katalogu wordpressa
# RewriteBase /
############# Dyrektywy ##########################
## Directory do katalogów na dysku serwera #
## Files do konkretnego pliku na dysku serwera #
## Location odwołuje się do adresu internetowego #
##################################################
############
## blokady #
############
## blokujemy przeglądanie katalogów i wykonywanie skryptów CGI
# Options All -ExecCGI -Indexes
## alternatywnie do blokowanie wyświetlania używamy
## dla wszystkiego
# IndexIgnore *
## dla poszczególnych typów plików (resztę będzie widać) dodaj rozszeżenie które chesz ukryć
# IndexIgnore *.backup *.old
# IndexIgnore *.txt
## Pliki zabronione pod wordpressa
# <FilesMatch „wp-config*\.php|\.htaccess|\.htpasswd”>
# Order allow,deny
# Deny from all
# </FilesMatch>
# <Files xmlrpc.php>
# Order deny,allow
# Deny from all
# </Files>
# <Files install.php>
# Order deny,allow
# Deny from all
# </Files>
# <Files readme.txt>
# Order allow,deny
# Deny from all
# </Files>
## dzięki „Satisfy any” umożliwiamy dostęp do plików w podkatalogu
# <FilesMatch „admin-ajax\.php|admin-post\.php”>
# Order allow,deny
# Allow from all
# Satisfy any
# </FilesMatch>
####################################################
## wymuszanie pobierania na podstawie rozszerzenia #
####################################################
## narzuca pobieranie plików z całego katalogu „uploads” zamiast wyświetlania
# <IfModule mod_headers.c>
# <Location ~ „.*/uploads/.*”>
# Order allow,deny
# Allow from all
# </Location>
# </IfModule>
### przekierowanie z głównej na subdomenę www (można skasować)
## RewriteCond %{HTTP_HOST} !^$
## RewriteCond %{HTTP_HOST} !^www\.test\.vj\.pl$ [NC]
## RewriteRule ^/(.*)$ http://www.test.vj.pl/$1 [L,R=301]
### <FilesMatch „admin-ajax\.php|admin-post\.php”>
### Order allow,deny
### Allow from all
### Satisfy any
### </FilesMatch>
### W katalogu wp-includes dodaj plik .htaccess o treści
### <FilesMatch „\.(?i:php)$”>
#### ?i: tryb http://www.gajdaw.pl/php/wyrazenia-regularne-pcre-php-tutorial/print.html#R22
### Order allow,deny
### Deny from all
### </FilesMatch>
### <Files wp-tinymce.php>
### Allow from all
### </Files>
### <Files ms-files.php>
### Allow from all
### </Files>
### W katalogu uploads dodaj plik .htaccess o treści
### <FilesMatch „\.(?i:php)$”>
### Order allow,deny
### Deny from all
### </FilesMatch>
##################
## prawa dostępu #
##################
## Standardowe uprawnienia .htaccess to 644 (rw- r– r–)
## zalecane Tryb tylko do odczytu .htaccess permissions to 444 (r– r– r–) (blokuje część wtyczek i zmiany ścieżek z poziomu administracji wordpressa)
Na WordUp Warszawa #prawielato miałem przyjemność wygłosić prelekcję o hostingach na których polska społeczność WordPressa trzyma swoje zasoby.
Prezentacja ta powstała na bazie ankiety „Gdzie są umiejscowione polskie wordpressy” przeprowadzonej w lutym 2015 roku wśród uczestników grup WordPress PL i WordPress Polska na facebooku. Pokazuje ona które hostingi są wykorzystywane pod wordpressa przez społeczność, oraz wskazujące na trzy najgorsze hostingi według uczestników ankiety.
Idea spotkań z WordPressem kwitnie od morza do gór ;).
Sobotę spędziłem w Lublinie w fajnym towarzystwie na innowacyjnym w formie spotkaniu. Dotychczas brałem udział w WordUpach i WordCampach ekipa z lublina zorganizowała laboratorium. Generalnie przebudowali trochę koncepcję spotkania (macałem w tym palce) na bardziej przeglądową niż warsztatową, ale wyszło dobrze. Jako że osoby które przyszły miały podobny poziom wiedzy, lepszym się wydawało zrobić przegląd jak się kompleksowo buduje stronę niż dzielić na grupy i zgłębiać zaawansowane tajniki.
Trochę się nalatałem za tą imprezą ale warto było.
Publiczność dopisała, tradycyjnie z zapisanych 106 osób na facebooku dotarło około 50.
Ciśnienie mi podniosło szukanie krzeseł, bo w knajpie twierdzili że mają, ale jak przyszło co do czego to po ustawieniu 2 rzędów te dostępne na sali się skończyły. Po rozmowie z właścicielem (żeby zainterweniował) menedżerka jednak odnalazła te zagubione krzesła i wszyscy mieli na czym usiąść. Tak czy inaczej ludzi przychodzi coraz więcej więc muszę pomyśleć o większej sali bo hoża 51 robi się za ciasna.
Prezentacja Dziudka o prędkości ładowania stron, kiedy i o co warto walczyć bomba, dopieszczona z przydatnymi adresami.
Najbardziej oczekiwana przeze mnie prezentacja Marcina merytorycznie fajnie, ale nie przewidział że projektor jest wiekowy i nie pociągnie rozsądnej rozdzielczości więc część slajdów była obcięta. Szacun wzbudzało skuteczne klikanie guzików których nie było widać ;)
Jurek z tego co przeglądałem też miał fajną prezentacje ale niestety musiałem czynić honory gospodarza imprezy i nie mogłem jej spokojnie wysłuchać. Kamera zadziałała Czytaj dalej →
Miło mi poinformować że będę prelegentem podczas najbliższego wiosennego WordUp w Warszawie. (06.03.2015 Hoża 51 zaczynamy prelekcje o 18:00)
Tematem mojej prelekcji będzie sposób używania standardowego edytora WordPress zarówno w trybie tekstowym jak i w trybie wizualnym.
Omówię różnice występujące miedzy tymi trybami, na konkretnych przykładach wskażę który tryb do czego warto używać i co można dzięki temu osiągnąć.
Zademonstruje kilka standardowych problemów i sposobów radzenia sobie z nimi. Pojawią się również kwestie związane ze stylami wpisanymi, znakami specjalnymi i zademonstruję możliwości jakie daje użycie html do formatowania treści.
„Strona” to coś stałego jak dokument, natomiast „Wpis” przyrównuję od kartki z zapiskami w kalendarzu.
Moim Klientom zawsze proponuję aby:
Informacje przyrostowe, nietrwałe i często zmieniające się zamieszczali jako „Wpisy”. Przykład: wiadomości z życia firmy, komunikaty, nowości, relacje z targów/konferencji…
Informacje zasadnicze, nieprzyrastające w czasie umieszczali jako „Strony”. Przykład: dane kontaktowe, statut, wyciąg z KRS, misja firmy, bilans, lista pozyskanych nagród…
Oczywiście należy edytować treść „Stron” żeby zawartość była aktualna, ale czyni się to raczej sporadycznie.
Dokładniejszy opis jak utworzyć stronę i jak utworzyć wpis, pojawią się za jakiś czas. Poniżej opisuję tylko unikalne cechy tych rozwiązań.
Informuje on o tym że skórka z której korzysta twój wordpress (czy inna strona) nie obsługuje wymaganego przez google znacznika „updated” w elemencie <entry>.
Niektórzy „specjaliści” radzą prostackie obchodzenie problemu poprzez wpisywanie daty publikacji jako daty aktualizacji.Teoretycznie rozwiąże to problem czerwonego komunikatu, ale będzie zrobione źle.
Taka „pseudonaprawa” prowadzi do zepsucia danych i problemów z ich dalszym maszynowym przetwarzaniem. Problem ujawni się w najmniej oczekiwanym momencie np. w chwili gdy będziemy chcieli artykuły z bloga opublikować w formie książki w której treści chronologia będzie miała znaczenie, lub przedstawić dokumentację cyklu życia artykułu.
Specyfikacja hAtom, przewiduje że w przypadku braku znacznika Updated powinien być „czytaj o Updated w hAtom”