Ένας NameOcean App Server είναι ένας Linux server με το έργο σας σε ένα αποθετήριο git. Κάνετε push και η εφαρμογή εκτελείται. Αυτός ο οδηγός οδηγεί μια εφαρμογή Flask από το πρώτο push μέχρι το δικό της domain με HTTPS· στα Django, Node.js και Next.js διαφέρει μόνο μία γραμμή.
visitor ──HTTPS:443──▶ NameOcean load balancer ──HTTP:80──▶ nginx ──▶ your app on 127.0.0.1:8000
Ο load balancer διατηρεί τα πιστοποιητικά, οπότε ο server εξυπηρετεί μόνο τη θύρα 80. Η εφαρμογή σας ακούει στο 127.0.0.1:8000 υπό τον supervisor και το nginx της προωθεί τα αιτήματα.
$ 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
Ο server χρεώνεται μηνιαία· η εντολή servers create χωρίς --yes εμφανίζει μόνο την τιμή. Μπορείτε επίσης να τον δημιουργήσετε από το Πίνακας ελέγχου → Hosting. Η εντολή ssh-keys add εγκαθιστά το ~/.ssh/id_ed25519.pub, το οποίο χρησιμοποιεί το git για το push.
import os
from flask import Flask
app = Flask(__name__)
@app.get("/")
def home():
return f"Hello from {os.environ.get('SITE_NAME', 'NameOcean')}"
flask gunicorn
#!/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 μπαίνουν τα βήματα build: εγκατάσταση πακέτων, migrations, npm run build. Η έξοδός του εμφανίζεται στο τερματικό σας όταν κάνετε push.
$ git add . && git commit -m "First deploy" $ nameocean deploy 3f9a1c2e
Η εντολή nameocean deploy προσθέτει ένα git remote με όνομα nameocean, κάνει push τον τρέχοντα κλάδο στο /root/app στον server (από εκεί και πέρα ο server αναπτύσσει αυτόν τον κλάδο), τον κάνει push και στο δικό σας origin και επανεκκινεί τις εφαρμογές.
Ορίστε στον supervisor πώς να ξεκινά την εφαρμογή και στο nginx να της προωθεί τα αιτήματα. Και τα δύο αρχεία βρίσκονται στον server με παραδείγματα για κάθε stack· απλώς αφαιρείτε τα σχόλια.
$ 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] για Flask:
[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
Για άλλα stack αλλάζει μόνο το command (το αρχείο περιέχει κι αυτά τα παραδείγματα):
| 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 με 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 και npm ci && npm run build στο deploy.sh |
| Go | /root/app/server και go build -o server . στο deploy.sh |
Η εφαρμογή σας είναι πλέον διαθέσιμη στο https://3f9a1c2e.nameocean.org.
$ nameocean servers env set 3f9a1c2e SITE_NAME=Kahvebot SECRET_KEY=…
Τα λαμβάνουν κάθε εφαρμογή, το deploy.sh και κάθε συνεδρία SSH, και οι εφαρμογές επανεκκινούνται για να τα διαβάσουν. Φυλάσσονται μόνο στον server, ποτέ στο αποθετήριο ή στη βάση δεδομένων της NameOcean.
$ nameocean bind kahvebot.com 3f9a1c2e
Το DNS του domain πρέπει να βρίσκεται στη NameOcean. Η NameOcean προσθέτει τις εγγραφές DNS, εκδίδει το πιστοποιητικό και ρυθμίζει τον load balancer (HTTP σε HTTPS και το σκέτο domain σε www)· συνήθως διαρκεί λίγα λεπτά. Στον server δεν αλλάζει τίποτα.
$ git commit -am "New page" $ nameocean deploy $ nameocean servers logs 3f9a1c2e --app app -f # if it does not come up
Κάθε deploy στέλνει ένα συμβάν webhook server.deployed με το commit και με το αν ξεκίνησαν οι εφαρμογές. Αντίγραφα ασφαλείας, επανεκκινήσεις και το υπόλοιπο API: App Server API. Ο διακομιστής διαθέτει οδηγό για AI agents στο /root/AGENTS.md.