top of page

Bir WebAPI Projesini Ubuntuda Yayınlama

Güncelleme tarihi: 13 Şub 2024

Bir Ubuntu işletim sisteminde webapi nasıl yayınlanır
Ubuntu'da webapi yayınlama



Bu yazımız daha çok bir rehber niteliği taşımaktadır. Hyper-V sanallaştırma ile windows da kurduğumuz bir ubuntu üzerinde webapi uygulamazı yayınlayacağız.

Komutları burada paylaşıyorum. Sizler de kopyala-yapıştır ile yapmak isterseniz buradaki kodları kopyalamanız yeterli olacaktır.


Ubuntu Kurulumu bittikten sonra ssh bağlantısı varsayılan olarak reddedilecek. Çözmek için.

sudo apt-get purge openssh-server
sudo apt-get install openssh-server

SSH Bağlanmak için

ssh kullaniciAdi@IpAdres

.NET 7 Runtime kurmak için.

.NET 7 runtime kurulumu 
sudo apt-get update && \
  sudo apt-get install -y aspnetcore-runtime-7.0

Nginx Kurulum için

sudo apt-get install nginx

NET kodlarımızın publish sonrası oluşan dosyaların kopyalanması için:

scp -r C:\Users\[UserName]\source\repos\AspNETWebAPIDersleri\AspNETWebAPIDersleri\bin\Release\net7.0\publish/*.* ubuntuUserName@ubuntuIP:/var/www/html

Bu publish dosyaları arasında runtimes klasörünü de unutmayalım.

scp -r C:\Users\[UserName]\source\repos\AspNETWebAPIDersleri\AspNETWebAPIDersleri\bin\Release\net7.0\publish/runtimes ubuntuUserName@UbuntuIP:/var/www/html

Dosyaları kopyalarken izin hatası alıyorsanız:

sudo chmod 777 /var/www/html

Nginx Statüsünü kontrol etmek için:

service nginx status

Nginx config dosyasını düzenlemek için:

nano /etc/nginx/sites-available/default

Nginx config dosyası içindeki yapılandırmamız:

server {
    listen        80;
    location / {
        proxy_pass         http://127.0.0.1:5000;
        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;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

Nginx servisini test etmek ve yeniden başlatmak için:

sudo nginx -t
sudo nginx -s reload

Bunu bir servis haline getirip her açılışta kendiliğinden başlamasını sağlamak için:

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

Kestrel servis'in ayarları:

[Unit]
Description=ASP.NET Core Web App running on Ubuntu
[Service]
WorkingDirectory=/var/www/html
ExecStart=/usr/bin/dotnet /var/www/html/AspNETWebAPIDersleri.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-web-app
# This user should exist on the server and have ownership of the deployment directory
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target

Yapılandırmayı kontrol etmek için:

sudo systemctl status kestrel-app.service

Kestrel servisini aktif hale getirip başlatmak için:

sudo systemctl enable kestrel-app.service
sudo systemctl start kestrel-app.service

3 Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating

Çok işime yaradı. Teşekkürler:)

Like

Olya Yusupova
Feb 13, 2024

Harika bir içerik olmuş, ellerinize sağlık, Faydalı bilgilerle dolu. Teşekkür ederim.

Like

Ellerinize sağlık faydalı bir içerik olmuş...

Like
  • YouTube
  • Instagram
  • Facebook
  • Twitter
  • LinkedIn
bottom of page