de BinHong Lee

Cum să găzduiți mai multe nume de domenii și proiecte pe un singur server

NGINX este un instrument magic

0*FT9uL7NRg2iep6 e
Fotografie de imgix pe Unsplash

Dețin mai multe nume de domenii și fiecare găzduiește un proiect secundar diferit. Pentru cel mai mult timp, tot ceea ce a necesitat „găzduire” a fost găzduit pe Heroku. Dar nivelul lor gratuit poate fi destul de limitat, de asemenea, poate deveni rapid costisitor dacă plătiți pentru fiecare proiect separat. Deci, în schimb, am decis să explorez punerea tuturor împreună folosind NGINX (mi-a fost recomandat de Jane Manchun Wong).

Resurse necesare

Server privat virtual (VPS)

Veți avea nevoie de un server virtual, cum ar fi DigitalOcean sau EC2 de AWS. Personal îl folosesc Vultr (aici este link non-recomandare) care mă costă aproximativ 2,50 USD / lună.

Nume de domeniu

Va trebui să înregistrați câteva nume de domenii. Presupunând că probabil le aveți deja, asigurați-vă că numele de domeniu indică serverele de nume ale VPS-ului dvs. Ar trebui să existe o secțiune DNS în tabloul de bord al serviciului de nume de domeniu în care să puteți selecta „DNS personalizat” sau ceva similar. Dacă nu sunteți sigur care sunt serverele de nume ale VPS-ului dvs., ar trebui să puteți găsi cu ușurință acele informații printr-o simplă căutare a „nameserver” + numele serviciului VPS.

Configurarea NGINX

Instalare și configurare de bază

Referință din Cum se instalează Nginx pe Ubuntu 16.04

Rulați următoarele comenzi prin SSH-ing în VPS. Acesta va instala NGINX, va stabili regulile de firewall care îi permit și va seta NGINX să pornească automat la pornire.

Configurare configurare

Referință din Găzduiește mai multe domenii pe un singur server / IP cu Apache sau nginx

Locația implicită virtual.conf ar trebui să fie la /etc/nginx/conf.d/virtual.conf. Vă recomand să faceți o copie de rezervă a fișierului implicit înainte de a efectua modificări. (Dacă nu există, îl puteți crea.) Editați fișierul pentru a arăta astfel:

Iată câteva lucruri de luat în considerare:

  • Server bloc – Fiecare dintre acestea ar trebui să reprezinte fiecare domeniu sau subdomeniu diferit în utilizare.
  • rădăcină – Aceasta este locația de unde sunt încărcate fișierele (HTML).
  • numele serverului – (sub) nume de domeniu care ar trebui să încarce aceste fișiere specifice.
  • proxy_redirect – în cazurile în care redirecționați un subdomeniu specific către un server activ, veți dori să adăugați acest lucru și să puneți locația IP după acesta. (Pentru serverele locale, fie http://127.0.0.1:port sau http: // localhost: port ar trebui să funcționeze conform intenției.)
sudo systemctl restart nginx

După ce ați terminat, reporniți serverul, astfel încât noile configurații să fie încărcate și aplicate.

Clonarea și legarea

Acum amintiți-vă, deoarece aveți directorul dvs. îndreptat spre / opt / htdocs /websiteName, gândul dvs. inițial ar putea fi să vă clonați proiectele în aceste foldere. Acest lucru poate funcționa, dar nu este ideal, deoarece multe operații din aceste foldere necesită acces root pentru a face cu adevărat orice.

În schimb, le puteți clona în folderul dvs. de utilizator sau în orice alt loc așa cum ați face în mod normal și apoi puteți crea un link soft pentru a conecta calea la folderul depozitului. Ceva de genul:

git clone git@github.com:binhonglee/binhonglee.github.io ~/websitesudo ln -s ~/website /opt/htdocs/binhong

Desigur, atunci când clonați un folder de site static Node.js (ReactJS, Angular sau Vue.js), va trebui să instalați (npm install) și construiți (npm run-script build) lor. Apoi legați ./construi folder în locul nivelului de bază al depozitului clonat. (În mod similar pentru site-urile Jekyll, dar utilizați ./_output în schimb.) În ceea ce privește serverele active, asigurați-vă că serverul dvs. rulează pe același port, așa cum este listat în fișierul de configurare.

Configurați HTTPS cu certbot

Datorită Let’s Encrypt, puteți obține acum certificate HTTPS gratuite și ușoare. Odată cu introducerea certbot, totul a devenit și mai ușor!

Referință din Cum să securizați Nginx cu Let’s Encrypt pe Ubuntu 16.04

Rulați doar cele de mai sus pentru toate numele domeniilor și subdomeniilor dvs. și certbot se va ocupa de toate. Dacă ați reînnoi certificatele, puteți rula următoarele, astfel încât certbot să vă ajute să vă reînnoiți certificatul SSL.

sudo certbot renew --dry-run

Se actualizează totul

Acum că aveți totul în funcțiune, s-ar putea să vă gândiți, ei bine, pare să existe o groază de lucruri de reținut dacă / când trebuie să actualizez ceva. Din păcate, este cam adevărat, dar îl putem ușura oricând adăugând un script care o face pentru noi.

Iată cum ar arăta cineva:

Mulțumesc pentru lectură! Spuneți-mi dacă aveți întrebări în comentariile de mai jos.

Despre mine

La momentul scrierii, lucrez la Apple Inc. în rolul de inginer Siri Language ca contractant independent prin AdvantisGlobal. Îmi petrec mult din timpul liber experimentând și construind lucruri noi cu tehnologii pe care le consider distractive și interesante. Urmăriți călătoria mea de explorare Aici sau pe GitHub.

Alte referințe