Bir VPS, kendi sunucunuza sahip olmanın en ekonomik yoludur. Shared hosting’in performans ve kontrol sınırlamalarını aşar, bulut sağlayıcılarının kompleks fiyatlandırmasından uzak durur. Aylık 5-15 USD ile Docker konteynerleri çalıştırabilir, birden fazla siteyi yönetebilir ve VPN gibi ek servisler kurabilirsiniz.
Bu rehberde Ubuntu 22.04 üzerinde Nginx + PHP-FPM + MySQL yığınıyla ilk Laravel/WordPress sitesini yayına almanız için gereken tüm adımları sırasıyla ele alacağız.
1. Sağlayıcı Seçimi
- DigitalOcean: temiz arayüz, iyi dokümantasyon.
- Hetzner: fiyat/performans lideri.
- Contabo: uygun fiyat, yüksek RAM/CPU.
- Vultr: lokasyon çeşitliliği.
- Türkiye: Turhost, Natro, Netinternet.
Başlangıç için 2 vCPU + 4 GB RAM + 60 GB SSD ideal.
2. İlk Bağlantı
ssh root@sunucu_ip
apt update && apt upgrade -y
3. Kullanıcı Oluşturma
adduser deploy
usermod -aG sudo deploy
mkdir -p /home/deploy/.ssh
cp ~/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys
4. SSH Sertleştirme
/etc/ssh/sshd_config içinde:
- Password auth kapatın:
PasswordAuthentication no. - SSH key ile giriş.
- SSH portunu değiştirin:
Port 2222. - Root login kapatın:
PermitRootLogin no.
Sonrasında: systemctl restart ssh.
5. Firewall
ufw allow 2222
ufw allow 80
ufw allow 443
ufw enable
6. Fail2Ban
apt install fail2ban
systemctl enable fail2ban
Brute-force denemelerini otomatik banlar. /etc/fail2ban/jail.local ile eşiği ayarlayın.
7. Nginx + PHP-FPM Kurulumu
apt install nginx php8.3-fpm php8.3-mysql php8.3-mbstring php8.3-xml php8.3-curl php8.3-bcmath php8.3-gd php8.3-zip php8.3-redis unzip
Composer kurulumu: curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
8. MySQL
apt install mysql-server
mysql_secure_installation
Root parolası, remote login kapatma, test veritabanı silme adımları. Uygulama için ayrı kullanıcı oluşturun.
9. Domain ve SSL
Domain’i A kaydıyla sunucuya yönlendirin. Certbot ile Let's Encrypt sertifikası kurun:
apt install certbot python3-certbot-nginx
certbot --nginx -d ornek.com -d www.ornek.com
10. Nginx Virtual Host
/etc/nginx/sites-available/ornek.com dosyası ile Laravel için ayrı server block oluşturun. root: /var/www/ornek.com/public, index: index.php, try_files: $uri $uri/ /index.php?$query_string.
11. Deploy
cd /var/www
git clone [email protected]:kullanici/proje.git ornek.com
cd ornek.com
composer install --no-dev --optimize-autoloader
npm install && npm run build
cp .env.example .env
php artisan key:generate
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
chown -R www-data:www-data storage bootstrap/cache
12. Monitoring ve Yedekleme
- Netdata veya Uptime Kuma ile takip.
- Restic veya Borg ile günlük yedekleme.
- MySQL için mysqldump + S3 offsite backup.
- Log rotation kontrolü.
Sıkça Sorulan Sorular
Panel (cPanel/Plesk) kurmalı mıyım?
Tek proje için gereksiz. Çoklu müşteri barındırıyorsanız Cloudpanel ücretsiz alternatif.
Docker ile deploy daha kolay mı?
Ekip küçükse Docker Compose deploy sürecini standartlaştırır.
Aylık 5 USD yeterli mi?
2-3 küçük site için evet. Yoğun trafik için 20-40 USD bandına çıkın.
Sonuç
Bu 12 adımla ilk projenizi yayına alabilirsiniz. Sonraki adım: log/monitör, yedekleme ve CI/CD entegrasyonu. Ölçek büyüdüğünde Cloudflare + read replica + managed veritabanı ile stack’i sağlamlaştırın.