Kehittäjät → Oppaat

Ota sovellus käyttöön git pushilla

NameOcean App Server on Linux-palvelin, jossa projektisi on git-repositoriossa. Teet pushin, ja se käynnistyy. Tämä opas vie Flask-sovelluksen ensimmäisestä pushista omaan verkkotunnukseen HTTPS:llä; Django, Node.js ja Next.js eroavat vain yhdellä rivillä.

Miten pyynnöt saapuvat sovellukseesi

pyynnön reitti
visitor ──HTTPS:443──▶ NameOcean load balancer ──HTTP:80──▶ nginx ──▶ your app on 127.0.0.1:8000

Kuormantasaaja säilyttää varmenteet, joten palvelin palvelee vain porttia 80. Sovelluksesi kuuntelee osoitetta 127.0.0.1:8000 supervisorin alaisena, ja nginx välittää pyynnöt sille.

1. Palvelin ja SSH-avaimesi

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

Palvelin laskutetaan kuukausittain; servers create ilman --yes-valitsinta näyttää vain hinnan. Voit myös luoda sen kohdassa Hallintapaneeli → Hosting. ssh-keys add asentaa avaimen ~/.ssh/id_ed25519.pub, jota git käyttää pushiin.

2. Projekti

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

deploy.sh sisältää koontivaiheet: pakettien asennuksen, migraatiot, npm run build. Sen tuloste näkyy päätteessäsi, kun teet pushin.

3. Ensimmäinen käyttöönotto

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

nameocean deploy lisää git-remoten nimeltä nameocean, pushaa nykyisen haaran palvelimen hakemistoon /root/app (palvelin ottaa siitä lähtien käyttöön tämän haaran), pushaa sen myös omaan origin-remoteesi ja käynnistää sovellukset uudelleen.

4. Käynnistä se (kerran)

Kerro supervisorille, miten sovellus käynnistetään, ja nginxille, että pyynnöt välitetään sille. Molemmat tiedostot ovat palvelimella esimerkkeineen kullekin teknologialle; poistat vain kommentoinnin.

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] Flaskille:

/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

Muilla teknologioilla vain command muuttuu (tiedostossa on myös nämä esimerkit):

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 ja 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 sekä npm ci && npm run build tiedostossa deploy.sh
Go/root/app/server sekä go build -o server . tiedostossa deploy.sh

Sovelluksesi on nyt käytössä osoitteessa https://3f9a1c2e.nameocean.org.

5. Asetukset ja salaisuudet

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

Jokainen sovellus, deploy.sh ja SSH-istunto saa ne, ja sovellukset käynnistyvät uudelleen lukeakseen ne. Ne säilytetään vain palvelimella, ei koskaan repositoriossa tai NameOceanin tietokannassa.

6. Verkkotunnuksesi

nameocean
$ nameocean bind kahvebot.com 3f9a1c2e

Verkkotunnuksen DNS:n on oltava NameOceanissa. NameOcean lisää DNS-tietueet, myöntää varmenteen ja määrittää kuormantasaajan (HTTP:stä HTTPS:ään ja paljaasta verkkotunnuksesta www:hen); tämä kestää yleensä muutaman minuutin. Palvelimella ei muutu mitään.

7. Jokainen sen jälkeinen käyttöönotto

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

Jokainen käyttöönotto lähettää server.deployed-webhook-tapahtuman, joka sisältää commitin ja tiedon siitä, käynnistyivätkö sovellukset. Varmuuskopiot, uudelleenkäynnistykset ja muu API: App Server API. Palvelimella on tekoälyagenteille tarkoitettu opas tiedostossa /root/AGENTS.md.