Asp.NET Core Uygulamasını Ubuntu 18.04 Üzerinde Yayınlayalım

Erhan KARACA
Turuncu Internet Solutions
2 min readJun 22, 2020
Asp.NET Core

Aslında bu konuyla ilgili birçok makale internette mevcut ve fakat yine Türkçe içerik bulma konusunda oldukça problem yaşandığını gördük ve gelin bu iş nasıl yapılıyor anlatalım dedik.

Öncelikle Asp.NET Core uygulamaları bildiğiniz gibi platform bağımsız olarak çalışabilme özelliğine sahip. Gerek yatırım maaliyetlerini azaltmak gerekse işletim sistemi performansından ötürü biz bu deployment için Ubuntu’yu tercih ettik.

Önce Ubuntuyu Kuralım…

Bir cloud-provider veya kendi host makineniz üzerinde temiz bir Ubuntu kurulumu yaptığınızı varsayıyoruz. Aşağıdaki komutlarla işletim sistemini güncellemekle işe başlayalım.

sudo apt-get update

.NET Core’u sisteme yükleyelim…

Ubuntu’nun default güvenilir source-list’inde .net core sdk paketleri maalesef bulunmuyor dolayısıyla aşağıdaki komut satırı ile bunu sağlıyoruz.

wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

daha sonra aşağıdaki komutla yükleme işlemini gerçekleştirelim

sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-3.1

Sistemde web server olarak Apache kullanacağız. (Siz burada nginx i de tercih edebilirsiniz. Bildiğiniz gibi nginx de gayet performanslı bir web sunucusu)

sudo apt-get install apache2
sudo a2enmod proxy proxy_http proxy_html proxy_wstunnel
sudo a2enmod rewrite

Apache sisteme kurulduktan sonra bir config dosyası oluşturuyoruz. Burada yapmak istediğimiz Apache isteği aldıktan sonra bir tünel oluşturup ilgili porttaki ASP.Net Core uygulamasına aktarımı sağlamak.

sudo vi /etc/apache2/conf-enabled/netcore.conf

Daha sonra içerisine şunları yazalım

<VirtualHost *:80>
ServerName test.turuncuweb.net
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule /(.*) ws://127.0.0.1:5000/$1 [P]
ErrorLog /var/log/apache2/netcore-error.log
CustomLog /var/log/apache2/netcore-access.log common
</VirtualHost>

Dosyayı kaydedip çıktıktan sonra apache’yi tekrar başlatalım ve ayarları kontrol etmesini isteyelim.

sudo service apache2 restart
sudo apachectl configtest

Şimdi uygulama dizinimizi oluşturalım (Sizin dizininiz daha farklı olabilir tabiki)

mkdir /vhosts/turuncuweb/coretest

Oluşturduğunuz klasörün içerisine uygulamanızı atmanız gerekiyor :) Bunu yazdım ama siz zaten anlamıştınız sanırım.

Şimdi .net core uygulamamızı sürekli ayakta tutacak servisi oluşturalım.

sudo vi /etc/systemd/system/CoreTest.service

Oluşturduğunuz dosyanın içeriği aşağıdaki gibi olmalıdır.

[Unit]
Description=Spider .NET Web API App running on Ubuntu

[Service]
WorkingDirectory=/vhosts/turuncuweb/coretest
ExecStart=/usr/bin/dotnet /vhosts/turuncuweb/coretest/CoreTest.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=turuncu-core-test
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

Şimdi servisimizi enable edip çalıştıralım.

sudo systemctl enable CoreTest
sudo systemctl start CoreTest

Yukarıdaki “CoreTest” servis dosyasına verdiğiniz isimdir. Siz bu ismi kendinize göre değiştirebilirsiniz.

Tamamı bu kadar, artık IP adresinizi yazdığınızda karşınızda uygulamanız çalışıyor olmalı.

Umarım faydalı bir yazı olmuştur.

--

--