taka sama konfiguracja dla localhost i produkcji

8 views
Skip to first unread message

Jivanmukta

unread,
Sep 17, 2019, 10:03:35 AM9/17/19
to
Koduję w PHP na localhoście i wysyłam swoje programy na serwer przy
pomocy klienta FTP. Słyszałem, że można zrobić tak, żeby konfiguracja na
localhości była identyczna z produkcją, ale nie wiem jakiego
oprogramowania się używa. Możecie mi podpowiedzieć? Pracuję na Linux
Mint; używam PHP, MySQL, NetBeans i poznaję Gita.

Szyk Cech

unread,
Sep 17, 2019, 11:19:15 AM9/17/19
to
Wielce chwalebne są twoje ambicje i czyny szlachetne! Automatyzacja prac
administracyjnych jest pragmatycznym podejściem do życia (o ile nie robi
się do tego sztucznej inteligencji która ma tendencje do buntowania się).
Zanim odpowiem na twoje pytanie spytam:
Czy aby na pewno chcesz mieć na serwerze produkcyjnym od razu to co u
siebie na dysku?!? Przecież bez testów (choćby ręcznych) to masakra
gwarantowana. Nie boisz się że ktoś Ci zmyje łeb za to?!?

Odpowiadając na twoje pytanie:
Metod jest kilka:
* Ja np. używam darmowych kont WWW i mam do nich dostęp przez FTP.
Dlatego napisałem sobie skrypt w Pyhon-ie jaki generuje mi wszystkie
moje strony (ja wcale ich nie generuję w locie tak jak np. niektórzy
robią w PHP) i ten skrypt ładuje mi je na konta FTP. Takie
skrypty/programy możesz napisać w dowolnym języku z biblioteką klienta FTP.

* Jeśli masz prawa administratora na swoim serwerze możesz użyć programu
rsynch do synchronizacji katalogów na różnych maszynach.

Jivanmukta

unread,
Sep 17, 2019, 11:36:54 AM9/17/19
to
W dniu 17.09.2019 o 17:19, Szyk Cech pisze:
> Czy aby na pewno chcesz mieć na serwerze produkcyjnym od razu to co u
> siebie na dysku?!? Przecież bez testów (choćby ręcznych) to masakra
> gwarantowana. Nie boisz się że ktoś Ci zmyje łeb za to?!?

Nie o to mi chodzi. Słyszałem, że można tak zrobić, żeby móc na
localhoście testować program, tak, żeby mieć konfigurację z hostingu.
Nie wiem czy nie chodzi o jakąś wirtualizację.

Jivanmukta

unread,
Sep 17, 2019, 11:50:07 AM9/17/19
to
W dniu 17.09.2019 o 16:03, Jivanmukta pisze:
Chyba już znalazłem:
https://gist.github.com/jaceklaskowski/bd3d06489ec004af6ed9

Marek S

unread,
Sep 17, 2019, 1:35:16 PM9/17/19
to
W dniu 2019-09-17 o 17:50, Jivanmukta pisze:
Albo nie chwytam problemu, albo coś mocno przekombinowałeś. Zwykle
różnica między dev'em a prod'em polega na bazie danych. Prod "żyje",
użytkownicy generują różne rzeczy w bazie. Tak więc raz na jakiś czas
wystarczy dumpa bazy produkcyjnej zassać do devowej. Oczywiście obie
bazy będą miały inny connection string - to jedyna różnica.

W swoich aplikacjach (pracuję pod własnym CMS'em a także w Symfony 4),
nigdy nie mam innego środowiska dev/prod i nawet nie wiem co trzeba by
zrobić aby zróżnicować obie wersje i po co.

--
Pozdrawiam,
Marek

Jivanmukta

unread,
Sep 17, 2019, 1:39:58 PM9/17/19
to
W dniu 17.09.2019 o 19:35, Marek S pisze:
A ja mam różnice w wartościach stałych globalnych i w informacjach
diagnostycznych oraz poziomie raportowania błędów. Używam CodeIgniter3.

Jivanmukta

unread,
Sep 17, 2019, 2:06:04 PM9/17/19
to
W dniu 17.09.2019 o 19:39, Jivanmukta pisze:
CodeIgniter ma w index.php stałą ENVIRONMENT która może mieć wartości
development/testing/production. Chciałbym mieć dla testing takie same
środowisko jak w hostingu, żebym mógł spokojnie testować aplikację na
localhoście. Stąd moje pytanie.

Marek S

unread,
Sep 17, 2019, 4:43:56 PM9/17/19
to
W dniu 2019-09-17 o 20:06, Jivanmukta pisze:

>> A ja mam różnice w wartościach stałych globalnych i w informacjach
>> diagnostycznych oraz poziomie raportowania błędów. Używam CodeIgniter3.
> CodeIgniter ma w index.php stałą ENVIRONMENT która może mieć wartości
> development/testing/production. Chciałbym mieć dla testing takie same
> środowisko jak w hostingu, żebym mógł spokojnie testować aplikację na
> localhoście. Stąd moje pytanie.

Teraz rozumiem. Akurat Ignitera nie znam ale powiem Ci jak takie rzeczy
robi się w Symfony czy w innych frameworkach. Jest to generalnie
uporządkowane.

Też występuje zmienna narzucająca tryby pracy aplikacji (dev/prod/co tam
chcesz). W oparciu o tą zmienną mogą być załadowane różne pliki
konfiguracyjne, w których można ustawiać poziomy raportowania błędów,
zmienne środowiskowe ($_ENV itp), ładować lub nie określone bundle i
wiele innych rzeczy można wtedy zrealizować.

No i do sedna: nie ma żadnych przeszkód aby na local'u (załóżmy, że w
trybie prod) załadować plik konfiguracyjny imitujący potrzebne Ci
zmienne środowiskowe + inne ustawienia (choćby wspomniany przez Ciebie
poziom raportowania błędów). Przełączysz się między trybami i otrzymasz
zupełnie inne ustawienia aplikacji. Jeden z wariantów może naśladować
to, co masz na hostingu.

Tak naprawdę, to prawie niczego nie trzeba robić aby uzyskać zgodność
środowiska. Tryb "prod" na lokalu może się zachowywać tak samo jak na
hostingu. Ja tak właśnie robię. Czyli jeśli chcę na lokalu sprawdzić jak
działa aplikacja w trybie prod - to zwyczajnie zmieniam tryb na prod.
Jedyna różnica w prodzie na hostingu i lokalu to duperele typu wskazanie
na inną bazę czy dorzucenie wymaganych zmiennych środowiskowych w pliku
konfigurującym. W Symfony są to pliki .env, .env.local Trzymam w nich
dosłownie parę linijek kodu.

--
Pozdrawiam,
Marek

Jivanmukta

unread,
Sep 18, 2019, 12:18:03 AM9/18/19
to
Ale ja chce mieć taką samą konfigurację PHP i MySQLa jak w hostingu.

Marek S

unread,
Sep 18, 2019, 1:25:50 PM9/18/19
to
W dniu 2019-09-18 o 06:18, Jivanmukta pisze:
> Ale ja chce mieć taką samą konfigurację PHP i MySQLa jak w hostingu.

Czyli nie chodzi o aplikację lecz o w/w. Ok, to już konkretniej brzmi
lecz nadal nie widzę problemu.

Co do PHP, to chyba nie ma problemu? Pobierasz ze stron producenta
odpowiednią wersję, instalujesz i masz. Ewentualnie w php.ini będzie
trzeba coś dodać lub ująć. Lokalnie możesz mieć dowolną ilość wersji PHP
jeśli będziesz miał potrzebę przełączania się między nimi.

Z bazą danych jest podobnie. To kwestia włączenia/wyłączenia paru opcji
aby wyrównać z wersją serwerową. Tu nawet jest jeszcze prościej bo
możesz z bazą łączyć się zdalnie jeśli nie chce Ci się dociekać co
włączyć. Robisz klona na zdalnym serwerze i z nim się łączysz.

O co chodzi zatem?

Ja tak właśnie pracuję. Na lokalu mam 3 wersje PHP, odpowiednie dla
poszczególnych projektów - po to by się zgadzały z tym, co na serwerze.
Z bazą mam jeszcze prościej bo nie używam badziewnego MySQLa, którego,
tak na marginesie już w zasadzie nie ma pod tą nazwą. Stosuję
PostgreSQL. Konfiguracja tej bazy jest praktycznie żadna więc ryzyko, że
będzie coś innego niż na serwerze - minimalne.

Nie bawię się w dockery czy VM-ki bo to z armatą na wróble.

--
Pozdrawiam,
Marek

Jivanmukta

unread,
Sep 19, 2019, 3:45:17 AM9/19/19
to
W dniu 18.09.2019 o 19:25, Marek S pisze:
Czyli jak się przełączam z development na testing to mam zmieniać pho.inu?

Jivanmukta

unread,
Sep 19, 2019, 5:07:56 AM9/19/19
to
W dniu 19.09.2019 o 09:45, Jivanmukta pisze:
php.ini

Marek S

unread,
Sep 19, 2019, 2:43:59 PM9/19/19
to
W dniu 2019-09-19 o 11:07, Jivanmukta pisze:
>>>
>> Czyli jak się przełączam z development na testing to mam zmieniać
>> pho.inu?
> php.ini

Nie, kompletnie nic nie masz robić. No chyba, że z jakiegoś wyszukanego
względu masz taką potrzebę. JA nigdy bym nie wpadł na to aby aplikacja w
testach miała mieć inne PHP niż na devie czy prodzie.

Jeszcze raz w punktach - może będzie klarowniej:

1. Patrzysz, jaką wersję PHP i konfigurację masz na serwerze.
2. Na komputerze lokalnym instalujesz taką samą i ustawiasz te same
parametry w php.ini.
3. Lokalnie zmieniasz sobie tryb pracy aplikacji prod/dev/test/cokolwiek
a PHP cały czas ma dokładnie to samo. Nic się nie zmienia.

Jeśli z kolei masz więcej projektów wymagających innych wersji PHP, to
dopiero wtedy przypisujesz sobie na lokalu różne wersje dla różnych
aplikacji. Możesz mieć bowiem wiele wersji na jednym komputerze (lokalnym).

--
Pozdrawiam,
Marek
Reply all
Reply to author
Forward
0 new messages