Bir WebAPI Projesini Ubuntuda Yayınlama
- Fatih Baytar
- 12 Şub 2024
- 1 dakikada okunur
Güncelleme tarihi: 13 Şub 2024

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
Çok işime yaradı. Teşekkürler:)
Harika bir içerik olmuş, ellerinize sağlık, Faydalı bilgilerle dolu. Teşekkür ederim.
Ellerinize sağlık faydalı bir içerik olmuş...