NameOcean App Server, projenizin bir git deposunda bulunduğu bir Linux sunucusudur. Siz push edersiniz, o çalıştırır. Bu rehber bir Flask uygulamasını ilk push'tan HTTPS ile kendi alan adına kadar götürür; Django, Node.js ve Next.js için yalnızca bir satır farklıdır.
visitor ──HTTPS:443──▶ NameOcean load balancer ──HTTP:80──▶ nginx ──▶ your app on 127.0.0.1:8000
Sertifikalar yük dengeleyicide tutulur, bu nedenle sunucu yalnızca 80 numaralı portu sunar. Uygulamanız supervisor altında 127.0.0.1:8000 adresini dinler ve nginx istekleri ona iletir.
$ 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
Sunucu aylık olarak faturalandırılır; --yes olmadan çalıştırılan servers create yalnızca fiyatı gösterir. Sunucuyu Panel → Hosting bölümünden de oluşturabilirsiniz. ssh-keys add, git'in push için kullandığı ~/.ssh/id_ed25519.pub dosyasını yükler.
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
Derleme adımları deploy.sh dosyasına yazılır: paket kurulumu, migration'lar, npm run build. Push ettiğinizde çıktısı terminalinizde görünür.
$ git add . && git commit -m "First deploy" $ nameocean deploy 3f9a1c2e
nameocean deploy, nameocean adında bir git remote ekler, mevcut dalı sunucudaki /root/app dizinine push eder (sunucu bundan sonra o dalı deploy eder), dalı kendi origin deponuza da push eder ve uygulamaları yeniden başlatır.
supervisor'a uygulamayı nasıl başlatacağını, nginx'e de istekleri ona iletmesini söyleyin. Her iki dosya da her teknoloji için örneklerle birlikte sunucuda bulunur; yalnızca yorum satırlarını kaldırmanız yeterlidir.
$ 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
Flask için [program:app]:
[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
Diğer teknolojiler için yalnızca command değişir (dosyada bu örnekler de bulunur):
| 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 ile 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 ve deploy.sh içinde npm ci && npm run build |
| Go | /root/app/server ve deploy.sh içinde go build -o server . |
Uygulamanız artık https://3f9a1c2e.nameocean.org adresinde yayında.
$ nameocean servers env set 3f9a1c2e SITE_NAME=Kahvebot SECRET_KEY=…
Tüm uygulamalar, deploy.sh ve SSH oturumları bunlara erişir; uygulamalar bunları okumak için yeniden başlatılır. Yalnızca sunucuda saklanırlar; asla depoda veya NameOcean veritabanında tutulmazlar.
$ nameocean bind kahvebot.com 3f9a1c2e
Alan adının DNS'i NameOcean'da olmalıdır. NameOcean DNS kayıtlarını ekler, sertifikayı oluşturur ve yük dengeleyiciyi yapılandırır (HTTP'den HTTPS'e ve çıplak alan adından www'ye yönlendirme); bu işlem genellikle birkaç dakika sürer. Sunucuda hiçbir şey değişmez.
$ git commit -am "New page" $ nameocean deploy $ nameocean servers logs 3f9a1c2e --app app -f # if it does not come up
Her deploy, commit bilgisini ve uygulamaların ayağa kalkıp kalkmadığını içeren bir server.deployed webhook olayı gönderir. Yedeklemeler, yeniden başlatmalar ve API'nin geri kalanı için: App Server API. Sunucuda, yapay zekâ ajanları için /root/AGENTS.md konumunda bir rehber bulunur.