NameOcean App Server е Linux сървър с Вашия проект в git хранилище. Вие правите push, то се стартира. Това ръководство превежда Flask приложение от първия push до собствен домейн с HTTPS; при Django, Node.js и Next.js разликата е в един ред.
visitor ──HTTPS:443──▶ NameOcean load balancer ──HTTP:80──▶ nginx ──▶ your app on 127.0.0.1:8000
Балансьорът на натоварването държи сертификатите, така че сървърът обслужва само порт 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
Сървърът се таксува месечно; servers create без --yes само показва цената. Можете да го създадете и от Табло → Хостинг. 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 се поставят стъпките за изграждане: инсталиране на пакети, миграции, npm run build. Изходът му се показва в терминала Ви при push.
$ git add . && git commit -m "First deploy" $ nameocean deploy 3f9a1c2e
nameocean deploy добавя git remote с име nameocean, изпраща текущия клон в /root/app на сървъра (оттук нататък сървърът внедрява този клон), изпраща го и към Вашия origin и рестартира приложенията.
Укажете на supervisor как да стартира приложението, а на nginx – да му предава заявките. И двата файла са на сървъра с примери за всеки стек; нужно е само да премахнете коментарите.
$ 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
За другите стекове се променя само 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 сесия, а приложенията се рестартират, за да ги прочетат. Съхраняват се само на сървъра, никога в хранилището или в базата данни на NameOcean.
$ nameocean bind kahvebot.com 3f9a1c2e
DNS на домейна трябва да е в NameOcean. NameOcean добавя DNS записите, издава сертификата и настройва балансьора на натоварването (HTTP към HTTPS и основния домейн към www); обикновено отнема няколко минути. На сървъра нищо не се променя.
$ git commit -am "New page" $ nameocean deploy $ nameocean servers logs 3f9a1c2e --app app -f # if it does not come up
При всяко внедряване се изпраща webhook събитие server.deployed с къмита и информация дали приложенията са стартирали. Резервни копия, рестартирания и останалата част от API: App Server API. На сървъра има ръководство за AI агенти в /root/AGENTS.md.