Geliştiriciler → Kılavuzlar

git push ile uygulama deploy edin

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.

İstekler uygulamanıza nasıl ulaşır

istek yolu
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.

1. Bir sunucu ve SSH anahtarınız

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

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.

2. Proje

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

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.

3. İlk deploy

nameocean
$ 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.

4. Çalıştırın (bir kez)

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.

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

Flask için [program:app]:

/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

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.

5. Ayarlar ve gizli bilgiler

nameocean
$ 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.

6. Alan adınız

nameocean
$ 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.

7. Sonraki her deploy

nameocean
$ 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.