Optymalizacja pracy z instancjami local / staging / production. Krystian Szymukowicz (k.szymukowicz@sourcebroket.net)



Podobne dokumenty
Instalacja platformy Magento CE wersja szybka

Camspot 4.4 Camspot 4.5

Krok po kroku... (czyli jak stworzyć i wydrukować krzyżówkę)

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

Nowy szablon stron pracowników ZUT

Instalacja i konfiguracja serwera IIS z FTP

11. Autoryzacja użytkowników

CitiDirect Online Banking - portal CitiDirect EB

Internetowe bazy danych

Podręcznik Google. Cloud Print. Informacje o usłudze Google Cloud Print. Drukowanie przy użyciu usługi Google. Cloud Print.

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Pracownia internetowa w każdej szkole (edycja jesień 2005)

DBPLUS Data Replicator Subtitle dla Microsoft SQL Server. dbplus.tech

Twitter Status. plugin dla Joomla! 1.5. wersja 1.1

Krótka instrukcja instalacji

CMS Admin instrukcja administratora

Poradnik użytkownika pomoc techniczna

Przywracanie ustawień fabrycznych

KONFIGURACJA PRZEGLĄDAREK. Poniższa konfiguracja dedykowana jest dla Bankowości Internetowej SGB

TYPO3 eid : AJAX i nie tylko. Artur Cichosz Quintinity Interactive

COMODO IT & Security manager ABC konsoli w chmurze. str. 1. COMODO IT & Security Manager (ITSM) www:

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

Laboratorium - Konfiguracja ustawień przeglądarki w Windows XP

Laboratorium - Konfiguracja ustawień przeglądarki w Windows 7

Jak skonfigurować bezpieczną sieć bezprzewodową w oparciu o serwer RADIUS i urządzenia ZyXEL wspierające standard 802.1x?

Program szkolenia: Symfony, nowoczesny framework PHP

Oracle PL/SQL. Paweł Rajba.

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

TYPO3 może być proste. Spojrzenie edytora. Krystian Szymukowicz

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

git krótki przewodnik

Szkolenie Microsoft Lync Grupy Odpowiedzi

TRUCKER INSTRUKCJA WTYCZKI MAGENTO

Laboratorium - Konfiguracja ustawień przeglądarki w Windows Vista

Instrukcja obsługi Modułu Payu dla Moodle 2.x

trainxx tramxx

PODSTAWOWA KONFIGURACJA LINKSYS WRT300N

Sms. v Strona 1 z 17. FUTURE-SOFT SP. Z O.O. ul. Gosławicka2/ , Opole tel sales@future-soft.pl NIP:

Linksys/Cisco RT31P2, WRT54GP2. Instrukcja Konfiguracji

Problemy techniczne SQL Server

4. Jak połączyć profil autora w bazie Scopus z identyfikatorem ORCID. 5. Jak połączyć ResearcherID (Web of Science) z identyfikatorem ORCID

Instrukcja obsługi User s manual

Spis treści Ustawienia zaawansowane: Dotyczy użytkowników, którzy używają proxy... 40

Windows W celu dostępu do i konfiguracji firewall idź do Panelu sterowania -> System i zabezpieczenia -> Zapora systemu Windows.

Instrukcja instalacji

Szkolenie Microsoft Lync Korzystanie z roli pełnomocnika

Instalacja systemu zarządzania treścią (CMS): Joomla

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

SQL 4 Structured Query Lenguage

asix Autoryzacja dostępu do zasobów WWW systemu asix (na przykładzie systemu operacyjnego Windows 2008)

Dokumentacja techniczna CMSphere EASY na podstawie wdrożenia dla Gminy Wieliszew

Instrukcja instalacji i użytkowania Modułu Your Pay dla Prestashop 1.6

Agenda. Wstęp Zmiany Co nowego dla web developerów? Nowości we front-end developingu Czego spodziewać się może końcowy użytkownik?

System zamówień aktywnych Active Orders Szkolenie dla Dostawców BWI Rozpoczęcie Pracy z Systemem. Grudzień 2010

Strona 1 NUMPAGES INSTRUKCJA OBSŁUGI KARTY DARK. CENTRUM USŁUG ZAUFANIA SIGILLUM Wersja 1.0

WICKET VS. DJANGO. Leszek Gawron vs. Michał Leszczyński

Formularze i ulubione

INFORMATOR TECHNICZNY WONDERWARE

Platforma e-learningowa

Krok 2 Podłącz zasilanie do routera bezprzewodowego. Uruchom komputer i zaloguj się jako administrator.

uczyć się bez zagłębiania się w formalnym otoczeniu,

Zarządzanie lokalnymi kontami użytkowników

Pracownia internetowa w każdej szkole (edycja jesień 2005)

INSTRUKCJA OBSŁUGI Program konfiguracji sieciowej Net configuration Drukarka A11

Instalacja platformy Magento CE

Collaborate more. Praca grupowa nad dokumentacją i komunikacja pomiędzy zespołami. Rzecz o mobilnej pracy w administracji publicznej

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

Oprogramowanie. DMS Lite. Podstawowa instrukcja obsługi

Collaborate more. Praca grupowa nad dokumentacją i komunikacja pomiędzy zespołami. Rzecz o mobilnej pracy w administracji publicznej

Bazy danych i usługi sieciowe

Systemy operacyjne i sieci komputerowe Szymon Wilk Konsola MMC 1

Linksys/Cisco SPA2102, SPA3102 Instrukcja Konfiguracji

Laboratorium 6 Tworzenie bloga w Zend Framework

Rozwiązanie oparte na bezpiecznym publikowaniu danych. Szybkie przeszukiwanie i przeglądanie na trójwymiarowym wirtualnym globusie

Bazy Danych i Usługi Sieciowe

INFORMATOR TECHNICZNY WONDERWARE

Instrukcja krok po kroku. Jak zintegrować FreshMaila z Google Analytics

Pracownia internetowa w szkole ZASTOSOWANIA

Paragon HFS+ for Windows

Podstawowe informacje na temat usuwania plików cookie dla rożnych typów popularnych przeglądarek internetowych

Instrukcja dodawania kamer

Instrukcja instalacji i konfiguracji bazy danych SQL SERVER 2008 EXPRESS R2. Instrukcja tworzenia bazy danych dla programu AUTOSAT 3. wersja 0.0.

Ustalanie dostępu do plików - Windows XP Home/Professional

Szkolenie Microsoft Lync Aplikacja Lync Web App

Marketing Automation:

Adam Wójs <adam[shift+2]wojs.pl> git --wprowadzenie

Zalecana instalacja i konfiguracja Microsoft SQL Server 2016 Express Edition dla oprogramowania Wonderware

Trochę o plikach wsadowych (Windows)

Artykuł sponsorowany przez

klikamy Next 4. Wybieramy zgodność z systemem Virtual Machine hardware compatibility z listy zaznaczamy Workstation 6 Next 5.

Instalacja i podstawowa konfiguracja aplikacji ImageManager

Połączenia. Instalowanie drukarki lokalnie (Windows) Co to jest drukowanie lokalne?

Zanim zaczniesz. Warto ustawić kartę sieciową naszego serwera.

Praca z programami SAS poza lokalną siecią komputerową UZ. Zestawienie tunelu SSH oraz konfiguracja serwera proxy w przeglądarce WWW

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Instrukcja instalacji oprogramowania dla środowiska Windows

INSTRUKCJA INSTALACJI PŁATNOŚCI TRANSFERUJ.PL

Uwierzytelnianie użytkowników sieci bezprzewodowej z wykorzystaniem serwera Radius (Windows 2008)

Transkrypt:

Optymalizacja pracy z instancjami local / staging / production Krystian Szymukowicz (k.szymukowicz@sourcebroket.net)

INSTANCJE APLIKACJI Jakich potrzebujemy? Czym mogą się różnić między sobą?

Z czym się zmierzymy? Production Backup Beta [timestamp] Previous Production (current) Production Replication 1 2 3 Integration 1 Integration 2 Integration n-1 Integration n 4 Developer 1 Developer 2 Developer n-1 Developer n n

Domeny Production Backup Beta [timestamp] Previous Production (current) Production Replication www1.yyy.com beta.yyy.com prev.yyy.com www.yyy.com www.yyy.com 1 2 3 Integration 1 Integration 2 Integration n-1 Integration n yyy.myagency.com yyy-2.myagency.com yyy-m.myagency.com yyy-n.myagency.com 4 Developer 1 Developer 2 Developer n-1 Developer n yyy.loc yyy.loc yyy.loc yyy.loc n

Domeny - multilang z multidomain Production Backup Beta [timestamp] Previous Production (current) Production Replication - www1.yyy.com - www1.yyy.pl - www1.yyy.de - beta.yyy.com - beta.yyy.pl - beta.yyy.de -... - prev.yyy.com - prev.yyy.pl - prev.yyy.de -... - www.yyy.com - www.yyy.pl - www.yyy.de -... - www.yyy.com - www.yyy.pl - www.yyy.de -... 1 2 3 Integration 1 Integration 2 Integration n-1 Integration n - yyy.myagency.com - pl.yyy.myagency.com - de.yyy.myagency.com -. - yyy.myagency.com - pl.yyy-1.myagancy.com - de.yyy-1.myagancy.com... 4 - yyy.myagency.com - pl.yyy-3.myagancy.com - de.yyy-3.myagancy.com... - yyy.myagency.com - pl.yyy-3.myagancy.com - de.yyy-3.myagancy.com... Developer 1 Developer 2 Developer n-1 Developer n - yyy.loc - pl.yyy.loc - de.yyy.loc - ch.yyy.loc -... - yyy.loc - de.yyy.loc - pl.yyy.loc - ch.yyy.loc -... - yyy.loc - ple.yyy.loc - de.yyy.loc - ch.yyy.loc -... - yyy.loc - pl.yyy.loc - de.yyy.loc - ch.yyy.loc -... n

Solr ustawienia hostów / core Production Backup Beta [timestamp] Previous Production (current) Production Replication Core: - /solr/live-yyy-1-0-en_en/ - /solr/live-yyy-1-1-pl_pl/ - /solr/live-yyy-1-2-de_de/ -.. Path: www.yyy.com site.solr.noindex = 1 Core: - /solr/beta-yyy-1-0-en_en/ - /solr/beta-yyy-1-1-pl_pl/ - /solr/beta-yyy-1-2-de_de/ -.. Path: www.yyy.com Core: - /solr/live-yyy-1-0-en_en/ - /solr/live-yyy-1-1-pl_pl/ - /solr/live-yyy-1-2-de_de/ -.. Path: www.yyy.com Core: - /solr/live-yyy-1-0-en_en/ - /solr/live-yyy-1-1-pl_pl/ - /solr/live-yyy-1-2-de_de/ -.. Path: www.yyy.com site.solr.noindex = 1 Integration 1 Integration 2 Integration n-1 Integration n Core: - /solr/dev-yyy-1-0-en_en/ - /solr/dev-yyy-1-1-pl_pl/ - /solr/dev-yyy-1-2-de_de/ -.. Path: yyy.myagency.com Core: - /solr/dev-yyy-1-0-en_en/ - /solr/dev-yyy-1-1-pl_pl/ - /solr/dev-yyy-1-2-de_de/ -.. Path: yyy.myagency.com Core: - /solr/dev-yyy-1-0-en_en/ - /solr/dev-yyy-1-1-pl_pl/ - /solr/dev-yyy-1-2-de_de/ -.. Path: yyy.myagency.com Core: - /solr/dev-yyy-1-0-en_en/ - /solr/dev-yyy-1-1-pl_pl/ - /solr/dev-yyy-1-2-de_de/ -.. Path: yyy.myagency.com Developer 1 Developer 2 Developer n-1 Developer n Core: - /solr/local-yyy-1-0-en_en/ - /solr/local-yyy-1-1-pl_pl/ - /solr/local-yyy-1-2-de_de/ -.. Path: yyy.myagency.com Core: - /solr/local-yyy-1-0-en_en/ - /solr/local-yyy-1-1-pl_pl/ - /solr/local-yyy-1-2-de_de/ -.. Path: yyy.myagency.com Core: - /solr/local-yyy-1-0-en_en/ - /solr/local-yyy-1-1-pl_pl/ - /solr/local-yyy-1-2-de_de/ -.. Path: yyy.myagency.com Core: - /solr/local-yyy-1-0-en_en/ - /solr/local-yyy-1-1-pl_pl/ - /solr/local-yyy-1-2-de_de/ -.. Path: yyy.myagency.com

Różne google/wtyczki DEFAULT FOR ALL INSTANCES: email = office@yyy.com Production Backup Beta [timestamp] Previous Production (current) Production Replication preventindexingbybots = 1 google.ga.disable = 1 search.indexing.disable = 1 preventindexingbybots = 1 google.ga.disable = 1 search.indexing.disable = 1 Integration 1 Integration 2 Integration n-1 Integration n preventindexingbybots = 1 google.ga.disable = 1 email = my11@gmail.com preventindexingbybots = 1 google.ga.disable = 1 email = my11@gmail.com preventindexingbybots = 1 google.ga.disable = 1 email = my11@gmail.com preventindexingbybots = 1 google.ga.disable = 1 email = my11@gmail.com Developer 1 Developer 2 Developer n-1 Developer n preventindexingbybots = 1 google.ga.disable = 1 email = my11@gmail.com search.disable = 1 search.indexing.disable = 1 preventindexingbybots = 1 google.ga.disable = 1 email = my11@gmail.com search.disable = 1 search.indexing.disable = 1 preventindexingbybots = 1 google.ga.disable = 1 email = my11@gmail.com search.disable = 1 search.indexing.disable = 1 preventindexingbybots = 1 google.ga.disable = 1 email = my11@gmail.com search.disable = 1 search.indexing.disable = 1

Dobrze jest ustawić takie domyślne wartości dla niebezpiecznych ustawień, które czynią najmniej szkody i nadpisać je w wyższych kontekstach.

Programista wdrażający się do projektu może zapomnieć lub nie być świadomy, że musi ustawić kontekst. Wówczas użyte zostaną bezpieczne wartości domyślne.

DEFAULT BEZPIECZNY DEFAULT BEZPIECZNY: google.ga.disable = 1 preventindexingbybots = 1 email = test.myagency@gmail.com overwriteallemails = test.myagency@gmail.com plugin.solr { [developers testing version] indexing.disable = 1 Production Backup Beta [timestamp] Previous Production (current) Production Replication overwriteallemails > google.ga.disable = 0 preventindexingbybots = 0 overwriteallemails > plugin.solr { [beta version settings] search.indexing.disable = 0 google.ga.disable = 0 preventindexingbybots = 0 overwriteallemails > plugin.solr { [live version settings] search.indexing.disable = 0 Integration 1 Integration 2 Integration n-1 Integration n Developer 1 Developer 2 Developer n-1 Developer n search.indexing.disable = 0

TIP general.overwriteallemails Jeżeli general.overwriteallemails jest ustawiony w evencie SwiftMailera modyfikujemy email tak, żeby wysyłal zawsze na naszego specjalnie spreparowanego emaila. Email docelowy: office@yyy.com Email testowy: test.myagency+office_yyy.com@gmail.com

TIP linkowanie mediów Im więcej instancji tym gigabajty mediów sprawiają większy problem. Rozwiązaniem może być tworzenie linków symbolicznych do pojedynczych plików. Skasować wówczas możemy tylko link a nie prawdziwy plik.

Podsumujmy ustawienia

Ustawienia dla każdej instancji w notacji TS Przykład dla strony bez języków google.ga.disable = 1 preventindexingbybots = 1 email = test.myagency@gmail.com overwriteallemails = test.myagency@gmail.com domains { main = www.yyy.loc plugin { solr { host = yyy.myagancy.com path { en = /solr/testing-yyy-1-0-en_en/

Ustawienia dla każdej instancji w notacji TS Przykład dla strony z językami w jednej domenie preventindexingbybots = 1 google { ga.disable = 1 search { indexing.disable = 1 frontend.disable = 1 backend.disable = 1 domains { main = www.yyy.loc plugin { solr { host = yyy.myagancy.com path { en = /solr/testing-yyy-1-0-en_en/ pl = /solr/testing-yyy-1-1-pl_pl/ de = /solr/testing-yyy-1-2-de_de/ www.yyy.com www.yyy.com/pl www.yyy.com/de

Ustawienia dla każdej instancji w notacji TS Przykład dla strony z językami w wielu domenach preventindexingbybots = 1 google { ga.disable = 1 search { indexing.disable = 1 frontend.disable = 1 backend.disable = 1 domains { england = www.yyy.loc poland = pl.yyy.loc germany = de.yyy.loc plugin { solr { host = yyy.myagancy.com path { en = /solr/testing-yyy-1-0-en_en/ pl = /solr/testing-yyy-1-1-pl_pl/ de = /solr/testing-yyy-1-2-de_de/ www.yyy.loc pl.yyy.loc de.yyy.loc

World of all applications World of TYPO3

Gdzie będziemy używali tych informacji?

Zwyczajowe miejsce tych danych to stałe w Typoscript

Gdzie będziemy używali tych informacji? WARUNKOWE RENDEROWANIE FRONTENDU TS SETUP: lib.header_search > lib.header_search = COA lib.header_search.if.isfalse = {$general.search.frontend.disable lib.header_search.wrap = <div class="search clearfix"> </div> lib.header_search.10 < plugin.tx_solr_pi_search

Gdzie będziemy używali tych informacji? WARUNKOWE WYSYŁANIE HEADERÓW TS SETUP: [globalvar = LIT:1 = {$general.preventindexingbybots] config.additionalheaders = X-Robots-Tag:noindex,nofollow [end]

Gdzie będziemy używali tych informacji? MULTILANG DLA DOMEN NARODOWYCH TS SETUP: // Poland version [globalstring = IENV:HTTP_HOST = {$domains.poland] [globalvar = GP:L = 1] config { sys_language_uid = 1 language = pl locale_all = pl_pl.utf-8 htmltag_langkey = pl plugin.tx_solr.index.queue.pages.indexer.frontenddatahelper.host = {$domains.poland [end]

Gdzie będziemy używali tych informacji? CORE i PATH DLA SOLR TS SETUP: plugin.tx_solr { solr { host = {$plugin.tx_solr.solr.host path = {$plugin.tx_solr.solr.path.en [globalstring = IENV:HTTP_HOST = {$domains.poland] [globalvar = GP:L = 1] plugin.tx_solr.solr.path = {$plugin.tx_solr.solr.path.pl [end] [globalstring = IENV:HTTP_HOST = {$domains.germany] [globalvar = GP:L = 2] plugin.tx_solr.solr.path = {$plugin.tx_solr.solr.path.de [end]

Gdzie będziemy używali tych informacji? KONFIGURACJA REALURL DLA DOMEN $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT']; $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com']['pagePath']['rootpage_id'] = 1; $TYPO3_CONF_VARS['EXTCONF']['realurl']['beta.yyy.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com']; $TYPO3_CONF_VARS['EXTCONF']['realurl']['yyy-1.myagency.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com']; $TYPO3_CONF_VARS['EXTCONF']['realurl']['yyy-2.myagency.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'];.... $TYPO3_CONF_VARS['EXTCONF']['realurl']['yyy.loc'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com']; unset($typo3_conf_vars['extconf']['realurl']['_default']); REAL URL DOKUMENTACJA O $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] _DEFAULT Key _DEFAULT Type ->sitecfg or pointer to other key with ->sitecfg in same array Description (Deprecated) Configuration of default Speaking URL coding if no matches was found for the specific HOST name. Warning! This is a legacy feature. The use of this option is highly discouraged because it leads to hard to detect errors with speaking URLs, wrong page id resolution, etc. Users are strongly recommended not to use _DEFAULT with multidomain web sites. This will not work correctly and be removed in future versions completely.

Jak zmieniać stałe TS w zależności od instancji? METODA 1 1. W każdej z instancji utworzyć plik ze stałymi w lokalizacji typo3conf/constants_local.ts i wylączyć ten plik z GIT 3. Dodać includowanie tego pliku w odpowiednim miejscu w TYPO3 <INCLUDE_TYPOSCRIPT: source="typo3conf/constants_local.ts"> WADY: 1. Przy dużej liczbie stałych i instancji TYPO3 wzrasta ryzyko błędów. 2. Brak śledzenia zmian z wykorzystaniem systemów wersjonowania. 3. Brak automatycznej propagacji zmian z wykorzystaniem systemów wersjonowania.

Jak zmieniać stałe TS w zależności od instancji? METODA 2 1. Utworzyć pliki ze stalymi zależnymi od instancji i dodać do GIT: fileadmin /typoscript/ constants/ constants_default.ts fileadmin /typoscript/ constants/ constants_default_local.ts fileadmin /typoscript/ constants/ constants_default_staging.ts fileadmin /typoscript/ constants/ constants_default_live.ts fileadmin /typoscript/ constants/ constants_local.ts fileadmin /typoscript/ constants/ constants_integration-1.ts fileadmin /typoscript/ constants/ constants_integration-n.ts fileadmin /typoscript/ constants/ constants_...ts fileadmin /typoscript/ constants/ constants_beta.ts fileadmin /typoscript/ constants/ constants_prev.ts fileadmin /typoscript/ constants/ constants_backup.ts fileadmin /typoscript/ constants/ constants_live.ts 2. Utworzyć plik typo3conf/constants_local.ts w każdej z instancji, wyłączyć go z GIT i dodać jego includowanie w TYPO3 <INCLUDE_TYPOSCRIPT: source="file:typo3conf/constants_local.ts"> 3. Dodać w nim includowanie pliku zależne od instancji <INCLUDE_TYPOSCRIPT: source="file:fileadmin/typoscript/constant/constants_default_local.ts"> <INCLUDE_TYPOSCRIPT: source="file:fileadmin/typoscript/constant/constants_local.ts">

Jak zmieniać stałe TS w zależności od instancji? METODA 2 WADY: 1. Przy dużej liczbie stałych i instancji TYPO3 wzrasta ryzyko błędów. 2. Brak śledzenia zmian z wykorzystaniem systemów wersjonowania. 3. Brak automatycznej propagacji zmian z wykorzystaniem systemów wersjonowania. 1. Nie mamy określonego kontekstu na poziomie PHP. 2. Nie uzyskamy stałych na niskim poziomie, kiedy nie ma jeszcze obiektu TSFE /realurl, eid, pliki ext_tables.php/ 3. Uzyskanie tych danych w BE wymaga sparsowania całego drzewa TS. 4. W warunkach w stałych nie można używać stałych. To nie zadziała w sekcji stałych: [globalstring = IENV:HTTP_HOST = {$domains.poland] [globalvar = GP:L = 1] plugin.tx_solr.solr.path = {$plugin.tx_solr.solr.path.pl [end]

PROPERTYMANAGER

Po co jest propertymanager? 1. Plik ze zmiennymi kontekstu wybierany automatycznie na podstawie kontekstu określonego w VHOST /.htaccess / PHP zmniejszamy liczbę miejsc konfiguracji. 2. Zmienne dostępne w PHP i w Typoscript. 3. Możliwość korzystania w PHP ze zmiennych na niskim pozimie. (index.php / ext_localconf.php etc) 4. Głośna informacja jeżeli zmianna kontekstowa nie jest ustawiona dla kontekstu a są do niej odwołania. 5. Parsing TS jest cachowany. Usuwanie cachu Clear all cache 6. Warunki ze stałymi w warunkach w sekcji CONSTANTS działają.

Przykładowa konfiguracja I W Extension Manager ustawiamy sciezkę do pliku głównego: files/resources/private/typosctipt/context/context_default.txt config.tx_propertymanager { required = 1 context { default { email = test.myagency@gmail.com overwriteallemails = test.myagency@gmail.com default_staging <.default default_live <.default default_live { email = test.myagency@yyy.com overwriteallemails = test.myagency@gmail.com kontekst1 <.default_live kontekst1 {... <INCLUDE_TYPOSCRIPT: source="file:files/resources/private/typosctipt/context/context_local.txt"> <INCLUDE_TYPOSCRIPT: source="file:files/resources/private/typosctipt/context/context_integration-1.ts"> <INCLUDE_TYPOSCRIPT: source="file:files/resources/private/typosctipt/context/context_integration-2.ts"> <INCLUDE_TYPOSCRIPT: source="file:files/resources/private/typosctipt/context/context_integration-3.ts"> <INCLUDE_TYPOSCRIPT: source="file:files/resources/private/typosctipt/context/context_beta.ts"> <INCLUDE_TYPOSCRIPT: source="file:files/resources/private/typosctipt/context/context_beta.ts"> <INCLUDE_TYPOSCRIPT: source="file:files/resources/private/typosctipt/context/context_34234234.ts"> <INCLUDE_TYPOSCRIPT: source="file:files/resources/private/typosctipt/context/context_prev.ts"> <INCLUDE_TYPOSCRIPT: source="file:files/resources/private/typosctipt/context/context_live.ts">

Przykładowa konfiguracja II Przykładowa zawartość: files/resources/private/typosctipt/context/context_local.ts config.tx_propertymanager { context { local <.default_local

Przykładowa konfiguracja III Przykładowa zawartość: files/resources/private/typosctipt/context/context_live.ts config.tx_propertymanager { context { live <.default_live live { google.ga.disable = 0...

Jak ustalić kontekst? 1) VHOST <VirtualHost 127.0.0.1:80> DocumentRoot "T:\workspace-typo3\projects\projekt - client1.loc" ServerName www.client1.loc SetEnv CONTEXT_IDENTIFIER local </VirtualHost> 2).htaccess SetEnv CONTEXT_IDENTIFIER local_developer1 3) Ustawiając $GLOBALS['CONTEXT_IDENTIFIER'] w pliku wyłączonym z GIT a) w TYPO3 < 6.0 w pliku typo3conf/localconf_local.php i includowanym w typo3conf/localconf.php b) w TYPO3 > 6.0 w pliku AdditionalConfiguration.php

Jak wykorzystać dane z kontekstów? W PHP: $propertymanager = t3lib_div::makeinstance('tx_propertymanager_manager'); $domains = $propertymanager->getproperty('domains.'); echo($domains['poland']); W CONSTANTS z poniższą notacją: email_1 = {@email email_2 = {@tx_myextension->getvalue('email') othervalue = {@tx_myextension->getsomevalue() domains { poland = {@domains.poland germany = {@domains.germany.. [globalstring = IENV:HTTP_HOST = {@domains.germany] [globalvar = GP:L = 2] plugin.tx_solr.solr.path = {@plugin.tx_solr.solr.path.de [end] W SETUP już standardowo używamy zwykłych CONSTANTS plugin.tx_ext { emailadmin = {$email

Realurl? KONFIGURACJA REALURL DLA DOMEN $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT']; $TYPO3_CONF_VARS['EXTCONF']['realurl']['beta.yyy.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com']; $TYPO3_CONF_VARS['EXTCONF']['realurl']['yyy-1.myagency.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com']; $TYPO3_CONF_VARS['EXTCONF']['realurl']['yyy-2.myagency.com'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com'];.... $TYPO3_CONF_VARS['EXTCONF']['realurl']['yyy.loc'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.yyy.com']; unset($typo3_conf_vars['extconf']['realurl']['_default']); include_once(path_site. '/typo3conf/ext/propertymanager/classes/class.tx_propertymanager_manager.php'); /** @var /* tx_propertymanager_manager $propertymanager */ $propertymanager = t3lib_div::makeinstance('tx_propertymanager_manager'); $domains = $propertymanager->getproperty('domains.'); foreach($domains as $domain) { $TYPO3_CONF_VARS['EXTCONF']['realurl'][$domain] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT']; unset($typo3_conf_vars['extconf']['realurl']['_default']);

RESTRICTFE

Wady autoryzacji.htaccess 1) długość autoryzacji to sesja Użytkownik zamknie przeglądarkę i musi autoryzować się raz jeszcze 2) żeby działała autoryzacja musimy zmienić plik vhosta lub htaccess. Do modyfikacji VHOSTa nie zawsze mamy dostęp a modyfikacja.htaccess wiąże się z jego wyłączeniem z GIT

Co może restrictfe?

Extension manager

Profil użytkownika

Aktywacja W pliku typo3conf/localconf_local.php /out off git/ $TYPO3_CONF_VARS['EXTCONF']['restrictfe']['enable'] = '0';

Zalety 1) Długość autoryzacji ustawiana dowolnie Użytkownik autoryzuje się raz ogląda wielokrotnie po zamknięciu / otwarciu przegladarki. Autozycacja trzymana w cookie, przy czym możemy wyczyścić po stronie TYPO3 autoryzację. 2) Strona powitalna nowej witryny Ponieważ template pojawiający się bez autoryzacji jest dowolny więc można przygotować stronę powitalną (Witamy! Już niedługo w tym miejscu będzie witryna naszej firmy ABC ). Użytkownicy, którzy zalogują się do TYPO3 w BE ekranu powitalnego nie zobaczą. 3) Brak autoryzacji dla określonych IP i headerów Są wtyczki do przegladarek/proxy, które ustawiają header do każdego requestu. 4) Nie trzeba modyfikować.htaccess Htaccess może pozostać w GIT. 5) Można wykorzysta na LIVE do blokady wersji językowych Witryna jest już LIVE, ale dodano nową wersję językową, którą trzeba przetłumaczyć. yyy.com/cz/ - bez blokady możliwość zindeksowania przez googla 6) Tylko jedno hasło do BE! User ma tyko hasło do BE nie potrzebuje hasła do.htaccess

Połączenie PROPERTYMANAGER I RESTRICTFE Wyłączenie widoku określonych domen językowych include_once(path_site. '/typo3conf/ext/propertymanager/classes/class.tx_propertymanager_manager.php' /** @var tx_propertymanager_manager $propertymanager */ $propertymanager = t3lib_div::makeinstance('tx_propertymanager_manager'); $domains = $propertymanager->getproperty('domains.'); foreach($domains as $domain) { if( $_SERVER['HOST'] == $domain['url'] && $domain['restrictfe']) $TYPO3_CONF_VARS['EXTCONF']['restrictfe']['enable'] = TRUE;

Dziękuję za uwagę RESTRICTFE http://typo3.org/extensions/repository/view/restrictfe PROPERTYMANAGER k.szymukowicz@sourcebroker.net Krystian Szymukowicz (k.szymukowicz@sourcebroker.net)