Kripto Borsası Sunucu Kurulumu ve Dağıtımı: Teknik Canlıya Geçiş Rehberi
İçindekiler
- Başlamadan Önce
- Sunucu Mimarisi Özeti
- Adım 1: Sunucuları Hazırlama ve Sağlamlaştırma
- Adım 2: Web Yığınını Kurma
- Adım 3: Nginx Ters Proxy Yapılandırması
- Adım 4: PHP-FPM Ayarları
- Adım 5: MySQL Veritabanı Kurulumu ve Ayarlaması
- Adım 6: Redis Önbellek ve Kuyruk Yapılandırması
- Adım 7: Cüzdan Daemon Kurulumu
- Adım 8: WebSocket Sunucu Kurulumu
- Adım 9: SSL/TLS ve Alan Adı Yapılandırması
- Adım 10: Cron Görevleri ve Arka Plan Süreçleri
- Adım 11: Sistem Takibi ve Uyarı Yönetimi
- Adım 12: Yedekleme ve Felaket Kurtarma
- Adım 13: Yük Testi
- Adım 14: Yayına Geçiş Kontrol Listesi
- Lansman Sonrası Operasyonlar
Bu rehber; bir borsa başlatma kararını zaten vermiş olan ve artık bir dağıtım kılavuzuna ihtiyaç duyan sistem yöneticileri, DevOps mühendisleri ve CTO’lar içindir. Henüz iş tarafını — lisanslama, maliyetler, gelir modelleri — değerlendiriyorsanız, önce kripto borsası iş planını veya eksiksiz başlangıç rehberini okuyun.
Burada her teknik adımı ele alıyoruz: fiziksel sunucu hazırlamadan, gerçek işlemleri ve gerçek parayı yöneten üretime hazır bir borsaya kadar.
Başlamadan Önce
Şunlara sahip olduğunuzdan emin olun:
- Tam kaynak kodu erişimiyle lisanslı bir Codono borsa yazılımı kopyası
- Sunucunuza/sunucularınıza root SSH erişimi
- DNS kontrolüne sahip kayıtlı bir alan adı
- SSL sertifikaları (veya Let’s Encrypt kullanma planı)
- Seçtiğiniz KYC sağlayıcısı için erişim bilgileri (SumSub veya benzeri)
Aşağıdaki talimatlar Ubuntu 22.04 LTS varsayar. Codono ayrıca CentOS/RHEL ve Debian’ı da destekler, ancak paket adları farklılık gösterebilir.
Sunucu Mimarisi Özeti
Üretim ortamındaki bir kripto borsası tek bir sunucu değildir. En azından şu topolojiyi planlayın:
| Sunucu | Rol | Minimum Özellikler |
|---|---|---|
| Uygulama Sunucusu | Nginx + PHP-FPM + uygulama kodu | 8 vCPU, 32 GB RAM, 200 GB NVMe |
| Veritabanı Sunucusu | MySQL 8.0 birincil | 16 vCPU, 64 GB RAM, 500 GB NVMe RAID-10 |
| Önbellek/Kuyruk Sunucusu | Redis 7.x | 4 vCPU, 16 GB RAM |
| WebSocket Sunucusu | Gerçek zamanlı veri akışları | 4 vCPU, 8 GB RAM |
| Cüzdan Sunucusu/Sunucuları | Blok zinciri daemon’ları (bitcoind, geth vb.) | 8 vCPU, 32 GB RAM, zincir başına 1 TB+ SSD |
Küçük-orta ölçekli bir borsa için (5.000 eşzamanlı kullanıcının altında), Uygulama + WebSocket’i tek sunucuda, Önbellek + Kuyruk’u başka bir sunucuda birleştirebilirsiniz. Veritabanını veya cüzdan daemon’larını asla başka bir şeyle birleştirmeyin.
Önerilen sağlayıcılar: Hetzner (AB’de en iyi fiyat-performans), OVH, AWS EC2 (çok bölgeli gerekiyorsa), DigitalOcean. Paylaşımlı hostingden kaçının.
Adım 1: Sunucuları Hazırlama ve Sağlamlaştırma
Her sunucuda temiz bir Ubuntu 22.04 LTS kurulumuyla başlayın.
İlk sağlamlaştırma:
# Paketleri güncelle
apt update && apt upgrade -y
# Root olmayan bir deploy kullanıcısı oluştur
adduser deploy
usermod -aG sudo deploy
# Root SSH girişini devre dışı bırak
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd
# UFW güvenlik duvarını yapılandır
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp # SSH
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw enable
Cüzdan sunucularında, RPC portlarını yalnızca uygulama sunucusunun dahili IP’sinden gelen bağlantıları kabul edecek şekilde kısıtlayın:
ufw allow from 10.0.0.2 to any port 8332 # Bitcoin RPC
ufw allow from 10.0.0.2 to any port 8545 # Ethereum RPC
Kaba kuvvet koruması için fail2ban kurun:
apt install fail2ban -y
systemctl enable fail2ban
Katılımsız güvenlik güncellemelerini ayarlayın:
apt install unattended-upgrades -y
dpkg-reconfigure --priority=low unattended-upgrades
Adım 2: Web Yığınını Kurma
Uygulama Sunucusunda Nginx, PHP 8.2 ve gerekli uzantıları kurun:
# Nginx
apt install nginx -y
# Codono'nun gerektirdiği PHP 8.2 + uzantılar
apt install php8.2-fpm php8.2-mysql php8.2-redis php8.2-curl \
php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip php8.2-bcmath \
php8.2-intl php8.2-soap php8.2-gmp -y
Codono kaynak kodunu dağıtın:
mkdir -p /var/www/exchange
# Kaynak kodunu rsync veya git clone ile yükleyin
rsync -avz ./codono-source/ deploy@app-server:/var/www/exchange/
chown -R www-data:www-data /var/www/exchange
chmod -R 755 /var/www/exchange
chmod -R 775 /var/www/exchange/runtime # Yazılabilir önbellek dizini
Adım 3: Nginx Ters Proxy Yapılandırması
Ana site yapılandırmasını oluşturun:
# /etc/nginx/sites-available/exchange.conf
upstream php-fpm {
server unix:/run/php/php8.2-fpm.sock;
}
upstream websocket {
server 127.0.0.1:9502;
}
server {
listen 443 ssl http2;
server_name exchange.example.com;
root /var/www/exchange/public;
index index.php;
# SSL (bkz. Adım 9)
ssl_certificate /etc/letsencrypt/live/exchange.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exchange.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
# Gzip
gzip on;
gzip_types text/plain application/json application/javascript text/css;
gzip_min_length 1000;
# Hız sınırlama bölgesi (nginx.conf içinde tanımlı)
limit_req zone=api burst=20 nodelay;
# Ana uygulama
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass php-fpm;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 30s;
}
# WebSocket proxy
location /ws {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 86400s;
}
# Hassas yolları engelle
location ~ /\.(git|env|htaccess) {
deny all;
}
location ~ /(runtime|application|vendor) {
deny all;
}
# Statik varlık önbelleğe alma
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}
server {
listen 80;
server_name exchange.example.com;
return 301 https://$host$request_uri;
}
Hız sınırlama bölgesini /etc/nginx/nginx.conf dosyasındaki http bloğunun içine ekleyin:
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
Etkinleştirin ve test edin:
ln -s /etc/nginx/sites-available/exchange.conf /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Adım 4: PHP-FPM Ayarları
Üretim yükleri için /etc/php/8.2/fpm/pool.d/www.conf dosyasını düzenleyin:
; Süreç yönetimi
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 1000
; Zaman aşımları
request_terminate_timeout = 30s
; Günlükleme
slowlog = /var/log/php-fpm-slow.log
request_slowlog_timeout = 5s
Borsaya özgü ayarlar için /etc/php/8.2/fpm/php.ini dosyasını düzenleyin:
memory_limit = 256M
max_execution_time = 30
upload_max_filesize = 10M
post_max_size = 12M
opcache.enable = 1
opcache.memory_consumption = 256
opcache.max_accelerated_files = 20000
opcache.validate_timestamps = 0 ; Geliştirme sırasında 1 yapın
session.gc_maxlifetime = 7200
PHP-FPM’i yeniden başlatın:
systemctl restart php8.2-fpm
Önemli nokta: Üretimde opcache.validate_timestamps = 0 ayarlamak, her kod dağıtımından sonra systemctl restart php8.2-fpm çalıştırmanız gerektiği anlamına gelir. PHP her istekte dosya stat kontrollerini atladığı için bu önemli bir performans artışı sağlar.
Adım 5: MySQL Veritabanı Kurulumu ve Ayarlaması
Veritabanı Sunucusunda MySQL 8.0 kurun:
apt install mysql-server-8.0 -y
mysql_secure_installation
Borsa veritabanını ve kullanıcısını oluşturun:
CREATE DATABASE exchange_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'exchange_user'@'10.0.0.%' IDENTIFIED BY 'strong_random_password';
GRANT ALL PRIVILEGES ON exchange_db.* TO 'exchange_user'@'10.0.0.%';
FLUSH PRIVILEGES;
Borsa yükleri için /etc/mysql/mysql.conf.d/mysqld.cnf dosyasını düzenleyin:
[mysqld]
# InnoDB ayarları (64 GB RAM'li sunucu varsayımıyla)
innodb_buffer_pool_size = 40G
innodb_buffer_pool_instances = 8
innodb_log_file_size = 2G
innodb_flush_log_at_trx_commit = 1
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
# Bağlantı yönetimi
max_connections = 500
thread_cache_size = 50
table_open_cache = 4000
# Sorgu önbelleği (MySQL 8'de devre dışı, bunun yerine Redis kullanın)
# query_cache_type = 0
# Yavaş sorgu günlüğü
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
# Ağ
bind-address = 10.0.0.3 # Yalnızca dahili IP
max_allowed_packet = 64M
# Replikasyon için binary logging
log_bin = mysql-bin
server-id = 1
binlog_expire_logs_seconds = 604800
Codono veritabanı şemasını içe aktarın:
mysql -u exchange_user -p exchange_db < /var/www/exchange/database/schema.sql
Performans ipucu: innodb_buffer_pool_size, toplam sunucu RAM’inin %60-70’i olmalıdır. Emir defteri, bakiyeler ve işlem geçmişi tabloları yoğun okuma/yazma gerektirdiğinden, bu bir borsa için en önemli MySQL ayar parametresidir.
Adım 6: Redis Önbellek ve Kuyruk Yapılandırması
Önbellek Sunucusunda Redis 7 kurun:
apt install redis-server -y
/etc/redis/redis.conf dosyasını düzenleyin:
bind 10.0.0.4 # Dahili IP
maxmemory 8gb
maxmemory-policy allkeys-lru
save 900 1 # RDB anlık görüntüleri
save 300 10
appendonly yes # Dayanıklılık için AOF
Codono, Redis’i şunlar için kullanır:
- Oturum depolama — MySQL oturumlarından daha hızlı, yatay uygulama sunucusu ölçeklemesini destekler
- Önbellek katmanı — coin fiyatları, ticker verileri, işlem çifti yapılandırmaları
- Kuyruk altyapısı — çekim işleme, e-posta gönderme, KYC geri çağrıları
- Pub/Sub — WebSocket sunucusuna iletilen gerçek zamanlı emir defteri ve işlem güncellemeleri
Uygulama sunucusundan bağlantıyı test edin:
redis-cli -h 10.0.0.4 ping
# Şunu döndürmelidir: PONG
Adım 7: Cüzdan Daemon Kurulumu
Bu, en karmaşık kısımdır. Desteklediğiniz her blok zincirinin Cüzdan Sunucusunda çalışan kendi daemon’una ihtiyacı vardır.
Bitcoin (bitcoind)
# Kurulum
wget https://bitcoincore.org/bin/bitcoin-core-27.0/bitcoin-27.0-x86_64-linux-gnu.tar.gz
tar xzf bitcoin-27.0-x86_64-linux-gnu.tar.gz
cp bitcoin-27.0/bin/* /usr/local/bin/
/home/bitcoin/.bitcoin/bitcoin.conf dosyasını yapılandırın:
server=1
rpcuser=exchange_btc
rpcpassword=strong_random_rpc_password
rpcallowip=10.0.0.2/32
rpcbind=10.0.0.5
txindex=1
maxconnections=50
dbcache=4096
Ethereum (geth)
apt install -y software-properties-common
add-apt-repository -y ppa:ethereum/ethereum
apt install geth -y
Systemd servisi olarak çalıştırın:
geth --http --http.addr 10.0.0.5 --http.port 8545 \
--http.api eth,net,web3,personal \
--http.corsdomain "*" \
--http.vhosts "10.0.0.5" \
--syncmode snap \
--datadir /data/ethereum \
--maxpeers 50
Diğer Zincirler
Desteklenen her blok zinciri için bu kalıbı tekrarlayın. Codono 50’den fazla zinciri destekler — daemon’a özgü yapılandırmalar için blok zinciri entegrasyon dokümanlarına bakın. Lansmanda etkinleştirilecek popüler zincirler:
- BNB Chain (BSC node’u veya RPC uç noktası)
- Tron (java-tron tam node’u)
- Solana (solana-validator veya RPC uç noktası)
- Polygon (bor + heimdall veya RPC uç noktası)
Sıcak/soğuk cüzdan ayrımı: Borsa cüzdan sistemini, toplam yatırımların yalnızca %5-10’u sıcak cüzdanda kalacak şekilde yapılandırın. Geri kalanı, çok imzalı yetkilendirmeyle korunan soğuk depolama adreslerine taşınır. Codono’nun yönetici paneli, eşik uyarıları ve manuel soğuktan sıcağa bakiye tamamlama kontrolleri sağlar.
Adım 8: WebSocket Sunucu Kurulumu
Gerçek zamanlı fiyat akışları, emir defteri güncellemeleri ve işlem bildirimleri WebSocket bağlantıları gerektirir. Codono, Swoole tabanlı bir WebSocket sunucusu içerir.
Swoole kurun:
pecl install swoole
echo "extension=swoole.so" > /etc/php/8.2/cli/conf.d/20-swoole.ini
WebSocket sunucusunu başlatın:
cd /var/www/exchange
php artisan websocket:serve --host=0.0.0.0 --port=9502
Otomatik yeniden başlatma için bir systemd servisi oluşturun:
# /etc/systemd/system/exchange-ws.service
[Unit]
Description=Exchange WebSocket Server
After=network.target redis.service
[Service]
User=www-data
WorkingDirectory=/var/www/exchange
ExecStart=/usr/bin/php artisan websocket:serve --host=0.0.0.0 --port=9502
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Etkinleştirin ve başlatın:
systemctl enable exchange-ws
systemctl start exchange-ws
WebSocket sunucusu, Redis pub/sub kanallarına abone olur. Bir işlem gerçekleştiğinde veya emir defteri değiştiğinde, eşleştirme motoru güncellemeyi Redis’e yayınlar ve WebSocket sunucusu bunu milisaniyeler içinde bağlı tüm istemcilere iletir.
Adım 9: SSL/TLS ve Alan Adı Yapılandırması
Ücretsiz, otomatik yenilenen sertifikalar için Let’s Encrypt kullanın:
apt install certbot python3-certbot-nginx -y
certbot --nginx -d exchange.example.com -d www.exchange.example.com
Otomatik yenilemeyi doğrulayın:
certbot renew --dry-run
Yapılandırılacak DNS kayıtları:
| Kayıt | Tür | Değer |
|---|---|---|
| exchange.example.com | A | Uygulama sunucusu genel IP’si |
| www.exchange.example.com | CNAME | exchange.example.com |
| api.exchange.example.com | A | Uygulama sunucusu genel IP’si (ayrı API alt alan adı varsa) |
Güvenlik başlıkları — Nginx server bloğuna ekleyin:
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
Adım 10: Cron Görevleri ve Arka Plan Süreçleri
Codono birkaç zamanlanmış görev gerektirir. www-data crontab’ına ekleyin:
crontab -u www-data -e
# Bekleyen çekimleri işle (her 2 dakikada bir)
*/2 * * * * php /var/www/exchange/artisan queue:withdrawal
# Piyasa verilerinden coin fiyatlarını güncelle (her dakika)
* * * * * php /var/www/exchange/artisan market:prices
# Yatırma onaylarını işle (her dakika)
* * * * * php /var/www/exchange/artisan wallet:deposits
# Süresi dolan emirleri temizle (her 5 dakikada bir)
*/5 * * * * php /var/www/exchange/artisan orders:cleanup
# Günlük raporlar oluştur (her gün gece yarısı UTC)
0 0 * * * php /var/www/exchange/artisan reports:daily
# Veritabanı yedeği (her gün UTC 03:00'te)
0 3 * * * /usr/local/bin/exchange-backup.sh
# SSL sertifika yenileme kontrolü (günde iki kez)
0 */12 * * * certbot renew --quiet --post-hook "systemctl reload nginx"
Sürekli çalışması gereken kuyruk işleyicileri (e-posta bildirimleri, KYC geri çağrıları) için Supervisor kullanın:
apt install supervisor -y
# /etc/supervisor/conf.d/exchange-worker.conf
[program:exchange-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/exchange/artisan queue:work redis --tries=3 --timeout=90
autostart=true
autorestart=true
numprocs=4
user=www-data
redirect_stderr=true
stdout_logfile=/var/log/exchange-worker.log
supervisorctl reread && supervisorctl update
Adım 11: Sistem Takibi ve Uyarı Yönetimi
Üretim ortamındaki bir borsanın üç izleme katmanına ihtiyacı vardır:
Altyapı Takibi (Prometheus + Grafana)
Her sunucuya node_exporter kurun. Şunları takip edin:
- CPU kullanımı (sürekli %80 üzerindeyse alarm)
- RAM kullanımı (%85 üzerindeyse alarm)
- Disk G/Ç ve boş alan (%20 altındaysa alarm)
- Ağ verimi ve paket kaybı
Uygulama Takibi
- PHP-FPM havuz durumu (
pm.status_path = /fpm-status) - Aktif bağlantılar için Nginx stub_status
- Saatlik MySQL yavaş sorgu sayısı
- Redis bellek kullanımı ve anahtar sayısı
- Kuyruk derinliği (bekleyen işler sıfıra yakın kalmalıdır)
Cüzdan Takibi (kritik)
- Coin başına sıcak cüzdan bakiyesi (eşiğin altına düştüğünde alarm)
- Bekleyen yatırma sayısı (ani artış, daemon senkronizasyon sorunlarına işaret eder)
- Bekleyen çekim sayısı (ani artış, işleme hatasına işaret eder)
- Daemon blok yüksekliği ile ağ yüksekliği karşılaştırması (10 bloktan fazla gerideyse alarm)
Alarm kanalları: Kritik alarmlar için PagerDuty veya Opsgenie (cüzdan, veritabanı çökmesi), uyarılar için Slack veya Telegram (yüksek CPU, yavaş sorgular). Yönetici paneli ayrıca gerçek zamanlı sistem sağlığını gösterir.
Adım 12: Yedekleme ve Felaket Kurtarma
Veritabanı Yedekleri
#!/bin/bash
# /usr/local/bin/exchange-backup.sh
DATE=$(date +%Y%m%d_%H%M)
BACKUP_DIR=/backup/mysql
mysqldump --single-transaction --routines --triggers \
-u backup_user -p exchange_db | gzip > $BACKUP_DIR/exchange_$DATE.sql.gz
# 30 gün sakla
find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete
# Uzak depolamayla senkronize et
aws s3 sync $BACKUP_DIR s3://exchange-backups/mysql/ --storage-class STANDARD_IA
Cüzdan Yedekleri
- Bitcoin: her yeni adres üretiminden sonra
wallet.datdosyasını şifreli uzak depolamaya yedekleyin - Ethereum: keystore dizinini yedekleyin
- Soğuk cüzdan seed’lerini coğrafi olarak ayrılmış, yangına dayanıklı kasalarda saklayın
Kurtarma Hedefleri
| Bileşen | RPO (veri kaybı) | RTO (kesinti süresi) |
|---|---|---|
| Veritabanı | 1 saat | 30 dakika |
| Uygulama | 0 (durumsuz, kaynaktan yeniden dağıtılır) | 10 dakika |
| Cüzdan daemon’ları | 0 (blok zincirinden yeniden senkronize edilir) | 2-24 saat (zincire bağlı) |
Sıfıra yakın RPO için yedek bir sunucuya MySQL replikasyonu kurun. Yük devrini üç ayda bir test edin.
Adım 13: Yük Testi
Gerçek kullanıcılara açmadan önce her kritik yolu yük testinden geçirin:
# k6 kurun
apt install k6 -y
# Giriş uç noktasını test et
k6 run --vus 100 --duration 60s login-test.js
# Emir vermeyi test et
k6 run --vus 50 --duration 120s order-test.js
# WebSocket bağlantılarını test et
k6 run --vus 500 --duration 60s ws-test.js
Üretim borsası için temel hedefler:
| Uç Nokta | Hedef | Kabul Edilebilir |
|---|---|---|
| API yanıtı (emir verme) | <100ms p95 | <200ms p99 |
| WebSocket mesaj gecikmesi | <50ms | <100ms |
| Sayfa yüklemesi (işlem görünümü) | <2s | <3s |
| Eşzamanlı WebSocket bağlantıları | 5.000+ | 2.000+ |
| Saniyedeki emir sayısı (eşleştirme motoru) | 1.000+ | 500+ |
Herhangi bir uç nokta eşikleri aşarsa, donanımı ölçeklemeden önce php-fpm-slow.log, MySQL yavaş sorgu günlüğü veya yoğun sorgularda EXPLAIN ile profil çıkarın.
Adım 14: Yayına Geçiş Kontrol Listesi
Kayıtları açmadan önce bu kontrol listesini gözden geçirin:
Altyapı:
- Tüm sunucular sağlamlaştırıldı (yalnızca SSH anahtarları, güvenlik duvarı kuralları, fail2ban)
- SSL sertifikaları kuruldu ve otomatik yenileme doğrulandı
- DNS yayılımı tamamlandı
- DDoS koruması aktif (Cloudflare veya eşdeğeri)
- Yedekleme betikleri çalışıyor ve test geri yüklemesiyle doğrulandı
Uygulama:
- Ortam yapılandırması üretime ayarlandı (debug kapalı, hata gösterimi kapalı)
- OPcache etkin, validate_timestamps kapalı
- Tüm hassas yollar Nginx’te engellendi (
.git,.env,runtime/) - Güvenlik başlıkları yapılandırıldı
- API uç noktalarında hız sınırlama aktif
- CORS yalnızca kendi alan adınız için yapılandırıldı
Cüzdanlar:
- Tüm cüzdan daemon’ları güncel blok yüksekliğine senkronize edildi
- Sıcak cüzdan ilk işletim bakiyeleriyle fonlandı
- Soğuk cüzdan adresleri üretildi ve anahtarlar çevrimdışı güvenceye alındı
- Her coin için yatırma adresi üretimi test edildi
- Her coin için çekim akışı uçtan uca test edildi
- Sıcak cüzdan eşikleri ve uyarıları yapılandırıldı
Alım Satım:
- İşlem çiftleri doğru fiyat hassasiyetiyle yapılandırıldı
- Ücret tarifeleri ayarlandı (maker/taker oranları)
- Eşleştirme motoru simüle edilmiş emirlerle test edildi
- Emir defteri derinliği doğru görüntüleniyor
- WebSocket akışları canlı veri yayınlıyor
Uyumluluk:
- KYC sağlayıcısı entegre edildi ve test edildi
- Doğrulama katmanları yapılandırıldı
- Katman başına çekim limitleri uygulanıyor
- AML işlem izleme aktif
İzleme:
- Tüm panolar Grafana’da canlı
- Alarm kanalları yapılandırıldı ve test edildi (test alarmı gönderin)
- Nöbetçi rotasyonu oluşturuldu
Lansman Sonrası Operasyonlar
Lansmanı izleyen ilk 30 gün yakın takip gerektirir:
Günlük görevler:
- Tüm zincirlerdeki sıcak cüzdan bakiyelerini gözden geçirin
- Bekleyen çekim kuyruğunu kontrol edin (dakikalar içinde temizlenmelidir)
- Yeni kalıplar için hata günlüklerini izleyin
- Optimizasyon fırsatları için yavaş sorgu günlüğünü inceleyin
Haftalık görevler:
- Yedek bütünlüğünü doğrulayın (staging’e test geri yüklemesi yapın)
- Güvenlik günlüklerini gözden geçirin (başarısız girişler, engellenen IP’ler)
- Yeni sürümler mevcutsa cüzdan daemon yazılımını güncelleyin
- Kapasite planlaması için PHP-FPM ve Nginx erişim kalıplarını inceleyin
Ölçekleme tetikleyicileri:
- PHP-FPM
max_childrensürekli limittte → yük dengeleyici arkasına uygulama sunucusu ekleyin - MySQL CPU’su sürekli %70 üzerinde → okuma replikaları ekleyin veya donanımı yükseltin
- Redis belleği %80 üzerinde → maxmemory artırın veya cluster node’ları ekleyin
- WebSocket sunucusu 3.000 eşzamanlı bağlantı üzerinde → Redis pub/sub ile ikinci bir WS node’u ekleyin
Bu rehber teknik dağıtımı kapsıyor. İş tarafı için — lisanslama, maliyetler, gelir modelleri ve pazara giriş stratejisi — kripto borsası iş planını okuyun. Uçtan uca eksiksiz bir genel bakış için kripto borsası nasıl kurulur sayfasına bakın.
Dağıtmaya hazır mısınız? Tam yığını test etmek için canlı demoyu deneyin, lisans seçenekleri için fiyatlandırmayı inceleyin veya dağıtım desteği için ekiple iletişime geçin.
Codono Team
Codono builds enterprise-grade crypto exchange software deployed by 250+ operators across 40+ countries. Our team writes from production experience running spot, derivatives, custody, and compliance at scale.
View all posts by Codono Team →