Fejlesztők → Útmutatók

Alkalmazás telepítése git push segítségével

A NameOcean App Server egy Linux szerver, amelyen a projektje egy git repositoryban található. Ön pushol, az alkalmazás fut. Ez az útmutató egy Flask alkalmazást kísér végig az első pushtól a saját, HTTPS-sel elérhető domainjéig; Django, Node.js és Next.js esetén csak egy sor különbözik.

Hogyan jutnak el a kérések az alkalmazásához

a kérés útja
visitor ──HTTPS:443──▶ NameOcean load balancer ──HTTP:80──▶ nginx ──▶ your app on 127.0.0.1:8000

A tanúsítványokat a terheléselosztó kezeli, így a szerver csak a 80-as porton szolgál ki. Az alkalmazása a supervisor alatt a 127.0.0.1:8000 címen figyel, az nginx pedig továbbítja neki a kéréseket.

1. Egy szerver és az Ön SSH-kulcsa

nameocean
$ nameocean servers plans
$ nameocean servers create --plan starter --yes
$ nameocean servers ls
ID   NAME      STATUS   PLAN     DEFAULT DOMAIN          DOMAINS
812  3f9a1c2e  running  starter  3f9a1c2e.nameocean.org  -
$ nameocean servers ssh-keys add 3f9a1c2e

A szerver díját havonta számlázzuk; a servers create a --yes nélkül csak az árat mutatja meg. A szervert a Vezérlőpult → Tárhely menüpontban is létrehozhatja. Az ssh-keys add telepíti a ~/.ssh/id_ed25519.pub kulcsot, amelyet a git a pusholáshoz használ.

2. A projekt

app.py
import os

from flask import Flask

app = Flask(__name__)


@app.get("/")
def home():
    return f"Hello from {os.environ.get('SITE_NAME', 'NameOcean')}"
requirements.txt
flask
gunicorn
.nameocean/deploy.sh
#!/bin/bash
# runs on the server after every push, in /root/app, with your env variables
set -e
pip install -r requirements.txt

A deploy.sh fájlba kerülnek a build lépések: csomagok telepítése, migrációk, npm run build. Kimenete pusholáskor megjelenik a termináljában.

3. Első telepítés

nameocean
$ git add . && git commit -m "First deploy"
$ nameocean deploy 3f9a1c2e

A nameocean deploy hozzáad egy nameocean nevű git remote-ot, a szerveren a /root/app könyvtárba pusholja az aktuális branchet (ettől kezdve a szerver ezt a branchet telepíti), pusholja a saját origin remote-jára is, majd újraindítja az alkalmazásokat.

4. Futtatás (egyszer)

Adja meg a supervisornak, hogyan indítsa az alkalmazást, az nginxnek pedig, hogy továbbítsa neki a kéréseket. Mindkét fájl megtalálható a szerveren, minden stackhez példákkal; csak ki kell vennie a megjegyzésből a megfelelő sorokat.

ssh
$ nameocean servers info 3f9a1c2e   # the ssh line
$ ssh -p 2152 root@3f9a1c2e.nameocean.org
# vi /root/conf/supervisor.conf   # uncomment the Flask [program:app] and the shared settings
# supervisorctl reread && supervisorctl update
# vi /root/conf/nginx.conf        # remove the static "location /", uncomment the proxy one
# nginx -t && systemctl reload nginx
# curl -s http://127.0.0.1/
Hello from NameOcean

A [program:app] Flask esetén:

/root/conf/supervisor.conf
[program:app]
command=/root/.pyenv/versions/app/bin/gunicorn app:app --workers 2 --bind 127.0.0.1:8000
directory=/root/app
environment=PATH="/root/.pyenv/versions/app/bin:/usr/local/bin:/usr/bin:/bin"
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisor/app.log

Más stackeknél csak a command változik (a fájl ezeket a példákat is tartalmazza):

Django/root/.pyenv/versions/app/bin/gunicorn myproject.wsgi:application --workers 2 --bind 127.0.0.1:8000
FastAPI/root/.pyenv/versions/app/bin/uvicorn main:app --host 127.0.0.1 --port 8000 --workers 2
Node.js/usr/bin/node server.js ezzel: environment=NODE_ENV="production",PORT="8000",HOST="127.0.0.1"
Next.js/usr/bin/npx next start -H 127.0.0.1 -p 8000 és npm ci && npm run build a deploy.sh-ban
Go/root/app/server és go build -o server . a deploy.sh-ban

Az alkalmazása mostantól elérhető a https://3f9a1c2e.nameocean.org címen.

5. Beállítások és titkos adatok

nameocean
$ nameocean servers env set 3f9a1c2e SITE_NAME=Kahvebot SECRET_KEY=…

Minden alkalmazás, a deploy.sh és minden SSH-munkamenet megkapja őket, az alkalmazások pedig újraindulnak, hogy beolvassák őket. Kizárólag a szerveren tárolódnak, soha nem a repositoryban vagy a NameOcean adatbázisában.

6. Az Ön domainje

nameocean
$ nameocean bind kahvebot.com 3f9a1c2e

A domain DNS-ének a NameOceanen kell lennie. A NameOcean hozzáadja a DNS-rekordokat, kiállítja a tanúsítványt és beállítja a terheléselosztót (HTTP-ről HTTPS-re, valamint a csupasz domainről a www-re); ez általában néhány percet vesz igénybe. A szerveren semmi sem változik.

7. Minden további telepítés

nameocean
$ git commit -am "New page"
$ nameocean deploy
$ nameocean servers logs 3f9a1c2e --app app -f   # if it does not come up

Minden telepítés küld egy server.deployed webhook eseményt a committal, és azzal, hogy az alkalmazások elindultak-e. Biztonsági mentések, újraindítások és az API többi része: App Server API. A szerveren a /root/AGENTS.md fájlban útmutató található az AI-ügynökök számára.