İçindekiler
- 1 Kontrol Paneli Olmadan VPS Yönetimi Neden Mantıklı?
- 2 Ön Hazırlık: VPS, Domain ve Erişim Bilgileri
- 3 SSH ile İlk Bağlantı ve Kullanıcı Oluşturma
- 4 Temel Güvenlik: Güncellemeler, SSH Ayarları ve Güvenlik Duvarı
- 5 Web Yığını Kurulumu: Nginx + PHP-FPM + MariaDB
- 6 Alan Adını VPS’e Yönlendirmek: DNS Ayarları
- 7 Nginx Sanal Host (Server Block) ile Siteyi Yayına Alma
- 8 Ücretsiz SSL ile HTTPS Etkinleştirme (Let’s Encrypt + certbot)
- 9 Deploy Senaryoları: Statik Site, PHP Uygulaması, WordPress
- 10 Panel Kullanmadığınızda Bakım, Yedek ve İzleme Nasıl Olmalı?
- 11 Paylaşımlı Hosting’den VPS’e Geçenler İçin Notlar
- 12 Sonuç: Sadece SSH ile Üretim Hazır Bir VPS Yönetmek Mümkün
Kontrol Paneli Olmadan VPS Yönetimi Neden Mantıklı?
Birçok geliştirici ve ajans sahibi için ilk VPS deneyimi genelde bir kontrol paneliyle (cPanel, Plesk, DirectAdmin vb.) başlar. Ancak zamanla fark edilen bir gerçek var: Paneller size hız kazandırırken, aynı zamanda gereksiz kaynak tüketimi, lisans maliyeti ve otomatik yapılmış ama tam anlamadığınız ayarlar anlamına da gelebiliyor. Özellikle tek bir proje için hafif, hızlı ve maliyet-etkin bir mimari kurmak istediğinizde, sadece SSH ile yönetilen yalın bir Linux VPS çok güçlü bir seçenek haline geliyor.
Bu rehberde DCHost üzerinde kiraladığınız bir Linux VPS’i hiçbir kontrol paneli olmadan, yalnızca SSH komut satırı kullanarak nasıl üretim ortamına hazır hale getirebileceğinizi adım adım anlatacağız. Hedefimiz şu:
- Alan adınız (örneğin example.com) DCHost üzerindeki VPS’inize işaret etsin,
- VPS’te Nginx + PHP-FPM + MariaDB (veya MySQL) yığını kurulu olsun,
- HTTPS (SSL) ile güvenli ve modern bir web sitesi yayında olsun,
- Tüm bunlar panel olmadan, sadece SSH ile yönetilebilsin.
Örnek komutlar çoğunlukla Ubuntu/Debian tabanlı bir sistem için verilecek; ancak mantık diğer Linux dağıtımlarında da benzer. Rehberi bitirdiğinizde, kontrol paneli kullanmadan da bir sunucuyu baştan sona yönetebilecek özgüvene sahip olacaksınız.
Ön Hazırlık: VPS, Domain ve Erişim Bilgileri
Önce konsepti netleştirelim: Elinizde DCHost üzerinde kiralanmış bir VPS, bir alan adı ve SSH erişimi olmalı. Bu üçlü olmadan siteyi canlıya alamayız.
1. Uygun VPS Planını Seçmek
Kontrol paneli kullanmadığınız için RAM ve CPU’dan küçük de olsa tasarruf edersiniz. Bu da daha düşük konfigürasyonlu bir VPS ile başlayabilmenizi sağlar. Ancak asıl belirleyici olan, sitenizin trafiği ve teknolojik yığınıdır.
Yeni bir projeye başlarken, özellikle WordPress, Laravel veya basit bir PHP sitesi kuracaksanız, ihtiyacınız olan CPU, RAM ve trafik miktarını kabaca hesaplamak için yeni web sitesi için CPU, RAM ve trafik nasıl hesaplanır rehberimize mutlaka göz atın. Oradaki formüller ve örnekler, ilk kaynak planınızı oldukça isabetli yapmanıza yardımcı olur.
2. İşletim Sistemi ve Sürüm Tercihi
Bu rehberde örnek olarak Ubuntu LTS kullanalım (20.04 veya 22.04). Sebebi basit:
- Geniş dokümantasyon ve topluluk desteği,
- Uzun süreli (LTS) güvenlik güncellemeleri,
- PHP, Nginx ve MariaDB gibi paketlere kolay erişim.
DCHost üzerinde yeni bir VPS oluştururken, işletim sistemi olarak Ubuntu LTS seçmeniz bu rehberle birebir uyumlu ilerlemenizi sağlar.
3. SSH Bilgilerini Hazır Etmek
VPS oluşturulduğunda size şu bilgiler verilir:
- Sunucu IP adresi (örneğin
203.0.113.10) - Root kullanıcı adı (çoğunlukla
root) - Root şifresi veya SSH anahtarınız
Yerel bilgisayarınızda bir SSH istemcisine ihtiyacınız var:
- macOS / Linux: Terminal içindeki
sshkomutu, - Windows: PowerShell’de
sshveya PuTTY / Windows Terminal.
Yeni aldığınız VPS’in donanım ve ağ performansını test etmek için de ayrıca zaman ayırmanızı öneririm. Bunun için adım adım örnekler bulmak isterseniz, yeni VPS aldığınızda ilk yapmanız gerekenler ve benchmark rehberimizi inceleyebilirsiniz.
SSH ile İlk Bağlantı ve Kullanıcı Oluşturma
Şimdi ilk kez VPS’e bağlanalım. Yerel terminalinizde:
ssh [email protected]
İlk bağlantıda, sunucunun parmak izi sorulacaktır; onayladıktan sonra şifrenizi girip root olarak oturum açarsınız. Ancak root ile günlük çalışma yapmak kötü bir alışkanlıktır. Hemen yeni bir kullanıcı oluşturup sudo yetkisi verelim.
1. Yeni Kullanıcı ve Sudo Yetkisi
adduser deploy
usermod -aG sudo deploy
Şimdi SSH bağlantınızı kapatın ve bu kez deploy kullanıcısıyla bağlanın:
ssh [email protected]
Artık yönetim işlerini deploy ile yapabilir, root yetkisine ihtiyaç duyduğunuzda komutların başına sudo ekleyebilirsiniz.
2. SSH Anahtar Tabanlı Giriş
Şifre ile giriş yerine, SSH anahtarı ile giriş çok daha güvenlidir. Yerel bilgisayarınızda (daha önce oluşturmadıysanız):
ssh-keygen -t ed25519 -C "benim-laptop"
Oluşan ~/.ssh/id_ed25519.pub içeriğini kopyalayıp sunucuda deploy kullanıcısı ile:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "BURAYA_PUBLIC_KEY" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Artık şifre girmeden bağlanabilirsiniz. Sonraki adımda, şifre ile giriş ve root SSH girişini kapatarak güvenliği sıkılaştıracağız.
SSH güvenliğini daha ileri seviyeye taşımak (örneğin FIDO2 güvenlik anahtarları, SSH CA ve anahtar rotasyonu gibi konular) istiyorsanız, VPS’te SSH güvenliği nasıl sağlamlaşır rehberimizi mutlaka okumanızı öneririm.
Temel Güvenlik: Güncellemeler, SSH Ayarları ve Güvenlik Duvarı
Kontrol paneli olmadan VPS yönetiyorsanız, güvenlik tamamen sizin sorumluluğunuzdadır. Neyse ki temel birkaç adım, büyük bir koruma kalkanı sağlar.
1. Sistem Güncellemeleri
sudo apt update
sudo apt upgrade -y
Bu komutlarla çekirdek dahil tüm paketlerin güncel olmasını sağlarsınız. Kritik güncellemeleri düzenli uygulamak, saldırı yüzeyinizi ciddi oranda azaltır.
2. SSH Yapılandırmasını Sertleştirmek
SSH yapılandırma dosyasını açın:
sudo nano /etc/ssh/sshd_config
Aşağıdaki ayarları kontrol edin / ekleyin:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Kaydedip çıktıktan sonra SSH servisini yeniden başlatın:
sudo systemctl restart ssh
Bu noktadan sonra sunucuya sadece anahtar tabanlı giriş mümkün olacak, root doğrudan bağlanamayacak. Bu, brute-force saldırılarına karşı önemli bir kalkan sağlar.
3. Basit Bir Güvenlik Duvarı (UFW)
Önce UFW’yi kuralım:
sudo apt install ufw -y
SSH bağlantısını kilitlememek için önce SSH portunu, ardından HTTP/HTTPS trafiklerini izin verelim:
sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw status
İleride başka servisler (örneğin yalnızca sizin bağlanacağınız bir veritabanı portu) açmak isterseniz, UFW ile port bazlı izinler tanımlamaya devam edebilirsiniz.
Daha kapsamlı bir güvenlik stratejisi için, sadece SSH değil, web uygulaması ve veritabanı katmanını da kapsayan önerilerimizi görmek isterseniz, VPS sunucu güvenliği nasıl sağlanır rehberimizi incelemenizi öneririm.
Web Yığını Kurulumu: Nginx + PHP-FPM + MariaDB
Şimdi işin keyifli kısmına geçip web yığınını kuralım. Amacımız hafif ve esnek bir yapı, bu nedenle Apache yerine Nginx tercih edeceğiz. Örnek, PHP tabanlı bir site (WordPress, basit PHP uygulaması vb.) için olacak.
1. Nginx Kurulumu
sudo apt install nginx -y
Kurulumdan sonra Nginx otomatik başlar. Durumunu kontrol edin:
sudo systemctl status nginx
Tarayıcınızdan sunucu IP adresine gittiğinizde Nginx’in varsayılan karşılama sayfasını görüyorsanız, bu adım başarılıdır.
2. PHP ve Gerekli Uzantılar
Örneğin PHP 8.1’i kuralım (Ubuntu sürümünüze göre paket adı değişebilir):
sudo apt install php-fpm php-mysql php-xml php-gd php-curl php-zip -y
PHP-FPM servisinin çalıştığını kontrol edin:
sudo systemctl status php8.1-fpm
Çalışıyorsa, Nginx ile entegrasyon için hazırız.
3. MariaDB (veya MySQL) Kurulumu
sudo apt install mariadb-server -y
sudo systemctl status mariadb
Ardından temel güvenlik sihirbazını çalıştırın:
sudo mysql_secure_installation
Bu araçla:
- Root şifresi belirler,
- Anonim kullanıcıları siler,
- Uzak root girişini kapatır,
- Test veritabanını kaldırırsınız.
4. Örnek Veritabanı ve Kullanıcı Oluşturma
Örneğin example_db adında bir veritabanı, example_user adında bir kullanıcı oluşturalım:
sudo mysql
CREATE DATABASE example_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'GucluBirSifre123!';
GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Bu bilgileri, ileride PHP uygulamanızın config.php veya .env dosyasında kullanacaksınız.
Alan Adını VPS’e Yönlendirmek: DNS Ayarları
Sunucunuz hazır; şimdi alan adınızı bu sunucuya yönlendirmeniz gerekiyor. Bu işlem, alan adını aldığınız yerdeki DNS yönetim ekranından yapılır.
1. A Kaydı Oluşturma
Örneğin example.com için:
- Tür: A
- Ad:
@(veya boş bırakılır) - Adres:
203.0.113.10(VPS IP’niz) - TTL: 300–3600 (5–60 dakika) arası tercih edilebilir
Eğer www.example.com da aynı siteyi göstermesini istiyorsanız, ek olarak:
- Tür: CNAME
- Ad:
www - Hedef:
example.com
DNS kayıt türleri ve sık yapılan hatalar hakkında daha derinlemesine bilgi isterseniz, DNS kayıtları A’dan Z’ye rehberimizi detaylıca inceleyebilirsiniz.
Yeni bir alan adı aldıysanız, SSL, e-posta ve SEO tarafında ilk 30 gün neleri kontrol etmeniz gerektiğini de DNS, SSL, e‑posta ve SEO kontrol listemizde adım adım anlattık.
Nginx Sanal Host (Server Block) ile Siteyi Yayına Alma
Şimdi Nginx üzerinde alan adınıza özel bir yapılandırma dosyası oluşturacağız. Önce web kök dizinini hazırlayalım:
sudo mkdir -p /var/www/example.com/public
sudo chown -R deploy:www-data /var/www/example.com
sudo chmod -R 750 /var/www/example.com
Basit bir test dosyası oluşturalım:
echo "<h1>Merhaba Dunya</h1>" > /var/www/example.com/public/index.html
1. Nginx Server Block Dosyası
Yeni bir yapılandırma dosyası açın:
sudo nano /etc/nginx/sites-available/example.com
İçerisine şu örnek yapılandırmayı yazın (PHP kullanacaksanız aşağıdaki versiyonu tercih edin):
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/public;
index index.php index.html index.htm;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
Siteyi etkinleştirin ve Nginx’i yeniden yükleyin:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Tarayıcıdan http://example.com adresine gittiğinizde, az önce oluşturduğumuz test sayfasını görmelisiniz.
Ücretsiz SSL ile HTTPS Etkinleştirme (Let’s Encrypt + certbot)
Artık HTTP çalışıyor; sıra HTTPS’e geldi. Modern web’te, özellikle tarayıcı güvenlik uyarılarından kaçınmak ve SEO’yu korumak için HTTPS zorunlu hale geldi diyebiliriz.
1. Certbot Kurulumu
sudo apt install certbot python3-certbot-nginx -y
2. Sertifika Alma ve Otomatik Nginx Entegrasyonu
Aşağıdaki komut, hem sertifikayı alır hem de Nginx yapılandırmanızı otomatik olarak HTTPS’e günceller:
sudo certbot --nginx -d example.com -d www.example.com
Size e-posta, kullanım koşulları ve HTTP → HTTPS yönlendirmesi ile ilgili sorular soracaktır. Tüm alanları doldurduktan sonra:
- 80 ve 443 portlarından erişilebilen geçerli bir SSL sertifikanız olur,
- Nginx yapılandırmanız 443 portunda TLS ile dinleyecek şekilde güncellenir,
- HTTP istekleri otomatik olarak HTTPS’e yönlendirilir.
HTTP’den HTTPS’e geçişin SEO’ya etkileri, HSTS ve 301 yönlendirme stratejileri hakkında daha detaylı bilgi isterseniz, HTTP’den HTTPS’e geçiş rehberimizi mutlaka okuyun.
Deploy Senaryoları: Statik Site, PHP Uygulaması, WordPress
Artık altyapı hazır. Sırada projenizi sunucuya taşıyıp canlıya almak var. Burada üç tipik senaryoyu ele alalım.
1. Statik HTML/CSS/JS Site
Statik bir site için tek yapmanız gereken, derlenmiş veya hazır dosyaları /var/www/example.com/public dizinine kopyalamak.
- scp ile transfer:
scp -r ./build/ [email protected]:/var/www/example.com/public - Git pull: Sunucuda
gitkullanarak repoyu çekip, derleme komutlarını orada çalıştırabilirsiniz.
Nginx yapılandırmasında PHP bloğuna ihtiyacınız yoksa, index index.html index.htm; satırı yeterli olur.
2. Basit PHP Uygulaması (Framework’süz veya Küçük Bir MVC)
PHP dosyalarınızı public dizinine veya framework’ünüzün önerdiği klasöre kopyalayın. Örneğin:
scp -r ./project-root/* [email protected]:/var/www/example.com/
Gerekirse veritabanı bağlantı ayarlarını config.php içinde, az önce oluşturduğumuz example_db ve example_user bilgileriyle güncelleyin.
3. WordPress Kurulumu
WordPress gibi popüler CMS’leri kontrol paneli olmadan da gayet konforlu yönetebilirsiniz.
- WordPress’i indirin:
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz
sudo rsync -avP /tmp/wordpress/ /var/www/example.com/public/
- Dosya izinlerini ayarlayın:
sudo chown -R deploy:www-data /var/www/example.com
find /var/www/example.com -type d -exec chmod 750 {} ;
find /var/www/example.com -type f -exec chmod 640 {} ;
- Tarayıcıdan https://example.com adresine girip kurulum sihirbazını tamamlayın.
WordPress’i VPS üzerinde performanslı ve güvenli şekilde koşturmak için sunucu tarafında yapılabilecek ileri seviye ayarları merak ediyorsanız, WordPress için sunucu tarafı optimizasyon rehberimizi mutlaka okuyun.
Panel Kullanmadığınızda Bakım, Yedek ve İzleme Nasıl Olmalı?
Kontrol paneli kullanmadığınızda, “tek tıkla yedek” veya “grafikli CPU grafikleri” gibi hazır özellikleriniz olmayabilir; ama bunlar SSH tarafında çok daha esnek ve şeffaf şekilde kurulabiliyor.
1. Log’ları İzlemek ve Hata Ayıklamak
- Nginx erişim logları:
/var/log/nginx/example.com.access.log - Nginx hata logları:
/var/log/nginx/example.com.error.log - PHP-FPM logları: Genelde
/var/log/php8.1-fpm.logveyajournalctl -u php8.1-fpm - Sistem logları:
journalctl -xe
Bu loglar sayesinde 404 hataları, yavaş istekler veya konfigürasyon problemlerini hızlıca yakalayabilirsiniz.
2. Otomatik Yedekleme (Cron ile)
Panel olmadan da cron kullanarak düzenli dosya ve veritabanı yedekleri alabilirsiniz. Örneğin günlük veritabanı yedeği için bir bash betiği yazıp cron’a ekleyebilirsiniz. Cron mantığına panel tarafında daha alışık olanlar için, ilham olması açısından cron job ile yedek ve bakım işleri rehberimizi okuyabilirsiniz; oradaki prensiplerin aynısı SSH tarafında da geçerlidir.
3. İzleme ve Alarm Kurmak
VPS’inizin CPU, RAM, disk ve yanıt süresini izlemek, panel olmadan da mümkün ve hatta çoğu zaman daha esnektir. Prometheus + Grafana veya daha hafif çözümlerle kendi izleme altyapınızı kurabilirsiniz. Başlangıç seviyesi için, VPS izleme ve alarm kurulumu rehberimizde onlarca sunucuyu tek panelden izlemenin pratik yolunu anlattık.
4. Güvenlik Kontrol Listesini Unutmayın
SSH sertleştirme, firewall, güncellemeler, fail2ban, dosya izinleri ve uygulama tarafı güvenlik ayarları… Tüm bunlar bir araya geldiğinde, panel kullanmasanız bile oldukça dirençli bir altyapınız olur. Konuyu daha sistematik ele almak için, VPS sunucu güvenliği için pratik ve doğrulanabilir yaklaşımlar makalemizi de okumanızı tavsiye ederim.
Paylaşımlı Hosting’den VPS’e Geçenler İçin Notlar
Bu rehberi okuyanların önemli bir kısmı, muhtemelen daha önce paylaşımlı hosting kullanmış ve şimdi DCHost üzerinde kendi VPS’ine geçen kişiler. Aradaki fark büyük: Artık her şey sizin kontrolünüzde ve yaptığınız her ayarın etkisini çok daha net görüyorsunuz.
Mevcut sitenizi panelden yeni bir VPS’e taşıma sürecinde neleri sırayla yapmanız gerektiğini, e-posta ve DNS tarafında kesinti yaşamamak için hangi adımların kritik olduğunu paylaşımlı hosting’den VPS’e geçiş kontrol listemizde detaylı şekilde anlattık. Sadece yeni projeler değil, mevcut projelerinizi de SSH tabanlı bu esnek yapıya taşırken o rehberi elinizin altında tutmanız faydalı olacaktır.
Sonuç: Sadece SSH ile Üretim Hazır Bir VPS Yönetmek Mümkün
Gördüğünüz gibi, bir web sitesini yayına almak için kontrol paneli şart değil. DCHost üzerinde kiraladığınız yalın bir Linux VPS ile:
- SSH anahtar tabanlı güvenli erişimi kurduk,
- Sistemi güncelledik ve SSH erişimini sertleştirdik,
- UFW ile temel güvenlik duvarını etkinleştirdik,
- Nginx + PHP-FPM + MariaDB yığınıyla modern bir web altyapısı hazırladık,
- Alan adınızı DNS ile VPS’e yönlendirdik,
- Let’s Encrypt (certbot) ile ücretsiz SSL kurup HTTP’yi HTTPS’e yönlendirdik,
- Statik site, basit PHP uygulaması ve WordPress için pratik deploy örnekleri gördük,
- Yedekleme, log izleme ve alarm tarafında panel bağımsız çözümlerden bahsettik.
İlk bakışta komut satırı gözünüzü korkutabilir; ancak birkaç kez aynı adımları uyguladıktan sonra, panelde “hangi menüdeydi bu ayar?” diye aranmaktan çok daha hızlı ilerlediğinizi fark edeceksiniz. Üstelik her yapılandırmayı satır satır siz yaptığınız için, sorun çıktığında neyi nerede düzelteceğinizi de çok daha iyi biliyor olacaksınız.
Eğer hala “nereden başlayacağım?” diyorsanız, en pratik yol küçük bir test projesi için DCHost’ta hafif bir VPS kiralamak, bu rehberi takip ederek sıfırdan bir ortam kurmak ve deneme yanılma ile kendinizi rahatlatmak. İhtiyaç büyüdükçe, DCHost’un daha güçlü VPS, dedicated sunucu ve colocation çözümleriyle aynı yaklaşımı ölçeklendirmeniz mümkün.
Kontrol paneli olmadan VPS yönetimi, uzun vadede size hem teknik özgürlük hem de maliyet avantajı sağlayacak güçlü bir beceri. Bu rehberi favorilerinize ekleyin; yeni her proje için küçük küçük iyileştirerek kendi “altın şablonunuzu” oluşturun.
