Jump to content


Photo

Izstrādes/produkcijas vides noteikšana


  • Please log in to reply
34 replies to this topic

#1 briedis

briedis

    parastais, meža

  • Moderatori
  • PipPipPipPipPip
  • 3968 posts

Posted 2012.06.17 14:49

Vajag kaut kā noteikt, ka kods tiek darbināts izstrādes vidē.

Atradu jēdzīgu variantu ar virtualhost'u uzliekot vides mainīgo (SetEnv DEV "1"), ko pēc tam dabūjam ar getenv('dev').

Tiktāl labi,bet problēma ar CLI vidi - tur apache netiek aiztikts, un tāds vides mainīgais nepastāv.

REMOTE_ADDR arī nav jēga čekot, ko varētu darīt apaches gadījumā , jo tas ir tukšs zem CLI.

Varu čekot __FILE__ ceļa sākumu, bet tad tiek hardkodēta mana sistēmas konfigurācija, un tam zūd jēga, kad nebūšu vairs 1 izstrādātājs.

Idejas?
Neturi zināšanas zem pūra!

#2 rATRIJS

rATRIJS

    Es programmēju HTML

  • Moderatori
  • PipPipPipPip
  • 1507 posts

Posted 2012.06.17 15:31

Es vienmēr esmu izlīdzējies ar vides uzstādīšanu config failā. Works all the time...
Te ir ļoti elegants uz zinošs paraksts kas uzspridzina tavu prātu!!!

#3 marrtins

marrtins

    Programmēšanas meistars

  • Reģistrētie lietotāji
  • PipPipPipPip
  • 1464 posts

Posted 2012.06.17 16:47

Uztaisi wrapperi:
env DEV="1" /usr/bin/php /mans/php/fails.php

#4 briedis

briedis

    parastais, meža

  • Moderatori
  • PipPipPipPipPip
  • 3968 posts

Posted 2012.06.17 19:39

Es vienmēr esmu izlīdzējies ar vides uzstādīšanu config failā. Works all the time...


Kas tas par config failu? Viņš tiek versionēts? Tad sanāk, ka es vienkārši nevaru ielādēt kādu projekta versiju uz produkcijas servera, jo tas fails vienmēr būs jālabo uz produkcijas stāvokli :(

Pašlaik man konfig failā tiek uzsetota konstante, kas norāda vai ir dev vide (balstoties uz IP), un viss ok, kamēr nemēģinu darbināt no CLI to skriptu...

Uztaisi wrapperi:
env DEV="1" /usr/bin/php /mans/php/fails.php


Nesapratu, kur šis wraperis jātaisa? (piezīmēšu, ka produkcijas vide ir nix, bet izstrādāju zem win)

Edited by briedis, 2012.06.17 19:41.

Neturi zināšanas zem pūra!

#5 marrtins

marrtins

    Programmēšanas meistars

  • Reģistrētie lietotāji
  • PipPipPipPip
  • 1464 posts

Posted 2012.06.17 19:56

Ā, uz windiem. Nu tad jāpaeksperimentē.

test.php
<?php
 
print empty($_SERVER['DEV']) ? "PROD" : "DEV";

test.bat
set DEV=1
C:\php5\php.exe test.php

Edited by marrtins, 2012.06.17 19:57.


#6 marrtins

marrtins

    Programmēšanas meistars

  • Reģistrētie lietotāji
  • PipPipPipPip
  • 1464 posts

Posted 2012.06.17 20:04

Kas tas par config failu? Viņš tiek versionēts? Tad sanāk, ka es vienkārši nevaru ielādēt kādu projekta versiju uz produkcijas servera, jo tas fails vienmēr būs jālabo uz produkcijas stāvokli :(

Tāpēc taisam config-dist.php un uz konkrētās vides pārsaucam par config.php, kas, dabiski, ir ārpus versiju kontroles.

#7 rATRIJS

rATRIJS

    Es programmēju HTML

  • Moderatori
  • PipPipPipPip
  • 1507 posts

Posted 2012.06.17 20:45

Kaut kāds konfigurācijas fails jau vienmēr ir ārpus versiju kontroles sistēmas (db konekcijas detaļas, utt...). Tur arī var uzstādīt kas pa vidi tiek laista. Pēc noklusējuma uzskatīt var, ka vide ir produkcijas, lai izvairītos no negaidāmām problēmām :)
Te ir ļoti elegants uz zinošs paraksts kas uzspridzina tavu prātu!!!

#8 draugz

draugz

    Daudzsološais profiņš

  • Reģistrētie lietotāji
  • PipPipPip
  • 118 posts

Posted 2012.06.18 09:55

Es personīgi lietotu brieža minēto variantu ar __FILE__
Respektīvi ar __FILE__ palīdzību nodefinēt kontanti DEV
define('DEV', in_array(dirname(__FILE__), array(
'/home/draugz/www', //mana testa kaste
'/home/user2/www', //cits useris
)))


#9 draugz

draugz

    Daudzsološais profiņš

  • Reģistrētie lietotāji
  • PipPipPip
  • 118 posts

Posted 2012.06.18 09:57

Vēl uz ātro ienāca prātā, ka atsevišķos gadījumos varētu darīt tā
 define('DEV', is_file('dev'));
Respektīvi savā smilškastē tev ir fails dev, kuru tu nekad nepievienosi SVN un nekopēsi uz serveri :) ja faila nav tad tiek pieņemta ka tā ir produkcija

#10 briedis

briedis

    parastais, meža

  • Moderatori
  • PipPipPipPipPip
  • 3968 posts

Posted 2012.06.27 01:14

Paliku pie šī varianta - define('DEV', is_file('dev')); Skaidri un kompakti!

Paldies par diskusiju!
Neturi zināšanas zem pūra!

#11 Grey_Wolf

Grey_Wolf

    Koda dievs

  • Reģistrētie lietotāji
  • PipPipPipPipPip
  • 4615 posts

Posted 2012.06.27 18:01

Respektīvi savā smilškastē tev ir fails dev, kuru tu nekad nepievienosi SVN un nekopēsi uz serveri :) ja faila nav tad tiek pieņemta ka tā ir produkcija

Tas ir diezgan muļķigi, jo vienmēr var nejauši iekopēt to failu.

#12 Kavacky

Kavacky

    Programmēšanas meistars

  • Reģistrētie lietotāji
  • PipPipPipPip
  • 1902 posts

Posted 2012.06.27 18:03

Nejauši var arī DROP DATABASE uz produkcijas izpildīt.
Content Management System: A pretentious way of saying "text editor."

PHP programmēšanā ir kā sintezators mūzikā - pateicoties tam ar to nodarbojas 1000x vairāk cilvēku nekā vajadzētu, no kuriem to 99.9% nevajadzētu darīt.

#13 Grey_Wolf

Grey_Wolf

    Koda dievs

  • Reģistrētie lietotāji
  • PipPipPipPipPip
  • 4615 posts

Posted 2012.06.27 18:11

Nejauši var arī DROP DATABASE uz produkcijas izpildīt.

tas gan, bet nu vienkāršāk ir izveidot config failu kur pierakstās DB konekkcijas un tur arī ierakstīt kad tā ir produkcijas vide.

piem: vide=0; bet izstrādes vide pārsauc par vide=1 ....

pašu failu vers. kontrolē nodefinēt kā readonly un miers,
nebūs problēmu kad būs vairāki izstrādātāji, ar daždām izstrādes vidēm ( konfigurācijām) , piem testa db konekcijām utt. ( kautvai doc roota struktūru )

#14 Kavacky

Kavacky

    Programmēšanas meistars

  • Reģistrētie lietotāji
  • PipPipPipPip
  • 1902 posts

Posted 2012.06.27 18:35

Ja es sapratu tavu domu, tad kur atšķirība starp speciālu dev configu, ko arī nejauši var pārkopēt?
Content Management System: A pretentious way of saying "text editor."

PHP programmēšanā ir kā sintezators mūzikā - pateicoties tam ar to nodarbojas 1000x vairāk cilvēku nekā vajadzētu, no kuriem to 99.9% nevajadzētu darīt.

#15 Grey_Wolf

Grey_Wolf

    Koda dievs

  • Reģistrētie lietotāji
  • PipPipPipPipPip
  • 4615 posts

Posted 2012.06.27 18:41

Ja es sapratu tavu domu, tad kur atšķirība starp speciālu dev configu, ko arī nejauši var pārkopēt?

[cit] pašu failu vers. kontrolē nodefinēt kā readonly un miers, [/cit]

vienkārši neļaut kopēt pa virsu - pašus datus taču vienmēr var palabot caur FTP jo cik gan bieži uz servera manīsies db konekcijas informācija ...
piedevām tas ļauj izvairīties lai nejauši nesabojā kādu statisku info ( kautvai tie paši konekcijas dati, e-mail utt.. )
--
vel optimālāk kad vispār to failu uz katras vides izveido ar rokām, ( nu 5-6 rindiņas taču nav fatāli )un uzseto lai nejauši nevarētu pārkopēt ...

Edited by Grey_Wolf, 2012.06.27 18:41.