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

Erhan KARACA
Jun 22 · 2 min read
Image for post
Image for post
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.

Turuncu Internet Solutions

Kazanma isteği, başarılı olma isteği ve tam potansiyelimize…

Erhan KARACA

Written by

Co-Founder at Turuncu Internet Solutions

Turuncu Internet Solutions

Kazanma isteği, başarılı olma isteği ve tam potansiyelimize ulaşma isteği, bir kelimeye anlatılabilir “Mükemmellik”. Uygulama geliştirmenin her aşamasında, planlamadan teslimata kadar mükemmellik işimizin sırrıdır.

Erhan KARACA

Written by

Co-Founder at Turuncu Internet Solutions

Turuncu Internet Solutions

Kazanma isteği, başarılı olma isteği ve tam potansiyelimize ulaşma isteği, bir kelimeye anlatılabilir “Mükemmellik”. Uygulama geliştirmenin her aşamasında, planlamadan teslimata kadar mükemmellik işimizin sırrıdır.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store