Ubuntu VPS kurulumu: İlk HTTPS sitenizi yayımlayın
Yeni Ubuntu 24.04 LTS VPS üzerinde Nginx ile küçük bir statik HTTPS sitesi yayımlayın. Ayrı yönetici hesabı, SSH anahtarı, DNS, sertifika yenilemesi ve yeniden başlatma kontrolünü birlikte ele alın. Mevcut bir site için önce çalışan yapılandırmayı ve kurtarma yolunu inceleyin.
İçindekiler
Sunucuyu, alan adını ve kurtarma erişimini hazırlayın
Bu örnek yeni Ubuntu 24.04 VPS, genel IPv4, 22 numaralı SSH portu, sudo yetkili ilk hesap ve sizin kontrolünüzde bir alan adı varsayar. Makineyi oluşturmadan sonraki bölümde anahtarı üretin. Boş makine zaten varsa çalışan erişim üzerinden alternatif yolu kullanın.
İstemci komutları bilgisayarınızda Bash ile Linux, macOS veya WSL üzerinde; sunucu komutları SSH içinde çalışır. 203.0.113.10 ve app.example.com dokümantasyon örnekleridir: her yerde kendi IP ve alan adınızla değiştirin. İlk kullanıcı ubuntu yerine sağlayıcının verdiği hesap olabilir.
Örnek yollar mevcut bir kuruluma aitse durun. Erişim veya firewall değiştirmeden kurtarma konsolunu açın ve sağlayıcının bu imaj için talimatını okuyun. Oracle Cloud Ubuntu imajında aşağıdaki UFW bölümü kullanılmaz.
Anahtarı oluşturun ve güvenilir ilk bağlantıyı kurun
Bilgisayarınızda özel bir anahtar oluşturun ve parola belirleyin. Dosya zaten varsa başka ad seçin. .pub genel anahtardır; özel dosya bilgisayarınızda kalır.
mkdir -p ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/ubuntu_vps
cat ~/.ssh/ubuntu_vps.pubYeni VPS için: Ubuntu 24.04 makinesini oluştururken bu genel anahtarı sağlayıcının SSH alanına verin. İlk kullanıcıyı doğrulayıp aşağıdaki sunucu parmak izi kontrolüne geçin; mevcut sunucuya ait kopyalama adımlarını atlayın.
Oluşturulmuş fakat boş VPS için: çalışan oturumu açık tutun. Bilgisayarınızdaki ikinci terminalden yeni genel anahtarı mevcut kimlik doğrulamayla kopyalayın. existing_vps_key yerine kullandığınız özel anahtarın adını yazın. Çalışan erişim parola veya agent kullanıyorsa -i ~/.ssh/existing_vps_key kısmını çıkarın; sunucunun kimlik doğrulama politikasını değiştirmeyin.
scp -i ~/.ssh/existing_vps_key ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubMevcut sunucu oturumunda yüklenen genel anahtarı doğrulayıp ilk hesabın authorized_keys dosyasına ekleyin. Ekleme, önceki kayıtları korur; ek satır sonu son satırı satır sonusuz dosyayı da ele alır. Bu işlem kendi ilk hesabınız içindir. Erişim yoksa önce sağlayıcının kurtarma yolunu kullanın.
if ssh-keygen -lf ~/ubuntu-vps-admin.pub; then
mkdir -p ~/.ssh
chmod 700 ~/.ssh
printf '\n' >> ~/.ssh/authorized_keys
cat ~/ubuntu-vps-admin.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
fiHer iki yolda ilk SSH sorusunu kabul etmeden, güvenilir kurtarma konsolundan aynı algoritmadaki sunucu anahtarını kontrol edin. Ed25519 anahtarı için konsolda:
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubBilgisayarınızda yeni anahtarla ayrı bağlantı açın. Parmak izi doğrulanıp giriş başarılı olana kadar önceki erişimi kapatmayın.
ssh -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10Bilgisayarınızdaki başka terminalden sonraki yönetici hesabında kullanılacak genel anahtarı kopyalayın. Geçici .pub dosyasını tekrar kopyalamak sorun değildir.
scp -i ~/.ssh/ubuntu_vps ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubAyrı yönetici oluşturup yeni oturumda sınayın
Sunucuda önce getent passwd deploy çalıştırın. Sonuç geliyorsa kullanılmayan bir kullanıcı adı seçip grup ve ev dizini dahil her örnekte değiştirin. Böylece başka hesabın anahtar dosyasının üzerine yazılmaz.
İmaj ve kaynakları doğrulayın, güncellemeleri gözden geçirin ve yönetici hesabını oluşturun. sudo soruları için güçlü parola belirleyin. install komutları anahtarın sahibini ve dar dosya izinlerini ayarlar.
cat /etc/os-release
free -h
df -h /
sudo apt update
sudo apt upgrade
sudo adduser deploy
sudo usermod -aG sudo deploy
sudo install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
sudo install -m 600 -o deploy -g deploy ~/ubuntu-vps-admin.pub /home/deploy/.ssh/authorized_keysBilgisayarınızda başka terminalden yeni yöneticiyle bağlanın:
ssh -i ~/.ssh/ubuntu_vps deploy@203.0.113.10Bu yeni sunucu oturumunda sudo çalıştırın. deploy parolası kabul edilince root yazmalıdır. Bağlantı ve sudo çalıştığında bu oturumdan devam edin; ilk erişimi koruyun.
sudo whoamiNginx kurun, imaja uygun firewall yolunu seçin
Sunucuda Nginx kurun. Sağlayıcı ağ filtresi ve konuk işletim sisteminin firewall kuralları birlikte erişimi belirler. Konsol ve çalışan SSH oturumu açık kalsın.
sudo apt install nginx
sudo systemctl enable --now nginxSağlayıcı tarafında TCP 22 için yönetim konumunuza, TCP 80/443 için site ziyaretçilerine izin verin. SSH başka porttaysa o portun kuralını koruyun. Ağ izni, konuk sistemde engellenen portu tek başına açmaz.
Oracle Cloud Ubuntu imajı: aşağıdaki UFW bloğunu tamamen atlayın. UFW, imajın açılış ve blok diskler için gereken iSCSI kuralları dahil kalıcı firewall yapılandırmasını bozabilir. Verilen iptables kurallarını koruyun. OCI security list/NSG ve belgelenmiş konuk kurallarıyla HTTP/HTTPS erişimini ayarlayın; kuralları temizlemeyin veya firewall paketlerini değiştirmeyin.
UFW desteklenen diğer yeni Ubuntu imajları: yalnızca sağlayıcı bu yöntemi destekliyorsa ve farklı yönetilen firewall gerekmiyorsa aşağıdaki bloğu kullanın. Etkinleştirmeden gerçek SSH portuna izin verin; örnek port 22’dir.
sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verboseHangi yolu seçerseniz seçin yeni SSH girişi yapın. Açık kalan eski oturum yeni bağlantıyı sınamaz. Sertifika istemeden sonraki bölümdeki dış HTTP kontrolünü de geçin.
Ayrı Nginx sitesi içinde sayfayı yayımlayın
Sunucuda yeni belge kökü ve site yapılandırması oluşturun. Alan adını blok içinde değiştirin. Tırnaklı EOF işaretlerini koruyun; bunlar kabuğun Nginx $uri değişkenini erkenden genişletmesini önler.
sudo install -d -m 755 /var/www/first-site
printf '%s\n' '<!doctype html><html lang="tr"><title>İlk yayın</title><h1>Ubuntu VPS bu sayfayı sunuyor</h1></html>' | sudo tee /var/www/first-site/index.html
sudo tee /etc/nginx/sites-available/first-site >/dev/null <<'EOF'
server {
listen 80;
listen [::]:80;
server_name app.example.com;
root /var/www/first-site;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/first-site /etc/nginx/sites-enabled/first-site
sudo nginx -tYalnızca yapılandırma testi başarılıysa Nginx’i yeniden yükleyin:
sudo systemctl reload nginxDNS değiştirmeden bilgisayarınızdan alan adını sunucunun IP adresine yönlendirerek sınayın. Varsayılan Nginx ekranı yerine kendi başlığınızı bekleyin.
curl --resolve app.example.com:80:203.0.113.10 http://app.example.com/DNS ve HTTPS sertifikasını bağlayın
Alan adının A kaydını VPS IPv4 adresine ayarlayın. AAAA kaydı yalnızca bu sunucuda IPv6 çalışıyorsa yayımlanmalıdır; eski kayıt doğrulama ve ziyaretçileri başka yere gönderebilir. Bu örnek proxy olmadan doğrudan VPS’ye giden DNS kullanır.
Bilgisayarınızdan http://app.example.com/ adresini --resolve olmadan isteyin. Sayfanız geldiğinde sunucuda Ubuntu deposundaki Certbot ve Nginx eklentisini kurun. Paketler Universe bileşenini gerektirir; paket bulunamadı hatasını çözmeden devam etmeyin.
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d app.example.com --redirect
sudo nginx -t
sudo certbot renew --dry-run
systemctl list-timers --all certbot.timerEmail ve koşul sorularını tamamlayın. Certbot sitenin yapılandırmasını değiştirir ve HTTP’den HTTPS’ye yönlendirme ekler. Yenileme timer kaydını doğrulayın; etkin değilse sudo systemctl enable --now certbot.timer kullanın. HTTP doğrulama ve yenilemesi için port 80 erişilebilir kalmalıdır.
Dışarıdan ve yeniden başlatma sonrasında doğrulayın
Bilgisayarınızdan yönlendirme, sertifika ve içeriği kontrol edin. HTTP, HTTPS’ye yönlenmeli; HTTPS geçerli sertifikayla başlığınızı göstermelidir. curl -k kullanmayın, sertifika hatalarını gizler.
curl -I http://app.example.com/
curl -I https://app.example.com/
curl -fsS https://app.example.com/Hâlâ test ortamıyken sunucuda sudo reboot çalıştırın. Makine dönünce deploy ile bağlanın, systemctl is-active nginx kontrolü yapın ve dış HTTPS isteğini tekrarlayın. Yeniden başlatma SSH oturumlarını kapatır. Makine dönmezse konsolu kullanın.
Başarısız kontrolü ayırın ve kurulumu saklayın
Diğer sütunlar için tabloyu yana kaydırın →
| Belirti | İlk kontrol |
|---|---|
| SSH zaman aşımı | IP, sağlayıcı ve konuk firewall, kurtarma konsolu |
| Permission denied (publickey) | Kullanıcı, özel anahtar ve authorized_keys izinleri |
| Varsayılan Nginx sayfası | DNS hedefi, server_name ve etkin site |
| Sertifika doğrulama hatası | Genel A/AAAA ve port 80 erişimi |
| Nginx değişiklikten sonra çalışmıyor | sudo nginx -t; sudo journalctl -u nginx -n 50 --no-pager |
Giriş sorununda ayarları değiştirmeden SSH hata teşhisini izleyin. Site dosyaları, Nginx yapılandırması, DNS kayıtları ve kurulum notlarını VPS dışında tutun. Sertifika özel anahtarlarını yedekliyorsanız korumalı depolama kullanın.
Dosya yedekleme denemesi çalışan siteyi değiştirmeden bağımsız kopyayı sınar. Tam hizmet kurtarma diğer dosyalar, sertifikalar ve servis ayarlarını da gerektirir. Erişilebilirlik ve sertifika bitiş uyarıları ekleyin; tek başarılı kontrol gelecekteki yenilemeyi izlemez.
Bu kurulum statik dosya sunar. Veritabanı veya uygulama runtime bileşeni ayrıca servis ve yedekleme yöntemi gerektirir. Eklediğinizde kaynak ihtiyacını ölçün.
Sorular ve yanıtlar
Komutları mevcut web sitemde çalıştırabilir miyim?
Önce ayrı test VPS kullanın. Örnek dosya oluşturur, desteklenen firewall dalında kural etkinleştirir ve Certbot ile Nginx’i değiştirir. Mevcut site, erişim ve kurtarma durumu incelenmelidir.
WordPress veya veritabanı da kuruluyor mu?
Hayır. Sonuç statik HTTPS sitesidir. Uygulama bileşenleri eklendiğinde başlangıç, sağlık kontrolü ve veri kurtarma ayrıca doğrulanmalıdır.
Oracle için UFW bloğunu çalıştırmalı mıyım?
Hayır. OCI Ubuntu imajında bu blok atlanır; imajın gerekli kuralları korunur ve uyumlu ağ/firewall yöntemi izlenir.