|
Rozmiar: 3057
Komentarz: INIT
|
← Wersja 4 z 2021-04-06 12:43:04 ⇥
Rozmiar: 8213
Komentarz: + data rejestracji użytkownika - wymogi mySQLa, który nie dopuszcza datetime 0
|
| Usunięcia zostały oznaczone w ten sposób. | Dodatki zostały oznaczone w ten sposób. |
| Linia 3: | Linia 3: |
| <<BR>><<BR>> | |
| Linia 11: | Linia 11: |
| {{{#!shell numbers=off portupgrade -N www/wordpress |
Za pomocą własnego [[PoudriereBinaryPkg|repozytorium pakietów]] instalujemy pakiet w systemie: {{{#!highlight bash numbers=off pkg install -Uy www/wordpress |
| Linia 19: | Linia 20: |
| {{{#!shell numbers=off | {{{#!highlight bash numbers=off |
| Linia 30: | Linia 31: |
| {{{#!php numbers=off | {{{#!highlight php numbers=off |
| Linia 36: | Linia 37: |
| {{{#!php numbers=off | {{{#!highlight php numbers=off |
| Linia 53: | Linia 54: |
| {{{#!shell numbers=off | {{{#!highlight bash numbers=off |
| Linia 62: | Linia 63: |
| {{{#!php numbers=off | {{{#!highlight php numbers=off |
| Linia 76: | Linia 77: |
| = Dodanie administratora do WordPressa = Poniższy przepis dotyczy wykonania tego za pomocą bazy danych: {{{#!highlight mysql numbers=off -- utworzenie administratora INSERT INTO wp_users (user_login, user_pass, user_registered) VALUES ('admin1',md5('admin1'), now() ); -- zapami/etanie ID SELECT LAST_INSERT_ID(); INSERT INTO wp_usermeta( user_id, meta_key, meta_value) VALUES ( LAST_INSERT_ID(), 'wp_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}' ); }}} = Obsługa REDIS = !WordPress pozwala na przyspieszenie działania poprzez wykorzystanie serwera cache o nazwie ''Redis''. '''TBA''' = Konfiguracja po stronie nginx = Korzystając z możliwości [[NginxWebServer|nginx]] możliwe jest dobre zabezpieczenie samego !WordPress-a jak również jego przyspieszenie. == Zabezpieczenie WordPress == Konfiguracja [[NginxWebServer|nginx]] pozwala na bardzo dokładne oraz rozbudowanie sterowanie dostępem do wybranych plików, katalogów samego Wordpress-a, jak również zablokowanie niepożądanych żądań do serwera. Całość została umieszczona w [[UniMaster|repozytroium konfiguracji]] w plikach {{{#!highlight nginx numbers=off # Ograniczenie metod /z/ada/n HTTP jedynie do GET oraz POST. W przeciwym # przypadku zwracany jest kod "Zamkni/ecie sesji bez odpowiedzi" # if ($request_method !~ ^(GET|POST)$ ) { return 444; } # Blokowanie dost/epu do ukrytych plik/ow (jakichkolwiek) # Logowanie takich zdarze/n w celu dalszej analizy, np. fail2ban location ~ /\.(?!well-known) { deny all; } # Blokowanie dost/epu do plik/ow .php w katalogach uploads, wp-contetns, # itd. # # Dzia/la r//ownie/z w podkatalogach jak r/ownie/z w konfiguracji multisite # Logowanie takich zdarze/n w celu dalszej analizy, np. fail2ban location ~* /(?:uploads|files|(?:wp-content?!themes)|wp-includes|akismet)/.*\.php$ { deny all; } # Blokowanie innych skrypt/ow CGI, ale za wyj/atkiem csp-report.cgi # Zwracany jest kod "Zamkni/ecie sesji bez odpowiedzi" # location ~* \.((?:cgi<!csp-report)|pl|py|sh|lua)$ { return 444; } # blokowanie plik/ow potencjalnie niebezpiecznych # location ~* ^/(wp-config.php|wp-comments-post.php|readme.html|license.txt) { deny all; } # blokowanie dost/epu do xmlrpc # location ~ ^/xmlrpc.php$ { allow 127.0.0.0/8; allow ::1; # allow __ipv4__; # allow __ipv6__; deny all; } location ~ \.php$ { # przekierowanie dla nieistniej/acych plik/ow # if (!-f $document_root$fastcgi_script_name) { return 301 $scheme://$server_name; } include 022-wordpress-php-fastcgi.conf; # blokowanie dost/epu do wp-login # # limit_req_zone tylko w sekcji http{}, czyli nginx.conf ## limit_req_zone $binary_remote_addr zone=WPRATELIMIT:10m rate=5r/s; # location ~* /wp-login.php$ { limit_req zone=WPRATELIMIT; include 022-wordpress-php-fastcgi.conf; } } }}} Natomiast w sekcji ''http{}'' należy dodać ustawienie odpowiedzialne za ograczanie dostępu do ''wp-login.php'': {{{#!highlight nginx numbers=off # ograniczenie dost/epu do logowania do WP - ochrona przez pr/obami # z/l/amania logowania do WP # limit_req_zone $binary_remote_addr zone=WPRATELIMIT:10m rate=3r/s; }}} == Ustawienie cache dla stron dynamicznych == Konfiguracja [[NginxWebServer|nginx]] pozwala uruchomienie pamięci podręcznej dla stron dynamicznych (generowanych przez PHP, WSGI, itd). Z pamięci podręcznej serwowane są pliki statyczne, tak więc wyświetlanie danej strony jest znacznie szybsze. === sekcja http === W sekcji http należy wskazać konfigurację dla takiej pamięci podręcznej. Należy podać miejsce na dysku (katalog) z odpowiednimi prawami dostępu. W ramach konfiguracji określany jest maksymalny rozmiar pamięci "cache": {{{#!highlight nginx numbers=off # cache'owanie dynamicznych stron php # fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=phpcache:100m max_size=1g inactive=60m use_temp_path=off; fastcgi_cache_key "$scheme$request_method$host$request_uri"; }}} = Źródła w sieci internet = 1. <<Anchor(url1)>>[[https://www.ostraining.com/blog/wordpress/disable-a-wordpress-plugin/|Zablokowanie pluginu|target="_blank"]] 1. <<Anchor(url2)>>[[https://www.wpbeginner.com/beginners-guide/how-to-reset-a-wordpress-password-from-phpmyadmin/|Reset hasła w WP|target="_blank"]] 1. <<Anchor(url3)>>[[https://www.tipsandtricks-hq.com/create-a-wordpress-admin-user-for-a-wordpress-site-via-mysql-6649|Dodanie administratora poprzez bazę danych|target="_blank"]] 1. <<Anchor(url4)>>[[https://danielmiessler.com/blog/wordpress-nginx-speed-guide/|Przyspieszenie WP w nginx|target="_blank"]] |
|
| Linia 77: | Linia 191: |
| wordpress, CategoryBsd ---- |
{i} ` `<<GetVal(SlownikNewBsd,adm-podpis)>> |
Spis Treści
Konfiguracja Wordpress w multisite
Wordpress od wersji 3.x domyślnie posiada już multisite. Nazwane to zostało obecnie "sieciowością". Trzeba tylko dograć jeden moduł i będzie dobrze
Instalacja wordpress
Za pomocą własnego repozytorium pakietów instalujemy pakiet w systemie:
pkg install -Uy www/wordpress
Aby działał moduł domain mapping, konieczne jest zainstalowanie WP jako subdomena, a nie poprzez URL do głównej domeny.
Dogranie modułu domain mapping
Zgodnie z artykułem Multisite domain mapping trzeba zrobić następujące kroki:
mkdir -p /usr/local/www/wordpress/wp-content/blogs.dir
chown www:www /usr/local/www/wordpress/wp-content/blogs.dir
# pobranie pluginu multisite i rozpakowanie do roboczego katalogu
cp <tmp_dir>/domain_mapping.php /usr/local/www/wordpress/wp-content/plugins/
cp <tmp_dir>/sunrise.php /usr/local/www/wordpress/wp-content/
Modyfikacja konfiguracji wp-config.php
Wszystkie "dopiski" do wp-config.php wykonujemy przed komentarzem
define('WP_ALLOW_MULTISITE', true);
/* That's all, stop editing! Happy blogging. */
W kolejnym kroku można dopisać następujące linijki
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'wp.bsdserwis.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
define( 'SUNRISE', 'on' );
define( 'VHOST', true );
A potem to już przeglądarka
Pozostałe rzeczy to już przeglądarka. Tam już się klika, robi nowe blogi, itd.
Polonizacja Wordpress
Ponieważ Wordpress zainstalowany z ports, zatem chcemy tylko dokonać polonizacji, a nie instalacji całości źródeł. Tak więc trzeba pobrać odpowiednie pliki ze źródeł:
cd /tmp/
wget -nv -nH -r -X '..' -l 2 -A .po -A .mo http://svn.automattic.com/wordpress-i18n/pl_PL/tags/3.2.1/messages/
cp wordpress-i18n/pl_PL/tags/3.2.1/messages/pl_PL.* /usr/local/www/wordpress/wp-content/languages/
cp wordpress-i18n/pl_PL/tags/3.2.1/messages/twentyten/pl_PL.* /usr/local/www/wordpress/wp-content/themes/twentyten/languages/
cp wordpress-i18n/pl_PL/tags/3.2.1/messages/twentyeleven/pl_PL.* /usr/local/www/wordpress/wp-content/themes/twentyeleven/languages/
No i oczywiście w pliku wp-config.php zmieniamy wartość odpowiedniej zmiennej:
/**
* WordPress Localized Language, defaults to English.
*
* Change this to localize WordPress. A corresponding MO file for the chosen
* language must be installed to wp-content/languages. For example, install
* de_DE.mo to wp-content/languages and set WPLANG to 'de_DE' to enable German
* language support.
*/
define('WPLANG', 'pl_PL');
I już mamy polskiego wordpressa.
Dodanie administratora do WordPressa
Poniższy przepis dotyczy wykonania tego za pomocą bazy danych:
-- utworzenie administratora
INSERT INTO wp_users (user_login, user_pass, user_registered) VALUES ('admin1',md5('admin1'), now() );
-- zapami/etanie ID
SELECT LAST_INSERT_ID();
INSERT INTO wp_usermeta( user_id, meta_key, meta_value) VALUES ( LAST_INSERT_ID(), 'wp_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}' );
Obsługa REDIS
WordPress pozwala na przyspieszenie działania poprzez wykorzystanie serwera cache o nazwie Redis. TBA
Konfiguracja po stronie nginx
Korzystając z możliwości nginx możliwe jest dobre zabezpieczenie samego WordPress-a jak również jego przyspieszenie.
Zabezpieczenie WordPress
Konfiguracja nginx pozwala na bardzo dokładne oraz rozbudowanie sterowanie dostępem do wybranych plików, katalogów samego Wordpress-a, jak również zablokowanie niepożądanych żądań do serwera. Całość została umieszczona w repozytroium konfiguracji w plikach
# Ograniczenie metod /z/ada/n HTTP jedynie do GET oraz POST. W przeciwym
# przypadku zwracany jest kod "Zamkni/ecie sesji bez odpowiedzi"
#
if ($request_method !~ ^(GET|POST)$ ) {
return 444;
}
# Blokowanie dost/epu do ukrytych plik/ow (jakichkolwiek)
# Logowanie takich zdarze/n w celu dalszej analizy, np. fail2ban
location ~ /\.(?!well-known) {
deny all;
}
# Blokowanie dost/epu do plik/ow .php w katalogach uploads, wp-contetns,
# itd.
#
# Dzia/la r//ownie/z w podkatalogach jak r/ownie/z w konfiguracji multisite
# Logowanie takich zdarze/n w celu dalszej analizy, np. fail2ban
location ~* /(?:uploads|files|(?:wp-content?!themes)|wp-includes|akismet)/.*\.php$ {
deny all;
}
# Blokowanie innych skrypt/ow CGI, ale za wyj/atkiem csp-report.cgi
# Zwracany jest kod "Zamkni/ecie sesji bez odpowiedzi"
#
location ~* \.((?:cgi<!csp-report)|pl|py|sh|lua)$ {
return 444;
}
# blokowanie plik/ow potencjalnie niebezpiecznych
#
location ~* ^/(wp-config.php|wp-comments-post.php|readme.html|license.txt) {
deny all;
}
# blokowanie dost/epu do xmlrpc
#
location ~ ^/xmlrpc.php$ {
allow 127.0.0.0/8;
allow ::1;
# allow __ipv4__;
# allow __ipv6__;
deny all;
}
location ~ \.php$ {
# przekierowanie dla nieistniej/acych plik/ow
#
if (!-f $document_root$fastcgi_script_name) {
return 301 $scheme://$server_name;
}
include 022-wordpress-php-fastcgi.conf;
# blokowanie dost/epu do wp-login
#
# limit_req_zone tylko w sekcji http{}, czyli nginx.conf
## limit_req_zone $binary_remote_addr zone=WPRATELIMIT:10m rate=5r/s;
#
location ~* /wp-login.php$ {
limit_req zone=WPRATELIMIT;
include 022-wordpress-php-fastcgi.conf;
}
}
Natomiast w sekcji http{} należy dodać ustawienie odpowiedzialne za ograczanie dostępu do wp-login.php:
# ograniczenie dost/epu do logowania do WP - ochrona przez pr/obami
# z/l/amania logowania do WP
#
limit_req_zone $binary_remote_addr zone=WPRATELIMIT:10m rate=3r/s;
Ustawienie cache dla stron dynamicznych
Konfiguracja nginx pozwala uruchomienie pamięci podręcznej dla stron dynamicznych (generowanych przez PHP, WSGI, itd). Z pamięci podręcznej serwowane są pliki statyczne, tak więc wyświetlanie danej strony jest znacznie szybsze.
sekcja http
W sekcji http należy wskazać konfigurację dla takiej pamięci podręcznej. Należy podać miejsce na dysku (katalog) z odpowiednimi prawami dostępu. W ramach konfiguracji określany jest maksymalny rozmiar pamięci "cache":
# cache'owanie dynamicznych stron php
#
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=phpcache:100m max_size=1g inactive=60m use_temp_path=off;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
Źródła w sieci internet
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.
