Widziałem kilka pytań, które wyglądają podobnie, ale wszystkie zakończyły się wieloma witrynami . Ze względu na łatwość konserwacji, wydajność i bezpieczeństwo nie chcę korzystać z wielu witryn. Więc proszę o wyrozumiałość.
Właśnie o tym myślę:
.
|_____branch1 // for branch1.domain.com
| |_____themes
| |_____plugins
|
|_____branch2 // for branch2.domain.com
| |_____themes
| |_____plugins
|
|_____branch3 // for branch3.domain.com
| |_____themes
| |_____plugins
|
|_____index.php
|_____WordPress
|_____wp-config.php
Jak widać, każda domena ma własną bazę danych i katalog treści, ale tylko jedną instancję WordPress. Teraz motywy, wtyczki i bazy danych stają się mniejsze i niezależne. Wówczas znacznie łatwiej byłoby utrzymać, skalować ...
Ale czy to możliwe? Jeśli miałeś wcześniej ten sam problem, podziel się swoimi przemyśleniami! Doceniam twoją pomoc.
customization
multisite
SarahCoding
źródło
źródło
Odpowiedzi:
Jak powiedział @ tom-j-nowell w komentarzu do OP, multisite może to ułatwić.
Wydajność i bezpieczeństwo nie są tak naprawdę problemem dla wielu witryn (przynajmniej nie więcej niż dla zwykłych instalacji), ale zgadzam się, że wiele witryn może czasami stanowić problem, ponieważ wiele wtyczek (niestandardowych lub zewnętrznych) może nie działa poprawnie na wielu witrynach, a może dlatego, że chcesz całkowicie oddzielić użytkowników różnych witryn.
To powiedziawszy, co chcesz osiągnąć, nie jest takie trudne.
To, co musisz zmienić między instalacjami, to:
Tych konfiguracji można dokonać za pomocą stałych.
wp-config.php
Jedynym problemem jest przełączanie ich na podstawie adresu URL.Zmienna serwera
'SERVER_NAME'
powinna działać dla Ciebie, przynajmniej jeśli Twój serwer WWW jest poprawnie skonfigurowany.Na przykład możesz utworzyć folder o nazwie
/conf
na tym samym poziomiewp-config.php
pliku i/WordPress
folderu.W tym folderze możesz dodać niektóre pliki:
branch1.domain.com.conf
branch2.domain.com.conf
branch3.domain.com.conf
w każdym z nich możesz zrobić coś takiego
To zmieni się w każdym pliku konfiguracyjnym zgodnie z „oddziałem”.
Następnie w swoim unikatowym narzędziu
wp-config.php
możesz zrobić coś takiego:To, co dzieje się powyżej, polega na tym, że na podstawie nazwy serwera ładujesz inny plik konfiguracyjny (jeśli został znaleziony) i jeśli plik konfiguracyjny nie definiuje żadnej z konfiguracji domyślnej (lub jeśli plik nie został znaleziony) konfiguracja jest ustawiana domyślnie.
Fajną rzeczą jest to, że aby dodać nową gałąź, wystarczy utworzyć folder gałęzi i podać
.conf
nazwę po nowej domenie gałęzi, i gotowe - nie ma nic do zmiany po stronie WP.Linia:
to gdzie dostaję nazwę domeny. Jako pierwszą opcję używam zmiennej środowiskowej, ponieważ są szanse,
$_SERVER['SERVER_NAME']
że nie będą działać w kontekście wiersza poleceń, np. Podczas korzystania z WP CLI. W takich sytuacjach można ustawić zmienną środowiskową, aby zmusić WP do korzystania z ustawień z określonej gałęzi.Zauważ, że w plikach konfiguracyjnych specyficznych dla gałęzi zmieniam
WP_CONTENT_DIR
i, który automatycznie ustawi folder wtyczek i motywów na powiązane/plugins
i/themes
podfoldery gałęzi.Możliwym problemem jest tutaj, jeśli chcesz udostępnić
/uploads
folder (gdzie pliki są przesyłane).Domyślnie ten folder jest podfolderem zawartości katalogu, więc przy użyciu powyższego przepływu pracy będzie on
/uploads
podfolderem każdego folderu głównego oddziału.Jeśli nie jest to dla ciebie problemem, po prostu idź z nim, w przeciwnym razie najłatwiejszym rozwiązaniem byłoby uczynienie
/uploads
w każdym folderze oddziału dowiązania symbolicznego do prawdziwego folderu przesyłania, który chcesz udostępnić.źródło
$_SERVER['SERVER_NAME']
nie jest wiarygodny ./uploads
reż nie jest problemem. Testowałem również z WP CLI, jeśli przekażemy--url
parametr dla każdej strony, działa normalnie :)server_name
w Nginx,ServerName
Apache lub cokolwiek, co pasuje do twojego serwera,$_SERVER['SERVER_NAME']
po prostu będzie działać. Nawet jeśli WP CLI może--url
działać przy użyciu parametru, inne narzędzia wiersza poleceń mogą mieć problemy, jeśli nie używasz zmiennej środowiskowej. WP CLI „wyśmiewa” adres URL żądania w kontekście CLI, inne polecenia prawdopodobnie tego nie zrobią.SERVER_NAME
jest poprawnie skonfigurowany. Jeśli chodzi o env vars, użyłem phpdotenv, aby to naprawić. Obecnie wszystko wydaje się działać świetnie :)Jest to możliwe dzięki symlinkowaniu i odrobinie planowania. Poszukałem w sieci tego samego. Na koniec zbierz wszystkie rzeczy i spraw, by działały.
Uruchomiłem kilka stron internetowych, wszystkie mają ten sam folder motywów i wtyczek. Te same foldery działają dla wielu witryn i pojedynczych witryn. Ale musisz uważać na niektóre wtyczki, które mogą być tylko witryną Multi / Single i być dziwaczne.
Stworzyłem katalog taki jak master-tnp / themes i master-tnp / plugins. Następnie dowiązanie symboliczne do katalogu wordpress za pomocą polecenia ln -s.
Pułapki występują również w konfiguracjach serwerów. Upewnij się, że ustawiono opcję Śledź dowiązania symboliczne.
Jeśli chcesz skorzystać z instalacji Single WordPress, przygotowałem szczegółowy przewodnik na temat tego, jak to zrobiłem, pod adresem https://vaish.co/multiple-sites-single-wordpress-directory
źródło