Jump to content
php.lv forumi

Kodēšanas vides uzbūve


Infants

Recommended Posts

Sveiki.

Vēlējos uzzināt, kā programmē Tu. Tā, kā šis nav mans pamatdarbs, šobrīd notiek 'taustīšanās' un meklēšana pēc laba veida.

 

Man specifika ir šāda:

1. Ir VPS, uztaisīts subdomēns testēšanai.

2. Rakstu tajā no 2 datoriem (darbs, mājas)

3. Rakstu viens.

 

Sakarā ar to, ka uz darba mac negribu likt apachi, php, mysql, gribu visu tikko rakstīto syncot ar vps un web pārlūkā skatīties, ko esmu sarakstījis.

 

Ilgu laiku centos šādi - visās 3 vietās lokāli glabājas projekts, katru reizi pienākot pie datora, palaižu sync ar vps. Pēc tam, pie faila (lokāla) saglabāšanas, tas automātiski uploadējas uz vps, browserī tiek apskatīts. It kā viss ok, bet sinhronizēšana gļukus met. Laikam tāpēc, ka windows, mac un linux nesaprot, kuram ir faila jaunākā versija.

Varētu it kā failu vērt uzreiz caur ssh, bet nešķiet, ka tas būs pareizi.

 

Tagad mēģinu procesā iesaistīt github. Abi kodēšanas datori paņem no github jaunāko versiju, pēc izmaiņām atdod. Kad vajag browserī apskatīt, ssh pie vps, git pull.

Mīnuss? Pārāk ilgs laiks paiet, kamēr lokālais fails tiek uz webservera. Reizēm ir jāuztausta pareizais kods, tad tie commiti, pushi un pulli sāk kaitināt.

 

Var būt ir vēl kāds veids, kā pamēģināt? Jums visiem ir localhost, kur testēt? Varbūt tiešām jāraksta pa taisno caur ssh? Varbūt es ar git iesaistīšanu kaut ko ne tā esmu sapratis?

 

P.s. Paldies, ka izlasīji 'agrā rīta murgojumu'.

Link to comment
Share on other sites

Mercurial + RhodeCode. VPS nogriez sakarus ar ārpasauli izņemot savas kastes, webroot no RC noliec WWW un katrai repai saliec vhostus. Alternatīvi - Bitbucket ar POST hookiem, kas izsauc VPS un tas novelk izmaiņas. 

 

Nepiemirsti testa videi noliegt globāli apačē pieeju .hg un .git direktorijām. 

 

Tālāk mercuriāls uz abām development kastēm, http://mercurial.selenic.com/wiki/KeyringExtension

Pie manuāla commit nāksies a) pierast b) uzlikt lokālu apachi un php ar vienotu testa mysql

Edited by F3llony
Link to comment
Share on other sites

Labrīt!

 

Tātad mana shēma ir tāda:

 

1. Ir GitHub vai privātā repo uz sava servera,

2. Lokālajā datorā taisu pull/push un tur pat ir webserveris un datubāze;

 

Liels pluss ir tāds, ka Django (Python freims) atļauj izmantot iebūvēto dev-serveri un SQLite bekendu ORM abstrakcijai.

 

Līdz kodēšanai tieku minūtēs.

 

Deplojs http://dagrevis.lv/ notiek līdzīgi:

 

1. GitHub repo (https://github.com/daGrevis/daGrevis.lv) ir viss kods,

2. Uz cloud ar tiek palaists skripts, kurš:

2.1: Veic pullu,

2.2. Palaiž testus,

2.3: Palaiž migrācijas (pagaidām tur nav migrāciju, bet teorētiski),

2.4. Nokompilē SASS uz CSS (šeit var būt jebkas līdzīgs, piemēram, CoffeeScript uz JS),

2.5. Savāc visus statiskos failus,

2.6. Restartē webserveri (Nginx visiem statiskajiem failiem un Gunicorn Pythonam);

 

Šāds deplojs ir dažas minūtes.

 

Es te par Python muldu, bet teorētiski ar PHP ir līdzīgi.

Link to comment
Share on other sites

Uz lokālā datora Vagrant ar Chef receptēm kas izveido kopiju videi kas atrodas live. Darba kopija ir Git repositoriji uz lokālā datora. Direktorijas tiek šārētas caur Vagrant shared directories.

 

Uz servera ir vienkārši git pull. Šobrīd bez jebkādiem hookiem, jomtas nenotiek tik bieži lai veidotu problēmas (dažas reizes nedēļā).

Link to comment
Share on other sites

1. Ir GitHub vai Bitbucket,
2. Lokālajā datorā taisu pull/push un tur pat ir webserveris un datubāze

3. Ja lietoju VPS, tad nelietoju savu personīgo, jo nav vaidzības, paņemu nice1 VPS`u un tur viss ir pēc F3llony sistēmas.

 

Pie kodēšanas var tikt, kā jau daGrevis izteicās "minūtēs".

Uz lokālā attiecīgi, ja php tad - php5 + apache2 + mysql, ja python tad django + postgre vai sqlite. Priekš python izmantoju papildus virtualenv un vēl visādus interesantus, varbūt citus nekam nederīgus "tūļus".

 

Nekādas super ūber krutās pakas vairs nemetu virsū - reliģijas jautājums.

Link to comment
Share on other sites

Ja nu galīgi negribi ar visu šo maisīties, izmanto NFS. Uz lokālajiem datoriem turi savu IDE un visu pārējo bez Apaches un friends, piemontē sev NFS šāri no VPS lokāli un darbojies. Darbojas principā līdzīgi SSH, tikai ar mazāk dibena sāpēm, jo NFS darbojas nedaudz zemākā līmenī. Pats lietoju kad vajag no mājām pieslēgties darba datoram un no tā veikt kaut kādas darbības. Pēc tam, darbu pabeidzi, unmount un nekādu artefaktu lokāli izņemot instrumentus. 

Bet ar versiju kontroli vienalga iesaku sadraudzēties. 

 

 

P.S rATRIJS, vagrant normālā gadījumā ir lieka čakarēšanās. Normālā komandā vides jau ir sinhronas, permisijas un versijas skaidri noteiktas. Šīs ir kārtējās "zāles" pret līkiem pirkstiem. 

Edited by F3llony
Link to comment
Share on other sites

F

 

Ja nu galīgi negribi ar visu šo maisīties, izmanto NFS. Uz lokālajiem datoriem turi savu IDE un visu pārējo bez Apaches un friends, piemontē sev NFS šāri no VPS lokāli un darbojies. Darbojas principā līdzīgi SSH, tikai ar mazāk dibena sāpēm, jo NFS darbojas nedaudz zemākā līmenī. Pats lietoju kad vajag no mājām pieslēgties darba datoram un no tā veikt kaut kādas darbības. Pēc tam, darbu pabeidzi, unmount un nekādu artefaktu lokāli izņemot instrumentus. 

Bet ar versiju kontroli vienalga iesaku sadraudzēties. 

 

 

P.S rATRIJS, vagrant normālā gadījumā ir lieka čakarēšanās. Normālā komandā vides jau ir sinhronas, permisijas un versijas skaidri noteiktas. Šīs ir kārtējās "zāles" pret līkiem pirkstiem. 

 

Nekaada lieka chakareeshanaas tur nav un nezinu par kaadiem zaaleem tu runaa.

 

Vagrant box'shi uzstarteejas paardesmit sekunzhu laikaa. Build process parasti neaiznjem vairaak par dazhaam minuuteem (bet taa kaa vinji netiek biezhi buildoti tad shis neko dizhi neietekmee).

 

Un visu menedzheet ir krietni vieglaak:

  • lai jauns developer'is uzsaaktu dabuutu taadu pashu environment'u - viss kas nepiecieshams ir git pull, kas dabuu Vagrant setup'u un vagrant up lai uzstarteetu virtuaalaas kastes. (nu neskaitot pashus OS, Git, VirtualBox, Ruby, Vagrant un visus aplikaacijas dependencies (DB dump'i utt), bet lielaakaa dalja no shii taapat buutu jaastellee pat ja neizmantotu Vagrant)
  • viegli veidot environment modifikaacijas nesalauzhot veco environment. Piemeeram tagad tiek veidots uzlabojums esosham projektam, bet vairaaku toolju versijas ir citas kaa live environmentam + jauni toolji. Viss kas nepiecieshams bija nelielas izmainjas vagrant setupaa (jaunu kastu pievienoshana). Tajaa pat laikaa saglabaajot pieeju vecajam environment, jo paraleeli nepiecieshams veikt darbus arii tajaa. Viens cilveeks shiis izmainjas var izdariit, uzpushot un paareejie uztaisa git pull un uzstartee jauno environment'u. Nav katram jaamokaas lai uzliktu dazhaadas versijas vienam servisam un tamliidziigi.
  • ieprieksheejais punkts + ja ir jaauztur vairaakas aplikaacijas, kas izmanto dazhaadas versijas, servisus.
  • eerti testeet load balance'ingu 
  • nav jaapiesaarnjo savs local environment.
  • esoshaas Chef receptes var izmantot live un staging serveru uzstuteeshanai
Link to comment
Share on other sites

Okei, fine, šis varētu būt nepieciešams pie ļoti kompleksas programmatūras, kam ir ļoti konkrētas zema līmeņa vides atkarības, bet arī ne, jo kaut kādā virtuālmašīnā līnijas deva kastē normālu liela mēroga aplikāciju tu vienkārši nenobuildosi ar savu gigu rāmja uz boksu un vienu kodolu. Tam taču jau šobrīd pastāv build automation vides... 

 

Par loadbalance testing gan iesmēju. Virtualizācija un loadbalansa testēšana. Jep jep, esam līdz tam nonākuši... 

 

Bet nu fine, lieto jēl ko gribi. 

Link to comment
Share on other sites

Nevajag pat nekaadu ljoti kompleksu programmatuuru lai redzeetu kaadeelj tas ir noderiigi. Pietiek ar jebko, kur versijas live un jaunaas vides versijas nav backwards compatible.

 

Loadbalancinga testeeshana + virtualizaacija => staasti nu kas te ir taads par ko jaasmejas?

 

Galu galaa - neredzu daudz vietas kur Vagrant izmantoshana ir lieka chakareeshanaas.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...