Utvecklare → Guider

Driftsätt en app med git push

En NameOcean App Server är en Linux-server med ditt projekt i ett git-repository. Du pushar, den kör. Den här guiden tar en Flask-app från första push till en egen domän med HTTPS; för Django, Node.js och Next.js skiljer det sig på en enda rad.

Så når förfrågningarna din app

förfrågans väg
visitor ──HTTPS:443──▶ NameOcean load balancer ──HTTP:80──▶ nginx ──▶ your app on 127.0.0.1:8000

Lastbalanseraren hanterar certifikaten, så servern behöver bara betjäna port 80. Din app lyssnar på 127.0.0.1:8000 under supervisor, och nginx skickar vidare förfrågningar till den.

1. En server och din SSH-nyckel

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

En server faktureras månadsvis; servers create utan --yes visar bara priset. Du kan också skapa den under Kontrollpanel → Hosting. ssh-keys add installerar ~/.ssh/id_ed25519.pub, som git använder för att pusha.

2. Projektet

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

I deploy.sh lägger du byggstegen: installation av paket, migreringar, npm run build. Utdata visas i din terminal när du pushar.

3. Första driftsättningen

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

nameocean deploy lägger till en git-remote som heter nameocean, pushar den aktuella grenen till /root/app på servern (servern driftsätter sedan den grenen), pushar den även till din egen origin och startar om apparna.

4. Kör den (en gång)

Tala om för supervisor hur appen startas och för nginx att skicka förfrågningar till den. Båda filerna finns på servern med exempel för varje stack; du behöver bara avkommentera.

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

[program:app] för Flask:

/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

För andra stackar ändras bara command (filen innehåller även dessa exempel):

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 med 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 och npm ci && npm run build i deploy.sh
Go/root/app/server och go build -o server . i deploy.sh

Din app är nu live på https://3f9a1c2e.nameocean.org.

5. Inställningar och hemligheter

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

Alla appar, deploy.sh och SSH-sessioner får dem, och apparna startas om för att läsa in dem. De lagras endast på servern, aldrig i repositoryt eller i NameOceans databas.

6. Din domän

nameocean
$ nameocean bind kahvebot.com 3f9a1c2e

Domänens DNS måste ligga hos NameOcean. NameOcean lägger till DNS-posterna, utfärdar certifikatet och konfigurerar lastbalanseraren (HTTP till HTTPS, och domänen utan www till www); det tar oftast några minuter. Inget ändras på servern.

7. Varje driftsättning därefter

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

Varje driftsättning skickar en server.deployed-webhook-händelse med commiten och om apparna startade. Säkerhetskopior, omstarter och resten av API:et: App Server API. Servern har en guide för AI-agenter i /root/AGENTS.md.