Google Cloud Ücretsiz Deneme kullanarak website kurma – 9 (Asp.Net Core 3.1 devam)

Herkese merhaba,

Bir önceki yazımda Ubuntu sunucumuz üzerine Asp.Net Core 3.1 ile yaptığımız siteyi nasıl yükleriz onu anlatmaya başlamıştım. Konuyu bir yere kadar getirdik şimdi ise tamamlayacağız. Önceki yazıma aşağıdaki linkten ulaşabilirsiniz.

Google Cloud Ücretsiz Deneme kullanarak website kurma – 8 (Asp.Net Core 3.1 proje)

En son olarak sitemizi oluşturup birkaç ayar yapıp publish etmiştik. Bundan sonra sitemizi önceki yazımda sunucumuzda oluşturduğumuz klasöre aktarmakla devam edeceğiz.

Neler yapmalıyız? (devam)

5. Publish dosyalarımızı sunucumuza aktarmalıyız.

Bunun için wordpress dosyalarımızı aktarırken kullandığımız FileZilla programını kullanacağız. Şu yazımda FileZilla üzerinde bir profil oluşturup dosyalarımızı aktarmıştık. Aynı şekilde devam edeceğiz.

FileZilla programını açalım ve sunucumuza bağlanalım. Bağlantı yaptıktan sonra önceki yazımda belirlediğimiz klasöre FileZilla üzerinden ulaşalım.

/var/www/yenidenemesitem.xyz

Asp.Net Core 3.1 ile yaptığımız sitemizin tüm publish dosyalarını seçip sürükle bırak yaparak bu klasöre aktaralım.

Aaaa aktarırken permission denied diye hata mı verdi? Vermediyse ne ala. Ama vermiş olması lazım.

Bunun sebebi sunucuda klasör açarken root kullanıcısıyla açmış, ama dosya aktarımı yaparken admin kullanıcısı ile (FileZilla profilinde admin kullanıcısını kullandık) aktarmaya çalışmamız. Bunu çözmek için tekrar terminal i açıp orada admin kullanıcısı için bu klasöre yetki vermemiz gerekiyor.

Şimdi terminali açalım ve aşağıdaki komutu çalıştıralım.

chown admin /var/www/yenidenemesitem.xyz

Bundan sonra aktarımı tekrar deneyelim. Aşağıda gördüğünüz gibi aktarım gerçekleşecektir.

6. Sunucumuza Core 3.1 SDK yüklemeliyiz.

Terminal ekranına dönüyoruz. Burada Microsoft bize ne yapacağımızı anlatmış zaten. Ama yinede çalıştıracağınız komutları burada yazacağım. Bunu yaptığımız zaman Ubuntu sunucumuza sitemizin çalışması için gerekli olan SDK’yı yüklemiş olacağız.

Önce tmp klasörüne gidelim.

cd /tmp

sonra şu komutları sırayla çalıştıralım.

wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.1

Yüklendikten sonra dotnet bilgimizi şu komutla görelim.

dotnet --info

Artık sitemiz çalışabilir.

Burada versiyona dikkat edelim bu komutlar kullanılarak son 3.1 ‘in son versiyonu yükleniyor. Mesela burada 3.1.200 yüklenmiş. Siz Visual Studioda sitenizi publish ederken versiyona dikkat edin. Baktınız çalışmıyor Visual Studio’yu güncelleyin sizde 3.1.100 filan kalmış olabilir. Ya da ben nasıl yapılacağını bulamadım ama 3.1.100 versiyonunu sunucunuza yükleyin. Nasıl yaptığınızı yoruma yazarsanız makbule geçer.

7. Siteyi başlatmak için Ubuntu da servis yazmalıyız.

Bu kısmı yaparken Burak Selim Şenyurt’un şu makalesi bana çok yardımcı oldu, mantığını anladım.

Şöyle anlatayım. Sunucumuz çalışmaya başlarken bizim kestrelle çalışan Core sitemizi çalıştırıp localhost:1923 den yayınlaması gerekiyor. Bunu yaptığında nginx de localhost:1923 e yönlendirme yapabilecek. Sitemiz bu şekilde yayınlanmış olacak.

Öncelikle ubuntu da .service uzantılı bir dosya yapmamız gerekiyor. Peki bu dosyayı hangi klasör altında yapacağız? Hemen cevap veriyorum.

/etc/systemd/system/

Terminalde dosya oluşturmak ve içeriğini düzenlemek için editör olarak nano kullandım. Şimdi şu komutu çalıştıralım.

nano /etc/systemd/system/kestrel-yenidenemesitem.service

Klasör altında böyle bir dosya olmadığı için yeni bir dosya oluşturacak şekilde editör açılır.

Bu dosyanın içeriği aşağıdaki gibi olmalıdır.

[Unit]
Description=yenidenemesitem.xyz on Nginx
[Service]
WorkingDirectory=/var/www/yenidenemesitem.xyz
ExecStart=/usr/bin/dotnet /var/www/yenidenemesitem.xyz/yenidenemesitem.dll
Restart=always
RestartSec=30
SyslogIdentifier=dotnet-yenidenemesitem
User=admin
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target

Bundan sonra çıkmak için Ctrl-X tuşuna basalım. Önce kaydetmek istiyor musunuz diye soracak. Y tuşuna basalım. Sonra dosya ismi bu mu olsun diyecek Enter’e basalım ve dosyamızı oluşturalım.

Sonrasında Linux da systemctl programı bulunuyor. Servis Yöneticisidir kendisi. Şimdi de dosyasını oluşturduğumuz servisimizi aktifleştirip başlatmamız gerekiyor. Önce dosyanın bulunduğu klasöre gidiyoruz.

cd /etc/systemd/system

Emin olmak için ” ls ” komutu ile klasörü listeleyebilirsiniz. Şimdi şu komutları çalıştıralım.

sudo systemctl enable kestrel-yenidenemesitem.service
sudo systemctl start kestrel-yenidenemesitem.service
sudo systemctl status kestrel-yenidenemesitem.service

Enable aktif eder, start başlatır, status durumunu gösterir. Ek olarak stop komutu durdurur. disable pasifleştirir.

bu komutları çalıştırınca şu ekranla karşılaşırız.

Görüleceği üzere servisimiz çalışmaya başladı. Sitemizi çalıştırdı. Ctrl-C  ile status ekranından çıkış yapalım. Son olarak bir işlemimiz kaldı. Hadi onu da yapalım bitsin bu işkence. 🙂

8. Nginx’ten sitemize yönlendirme yapacağız.

Artık sitemizi çalıştırdık. Son bir işlemimiz kaldı. Nginx’ten sitemize yönlendirme yapacağız.

Bunun için önceki yazımın başına gidiyoruz. 1. adıma. Şimdi Nginx’in konfigurasyon dosyasında düzenleme yapacağız.

Önce konfigurasyon dosyalarının bulunduğu klasöre gidelim ve dosyamızı şu komutla açalım. Yine Nano kullanacağız.

cd /home/admin/conf/web && ls
nano yenidenemesitem.xyz.nginx.conf

Dosya açıldığında aşağıdaki gibi görünecektir. Bunu değiştireceğiz.

Şimdi dosyayı aşağıda vereceğim şekilde düzenleyelim.

Benim 10.142.0.2 diye yazdığım IP’yi siz kendi Dahili IP’nizi yazacaksınız.

server {
  listen 10.142.0.2:80;
  server_name yenidenemesitem.xyz www.yenidenemesitem.xyz;
  error_log /var/log/apache2/domains/yenidenemesitem.xyz.error.log error;

  location / {
    proxy_pass http://localhost:1923;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection keep-alive;
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }

  location /error/ {
    alias /home/admin/web/yenidenemesitem.xyz/document_errors/;
  }

  location @fallback {
    proxy_pass http://localhost:1923;
  }

  location ~ /\.ht {return 404;}
  location ~ /\.svn/ {return 404;}
  location ~ /\.git/ {return 404;}
  location ~ /\.hg/ {return 404;}
  location ~ /\.bzr/ {return 404;}

  include /home/admin/conf/web/nginx.yenidenemesitem.xyz.conf*;
}

Ctrl-X ile çıkış yapalım. Önce değişiklikleri kaydetmek istiyor musunuz diye soracak. Y tuşuna basın. Sonra Enter’e basıp kaydedin.

Bu değişikliği yaptıktan sonra nginx’i yeniden başlatmamız gerekiyor. systemctl burada yardıma koşuyor yine.

systemctl restart nginx

Nginx’i yeniden başlatıyoruz. Asp Net Core 3.1 sitemizi yayınladık. İşte sitemiz.

Bundan sonra siz istediğiniz gibi sitenizi düzenleyip bu şekilde yayına alabilirsiniz.

Bu seriyi burada bitirelim. İlerleyen zamanlarda belki farklı eklemeler yaparız. Benim gibi Linux makinede Asp.Net Core sitesi yayınlamak isteyenler için en zor olabilecek kısmı burada yapmış olduğumuzu düşünüyorum. Faydalı olduğuna inanıyorum.

Yeni bir site yapma fikriniz varsa ve daha sitenizin tutup tutmayacağını kestiremiyorsanız bu şekilde Google Cloud dan 1 yıllık ücretsiz hesap alarak sitenizi sadece domain adı satın alarak anlattığım şekilde kurabilirsiniz.

Herkese iyi günler.

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir