Website(s) koppelen
Nu zit ik met het volgende in de maag; Elke keer als ik een update uitbreng op het systeem, wat soms meerdere keren per week gebeurd, moet ik dat naar alle FTP servers uploaden op de server waar de websites staan. Alle domeinnamen en webruimte is eigen beheer en kunnen de klanten ook niet bij.
Nu ben ik opzoek naar een alternatief hiervoor. Ik zou natuurlijk een update systeem kunnen aanbrengen waarbij de klanten een melding krijgen in het CMS systeem dat er een update beschikbaar is, en deze kunnen downloaden. Alle websites zijn identiek qua werking dus alle bestanden zijn ook hetzelfde.
Of ik ga iets ontwerpen waarbij ik alle bestanden op één FTP en in één Database kan zetten en dat de andere websites dus alleen een domeinnaam nodig hebben of één pagina voor de verwerking. In de Database kan dan worden aangegeven wat bij welke website hoort. Een algemene tabel met alle websites inclusief een ID. Dit lijkt mij een mooi oplossing? Maar is dat haalbaar?
Als één server de database afhandelingen niet kan verwerken kan er eventueel worden gekeken naar het bijvoegen van loadbalancers.
Ik hoop dat er hier mensen zijn die met mij mee willen denken voor een oplossing. Sowieso ga ik vanavond even wat dingen op papier zetten en het e.e.a. uitproberen.
Alvast bedankt en nog een fijne avond! ;-)
Ik denk niet dat mogelijke klanten er blij mee zullen zijn dat ze afhankelijk zijn van jouw server om hun systeem te laten draaien. Ik zou het bij een update-knop houden in het beheerderspaneel.
Hoe bedoel je dat precies? Elke website is toch afhankelijk van een of meerdere servers? Wil je dat beter uitleggen?
Als jij alle systemen op een FTP-server/database laat draaien, en de klanten het systeem aanschaffen. Dan zijn de klanten afhankelijk van jouw server. Ik kan me heel goed voorstellen dat klanten liever afhankelijk zijn van een eigen server, die als jij bijvoorbeeld failliet zou gaan blijft draaien.
Ik ben nu bezig om een klein licentie systeem te bouwen, zodat ik straks alleen een index file in de root van de domeinen hoef te zetten.
Als er nog andere gebruikers zijn die eventueel ideeën hebben, graag!
Bij Admin paneel (Als je die hebt) kun je een update knop maken, die een xml bestandje ophaalt waarin alle updates staan. Dan gaat hij de updates downloaden en toepassen.
Je moet dan een CMS opzetten waaraan je meerdere clients kan toevoegen en per client het CMS kan configureren.
Het is waarschijnlijk wel een redelijke klus, maar het gemak loont. :-)
(Misschien is het zelf volledig te automatiseren met een cronjob? Download bestanden van jouw server --> uitpakken & overschrijven #klaar)
Ik wil toch alles op een centrale server houden. Ik heb het e.e.a. getest met een licentie controller, en dat werkt op zich leuk. Ik plaats alleen een index op de desbetreffende website en, door middel van nu nog 'file_get_contents', of de website een geldige licentie heeft.
Ik moet nog eens goed nadenken hoe ik dit wil gaan realiseren, want ik wil alles via het web laten werken, dus geen gewijzigde apache files en custom configuraties. Als je snapt wat ik bedoel.
Ik heb de server lopen op host.mijnwebsite.nl, en hier wordt ook de licentie gecheckt. Zoals ik hierboven ook al aangaf, via de 'file_get_contents' functie, er wordt een POST header meegestuurd via 'stream_context_create'.
Het ontwerp van het CMS en systeem zelf is geen probleem. Het systeem is er al, dan wel niet OOP. Daarom ga ik nu beginnen met het schrijven van een simpel Framework en deze steeds uitbreiden, speciaal voor dit project. Dat is dus ook het voordeel van alles op één server, klanten krijgen niet continu updates te verwerken maar krijgen het eventueel door via de mail. Vindt ik toch een stuk professioneler.
Niels, ik ga inderdaad een multi-client CMS ontwerpen. Met in de toekomst modules en plug-ins die klanten zelf kunnen in- of uitschakelen.
Roel, ook bedankt voor jouw reactie!
Write Down, het zal nooit voorkomen dat dit systeem verkocht gaat worden onder een single-licentie. Ik neem aan dat je hiermee bedoeld dat klanten het systeem zelf hosten en via één licentie werken?
Bedankt voor de reacties! En blijf reageren ;-)
Bumpje ;)
Wat je zegt van professioneler, dat zou ik nog niet durven zeggen. Voor het gamepanel dat ik bv huur, wordt de update automatisch uitgevoerd door een cron-job, 's nachts om 3h zodanig er niemand wat van merkt. Dat vind ik eigenlijk ook wel professioneel.
Als je meerdere CMSen op 1 server draait, kan je twee problemen krijgen:
1 site gehackt -> alle sites gehackt
Als er een site veel meer bezoekers krijgt dan een andere (niet onwaarschijnlijk), kan de snelheid van de minder bezochte site er alsnog onder lijden.
Write Down, hoe zou ik dat simpeler kunnen doen? Ik wil alle licenties opslaan in de databse en in het CMS aan de klant tonen hoelang de licentie nog geldig is.
Pim, je hebt inderdaad een punt daarop. Maar daar moet je je ook tegen beschermen, het systeem laten testen en over alles goed nadenken. Sowieso ga ik een iets geadvanceerder login methode gebruiken met o.a. Captcha. En voor je opmerking over de snelheid; dit zal wel meevallen, helemaal als er straks Loadbalancers bijkomen voor Apache en MySQL. En hacken is tegenwoordig toch wel te voorkomen met de juiste beveiliging?
Ook ga ik nog even onderzoeken, morgen, hoe ik de websites ga 'koppelen' op basis van de urls. Want elk domein moet wel zijn eigen urls hebben: gewoon phphulp.nl/faq/id/24 en google.nl/faq/id/24 i.p.v. mijnwebsite.nl/websiteid/10024/faq/id/24. Snapje? Heb al wat ideeën daarover. Morgen even op papier zetten.
Tips en trucs zijn welkom!
CAPTCHA's zou ik niet gebruiken. Zie http://coding.smashingmagazine.com/2011/03/04/in-search-of-the-perfect-captcha/ voor uitleg waarom en voor alternatieven.
http://www.phphulp.nl/php/script/databases/database-structuur-vergelijken/1831/
Bovendien kan je met CLI ook een script aanroepen dat een database bewerking uitvoert.
Ik zou het eens testen.
Ik heb toch besloten om niks te doen met CLI. Ook omdat dit lastig gaat worden met de databases overzetten en alleen maar onhandig is lijkt mij.
Suggesties welkom!
Je hoeft de licentie eigenlijk niet meer op de klant zijn server te controleren. Mits de klant gene FTP-toegang heeft. Wanneer je gewoonweg de licentie in database zet, in jouw interface zie je die van alle klanten die bv. binnen de week vervallen. De klant ziet in zijn interface wanneer zijn licentie vervalt. Controle hoeft dan eigenlijk niet.
Iemand suggesties? :)
Bumpcar!
Gewijzigd op 23/08/2011 19:24:19 door Ger van Steenderen