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.
„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ń.