.NET 6 MVC’yi Linux Üzerine Dağıtma

Önce Linux sunucunuzda bir klasör oluşturun, örneğin adını myweb yapın. Klasör izinlerini doğru ayarlayın; standart varsayılan değer 0755’tir. 0755 değeri rwxr-xr-x izinlerine karşılık gelir:

Diğer kullanıcılar: Yalnızca okuma ve çalıştırma izni (r-x)

Sahip (kullanıcı hesabınız): Okuma, yazma ve çalıştırma için tam izinler (rwx)

Grup üyeleri: Yalnızca okuma ve çalıştırma izni (r-x)

Ardından Visual Studio üzerinden projenizi yayınlayın. Önce derleme yapılandırmasını Release moduna geçirin ve projeyi derleyin, ardından projeye sağ tıkla ve Yayınla seçeneğini seçin. Yayın işlemi tamamlandıktan sonra FTP istemcisi kullanarak yayın klasöründeki tüm dosyaları yeni oluşturulan myweb dizinine kopyalayın.

cd /usr/myweb

Dosyalar taşındıktan sonra aşağıdaki komutu çalıştırarak uygulamayı arka plan işlemi olarak başlatın. Arka planda çalıştırma, uzak Linux SSH penceresini kapatsanız bile programın çalışmaya devam etmesini sağlar.

sudo nohup dotnet yourprogramname.dll &Code language: CSS (css)

Komutun sonundaki & işareti arka planda çalıştırma için zorunludur. Bu işaret olmadan uygulama ön planda çalışır ve terminali kapattığınızda veya Ctrl + C tuşlarına bastığınızda anında kapanır.

İşlevsel örnek: sudo nohup dotnet WebSite.dll &

Ek Önemli Not

Yayınlama öncesi port ayarlarını yapın. .NET MVC projenizdeki appsettings.json dosyasını açın.

Aşağıdaki yapılandırmayı şablon olarak ekleyin:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://0.0.0.0:8080"
      }
    }
  }
}Code language: JSON / JSON with Comments (json)

Bu yapılandırma, 8080 numaralı port üzerinden tüm IP adreslerinden gelen bağlantıları kabul eder. Nginx’i ters proxy olarak kullanarak tek bir Linux sunucusunda birden fazla alan adı barındırabilirsiniz.

Nginx’i yalnızca ters proxy olarak kullanıyorsanız güvenlik duvarında bu portu açmanıza gerek yoktur. Bu durumda hizmeti yalnızca yerel adrese bağlayın:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://127.0.0.1:8080"
      }
    }
  }
}Code language: JSON / JSON with Comments (json)

Bu ayar ile uygulama yalnızca yerel istekleri kabul eder ve dışarıdan gelen tüm doğrudan bağlantıları engeller.

Son hedefim bu uygulamaya abc.com/hello adresi üzerinden erişmek.

Ardından uygulamayı başlatmak için sudo nohup dotnet WebSite.dll & komutunu çalıştırın.

Uygulamanın sorunsuz çalışıp çalışmadığını şu komutla kontrol edin: ps -aux | grep WebSite.dll

Eşleşen bir işlem kaydının görünmesi hizmetin başarıyla çalıştığını gösterir.

Nginx Ters Proxy Ayarları (Proxy özelliği gerekmiyorsa bu bölümü atlayın)

Eğer Nginx zaten yüklüyse ana yapılandırma dosyası /etc/nginx/nginx.conf yolunda bulunur.

/etc/nginx/sites-available/default yolundaki site yapılandırma dosyasını düzenleyin.

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	root /var/web/xxxx;
	index index.html index.htm index.nginx-debian.html;
	server_name _;

	# Ana site
	location / {
		try_files $uri $uri/ =404;
	}

	# ✅ Önemli: /hello yolunu .NET'e yönlendirin
	location /hello {
		proxy_pass http://127.0.0.1:8080;
		proxy_http_version 1.1;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
	}
}Code language: PHP (php)

Değişiklikleri kaydettikten sonra Nginx’i yeniden başlatın

sudo nginx -t
sudo systemctl restart nginx

Şimdi .NET MVC uygulamasını yeniden başlatın

Önce ps -aux | grep WebSite.dll komutu ile çalışan işlemi bulun ve ilgili satırın başındaki PID numarasını not alın.

Bu PID numarasını kullanarak çalışan .NET MVC örneğini durdurun.

Hizmeti şu komutla yeniden başlatın: sudo nohup dotnet 你的项目.dll –urls http://127.0.0.1:8080 > /dev/null 2>&1 &

Artık genel testi gerçekleştirin

Nginx’i Yeniden Başlatma

Aşağıdaki komutu çalıştırın:

bash

Çalıştır:

sudo systemctl restart nginx

.NET 8080 Portunda Dinliyor

.NET hizmetinin durumunu kontrol etmek için aşağıdaki komutu kullanın:

bash

Çalıştır:

curl http://127.0.0.1:8080

Terminalde ham HTML içeriği görüntüleniyorsa uygulama sorunsuz çalışıyor demektir.

.NET içinde yayınlandı

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir