Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Development LAMP stack in linux

Pagina: 1
Acties:

  • Oljoner
  • Registratie: Augustus 2013
  • Laatst online: 22-10 12:04
Dag medetweakers,

Ik ben er niet over uit of dit topic hier thuishoort of bij Non-Windows Operating Systems..


Als java developer ben ik het gewend met maven en jetty te werken om web based software te bouwen. Maar nu heeft een iemand me gevraagd tijdelijk enkele php sites over te nemen.

Ik werk hier op linux mint en probeer nu een lamp stack op te zetten. Op zich geen probleem, maar is het echt de bedoeling dat ik een server environment opzet om gewoon simpele development te doen? Is er een soort apache-php alternatief dat lijkt op "$ maven jetty:run"?

Indien ik toch een volledige server LAMP stack moet opzetten:
Hoe ga je om met meerdere projecten? Als ik van project wissel het project telkens naar de www root verplaatsen?
Het starten en stoppen van de mysql en apache servers dacht ik altijd manueel via commandline te gaan doen. Zijn hier handige alternatieven voor in bijvoorbeeld Eclipse PDT?

Alvast bedankt voor de info.

Verwijderd

Je kan een programma schrijven die de config file kan laten routen naar je verschillende project directories. Om daarna vervolgens ook de Lamp Server te laten resetten? :P Beetje een hack maar toch. Misschien bestaat er al zoiets. Als het enkel is om je PHP project te testen..

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21-11 14:12
Hoezo een hack? Je kan met Apache 'Virtual hosts' instellen, zodat elk domein naar een andere map verwijst. Dan kan je bijvoorbeeld website1.dev naar /var/www/html/website1/public laten verwijzen, website2.dev weer naar een andere map etc. Dan stel je op je computer in dat dat domein verwijst naar je lokale server (127.0.0.1 dus) en dan kan je in je browser http://website1.dev openen.

Je kan ook eens kijken naar Vagrant, dat gebruikt Virtual machines om een LAMP stack op te zetten, kan je je productieomgeving makkelijker namaken of verschillende configuraties (andere php versies etc) beheren. Die start je dan op als je het nodig hebt en kan je daarna weer afsluiten.
Daar kan je op eenzelfde manier je vhosts instellen, alleen verwijs je dan naar een ander IP adres in je hosts file.

Vanaf 5.4 heeft PHP ook een ingebouwde webserver, waar je naar zou kunnen kijken.

Verwijderd

Oljoner schreef op woensdag 04 juni 2014 @ 19:02:

Ik werk hier op linux mint en probeer nu een lamp stack op te zetten. Op zich geen probleem, ...
Precies, het is geen probleem, dus kun je het best gebruiken wat er ook op het uiteindelijke productiesysteem draait. Of dat nu een LAMP stack is of iets anders...
... maar is het echt de bedoeling dat ik een server environment opzet om gewoon simpele development te doen?
Voor gewoon simpel developmentwerk voldoet een simpele web application stack. Een eenvoudige LAMP stack is geen rocket science en werkt op Mint ook out of the box.
Is er een soort apache-php alternatief dat lijkt op "$ maven jetty:run"?
Meerdere, maar als je in productie iets anders gaat gebruiken dan is dat niet handig.
Hoe ga je om met meerdere projecten? Als ik van project wissel het project telkens naar de www root verplaatsen?
Virtual hosts, bijvoorbeeld een wildcard DNS record gebruiken dat naar je development IP verwijst (127.0.0.1 bijvoorbeeld), en dan per virtual host een webroot aanmaken of werken met mass virtual hosting of URL rewrites. De mogelijkheden zijn eindeloos, maar je moet niets hoeven kopieren om ergens aan te gaan werken.
Het starten en stoppen van de mysql en apache servers dacht ik altijd manueel via commandline te gaan doen. Zijn hier handige alternatieven voor in bijvoorbeeld Eclipse PDT?
Dat zou nooit nodig moeten zijn. En anders ben je echt met iets heel anders bezig dan met eenvoudige webdevelopment.

Tip: gebruik een virtuele server en firewall dat ding helemaal dicht zodat de developmentomgeving bijvoorbeeld nooit zomaar naar buiten kan mailen.

  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 21-11 13:20
Php heeft toch precies voor dit scenario ook een ingebouwde webserver?

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


  • Oljoner
  • Registratie: Augustus 2013
  • Laatst online: 22-10 12:04
Barryvdh schreef op woensdag 04 juni 2014 @ 19:51:

Je kan ook eens kijken naar Vagrant, dat gebruikt Virtual machines om een LAMP stack op te zetten, kan je je productieomgeving makkelijker namaken of verschillende configuraties (andere php versies etc) beheren. Die start je dan op als je het nodig hebt en kan je daarna weer afsluiten.
Daar kan je op eenzelfde manier je vhosts instellen, alleen verwijs je dan naar een ander IP adres in je hosts file.

Vanaf 5.4 heeft PHP ook een ingebouwde webserver, waar je naar zou kunnen kijken.
Vagrant klinkt interessant, ga ik zeker eens nader bekijken. De ingebouwde webserver is voor dit gebruik exact wat ik zoek, thanks!
Freeaqingme schreef op woensdag 04 juni 2014 @ 20:13:
Php heeft toch precies voor dit scenario ook een ingebouwde webserver?
Dit wist ik dus niet, maar het is inderdaad hetgene waarnaar ik op zoek was.

Verwijderd

En voor MySQL moet je wel een losse service draaien. Of ga je dat ook embedded doen?
Ik snap niet wat je probleem is met het draaien van een losse webservice.

Volgens mij is dit vragen om gedoe als het eenmaal in productie moet.

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21-11 14:12
Het gaat hem toch ook niet om productie, maar om development?

  • Oljoner
  • Registratie: Augustus 2013
  • Laatst online: 22-10 12:04
Verwijderd schreef op woensdag 04 juni 2014 @ 20:47:
En voor MySQL moet je wel een losse service draaien. Of ga je dat ook embedded doen?
Ik snap niet wat je probleem is met het draaien van een losse webservice.

Volgens mij is dit vragen om gedoe als het eenmaal in productie moet.
In development wil ik liefst zo weinig mogelijk gedoe met apache config files (die ik dan zou moet syncen met versie en config van de server) enz. De services houdt ik liever zo lean & kiss mogelijk, dus idd liefst embedded.
Mysql draai ik voorlopig als service. Misschien dat h2 of hsql in de toekomst een betere optie is. Dit zou het unit testen ook makkelijker maken (ik spreek hier vanuit mijn java ervaring met dbunit, weet niet of in php iets gelijkaardig bestaat).

Voor ik deploy naar productie doe ik toch eerst een deploy naar de testserver. Als zich daar dan problemen voordoen zal ik ze idd moeten oplossen, maar dat gaat zich volgens mij bijna niet voordoen.

Verwijderd

Het is wat mij betreft om een developmentomgeving in te richten die nodeloos afwijkt van wat er in productie draait.

Alles dat afwijkt moet je kunnen verantwoorden. Lokaal heb je minder storage, dat is meestal geen probleem. Lokaal heb je vaak minder geheugen, meestal ook geen probleem. Operating system en gebruikte software kun je over het algemeen zelf kiezen. Ik zie dus geen reden om niet ook een LAMP stack te gebruiken, als dat is wat in productie draait.

Elk verschil tussen development en productie is een potentieel probleem. En elk verschil moet je dus kunnen verantwoorden.
Oljoner schreef op woensdag 04 juni 2014 @ 21:14:
Voor ik deploy naar productie doe ik toch eerst een deploy naar de testserver. Als zich daar dan problemen voordoen zal ik ze idd moeten oplossen, maar dat gaat zich volgens mij bijna niet voordoen.
Goed om te lezen dat je een testserver hebt :)
In development wil ik liefst zo weinig mogelijk gedoe met apache config files (die ik dan zou moet syncen met versie en config van de server) enz.
Je zou normaal gesproken ook niet aan die configuratie moeten hoeven zitten. Volgens mij zie je daar problemen in die er niet zijn.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Freeaqingme:
Php heeft toch precies voor dit scenario ook een ingebouwde webserver?
Dit is in sommige gevallen inderdaad ook heel handig, maar heeft wel wat quirks en is niet zo stabiel.


Ikzelf draai gewoon lokaal Apache+mod_php5 en NginX+php-fpm die ik afwissel afhankelijk van de omgeving waar ik voor ontwikkel (dus inderdaad zo dicht mogelijk bij de productie-omgeving), met 1 configfile per hostname, maar als het ingewikkelder wordt dan een webserver met een paar virtualhosts en een database is Vagrant met degelijke provisioning al wel gauw wenselijk. Niet eens zozeer omdat het lastig zou zijn om je configuratie lokaal te hebben staan, maar je kunt dan allereerst echt heel dicht bij je productie-omgeving gaan zitten (met exact dezelfde versies van de software) maar er zijn nog meer voordelen te bedenken. Je kunt veel beter gebruik gaan maken van je hele stack, bijvoorbeeld het uitnutten van slimme rules in je NginX configuratie, het aanpassen van PHP ini settings, andere database-software (postgresql of percona), experimenteren met Varnish, Redis, HTTPS configuratie testen, deployment configuratie tweaken/developen, en, niet onbelangrijk, je kunt de serverconfiguratie makkelijk met anderen delen die daar dan ook aan kunnen werken.

Desondanks: opzetten van LAMP is peanuts en als je niet elke 2 dagen weer aan een nieuwe site werkt of regelmatig serverinstellingen tweakt zou ik gewoon een standaard apache met mod_php5 en virtualhosts met 1 host per file aanraden. Maak gewoon een scriptje waarmee je je virtualhost aanmaakt en een regeltje aan je /etc/hosts file toevoegt en je bent klaar. Als dat scriptje meer wordt dan 10 regels moet je ermee ophouden en na gaan denken over handigere oplossingen ;)

Verschillen in apache config t.o.v. productie moet je ook niet overschatten. Voor 999 van de 1000 sites voldoet een simpele standaardconfiguratie prima en kom je er als het eenmaal draait nooit meer aan. Met andere woorden: probeer niet nu problemen op te lossen die je in de toekomst eventueel zou kunnen gaan krijgen.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1