Deployment php prin node.js si lxc/lxd

Un prieten ma tot intreaba sa ii pun cpanel pe un server ca sa vanda gazduire. Mie nu mi se pare o idee prea buna cand sunt alte solutii, practic cpanel + cloudlinux costa vreo 60 de euro lunar.

Teoretic imi ia cateva ore sa fac un script node.js care sa se uite la un anumit folder, sa citeasca un config.yml in orice folder din /home/ de exemplu si sa faca deploy la php + mariadb + postfix + nginx/apache/litespeed + letsencrypt + sa configureze un cont de cloudflare + sa faca purge la cloudflare cache cand se schimba vreun fisier pe server.

Gen clientul sa faca un fisier config.yml ori manual, ori cu un generator pe site intr-un folder din /home/ (de ex. /home/domeniulmeu) pe vps-ul cumparat si sa i-se configureze totul :

domeniu:   domeniulmeu.ro
cloudflare: 
    email: [email protected]
    auth-key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41
    cache: da
    protectie: da

subdomenii:
    srv: 81.82.34.13
    @@: mx.zoho.com. MX
    @@: mx2.zoho.com MX
    zb324424: zmverify.zoho.com CNAME

versiune_php: 7.0.0
extensii_speciale: ioncube

webserver: apache
letsencrypt: da
https_redirect: da
www_redirect: da
force_www: nu

server_mysql: mysql
    versiune: 5.6.7
    utilizatori: 
       - root: parolamea 
       remote: nu
       - wordpress: parolamea
       remote: nu
       - panou_joc: parolamea
       remote: da

phpmyadmin: 
    cale: /phpmyadmin
    whitelist: 54.34.23.13

porturi_tcp_deschise: 80, 443, 3306, port_smtp
porturi_udp_deschise: port_ssh
port_ssh: 22
port_smtp: 25

Acest fisier va fi accesibil pe vps-ul clientului prin generator sau doar prin contul root.

Alte avantaje: In containerul LXD se vor putea rula imagini docker pe langa sistemul de deployment pentru gazduire php.

Se preteaza asa ceva la copii din Romania sau e prea mult ?

Problema e ca pentru end-user nu este usor de configurat absolut nimic si va apela la prietenul tau si ca sa isi faca si un cont de e-mail.

2 Likes

Intrebare :

Ce e asa complicat la un fisier de mai sus daca fac un wiki in limba romana pe site si un video ?

Practic clientul se va loga direct pe WinSCP, va crea orice folder in /home si va avea automat generat un fisier web-config.yml.

Intra in acel fisier si isi pune datele citind comentariile, il salveaza si in 2-3 secunde are configurat site-ul/domeniile/cloudflare-ul si mysql-ul.

Sau se logheaza pe site si completeaza un formular cu tutorial, respectiv modifica lucrurile direct de pe site.

Daca plănuiești că un fișier de genul asta sa fie public (gen să facă parte din repository-ul asociat proiectului), ar trebui că toate secretele (parole, API keys etc) sa fie criptate. Cu o cheie publică dintr-o pereche pe care trebuie sa o întreții tu. Cam că ce far travis.ci dacă ești familiar cu sistemul.

In rest e greu de zis daca o să aibă succes sau nu. Mă gândesc că dacă există un public de cpanel&friends amator de cli, s-ar fi mutat pe ansible/chef/etc pentru partea asta de config Management.

2 Likes

Nu e un fisier public si se va putea citi doar de root (iar cu watcher-ul prin node.js ma voi asigura ca orice fisier care e root va fi automat convertit la user-ul corespunzator), la un repository poti folosi oricum .gitignore.

Cu email-ul intradevar e mai complicat, trebuie sa vad ce servere smtp se pot folosi pentru reseller ca si cloudflare, ce client se poate configura pe un vps la panou. (dar oricum e o idee foarte proasta sa tii email-ul pe cpanel sau vps)

E o bucata de configuratie care are sens sa stea impreuna cu codul (cf infrastructure as code daca vrei) si sa fie pus in source control, sa fie folosita in build server etc (si la o adica sa fie publica pentru chestii gen proiecte open source). De asemenea, daca e un environment de test si unul de prod, ar trebui sa aiba mai mult sau mai putin aceasi configuratie, modulo “marimea resurselor alocate”, si sa fie bazate pa aceasi configuratie.

In fine, cand te duci pe partea de confuguratie textuala e daca vrei o schimbare de faza in tipul de client pe care o sa-l ai. Si chestii care merg cu cineva care e OK doar cu o interfata grafica, n-o sa mearga cu cineva care e OK cu cea textuala.

1 Like

Pe mine nu ma intereseaza deployment-ul pentru mine.

Pe mine ma intereseaza sa fac ceva alternativa de gazduire pentru copiii care vor sa isi gazduieasca usor diferite script-uri php.