Ö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.
