Aracılığıyla paylaş


Bölüm 2.1 - Linux'ta ASP.NET Core uygulamaları oluşturma ve yapılandırma

Şunlar için geçerlidir: .NET 8 ve üzeri

Bu makalede Linux'ta ASP.NET Core uygulamaları oluşturma ve yapılandırma işlemleri anlatılmaktadır.

Önkoşullar

Bu bölümdeki alıştırmaları takip etmek için yüklü bir .NET SDK'nız olmalıdır. SDK'yı yüklemek için, gerektiğinde Bölüm 1'deki yükleme yönergelerine bakın.

Bu bölümün hedefi

Linux'ta .NET komut satırı arabirimini (CLI) kullanarak ASP.NET Core web uygulaması oluşturmayı ve uygulamayı /var dizininde yayımlamayı öğrenin. Bu kavramları öğrenirken dosya ve klasörlerle çalışma ve ayrıcalıklı kullanıcı olarak komut çalıştırma gibi bazı temel görevleri uygulayacaksınız. Ayrıca Linux'ta vi metin düzenleyicisini kullanarak dosyaları düzenlemeyi de öğreneceksiniz.

.NET CLI

Bu .NET CLI belgelerine göre.NET CLI, .NET uygulamalarını geliştirmeye, oluşturmaya, çalıştırmaya ve yayımlamaya yönelik platformlar arası bir araç zinciridir. .NET CLI, .NET SDK ile birlikte yüklenir.

Bu eğitimler komutunu sık sık kullanır dotnet . Bu komut güçlüdür ve iki ana işlevi vardır:

  • .NET projelerinde çalışmaya yönelik komutlar sağlar. Örneğin, dotnet build bir proje oluşturur. Her komut kendi seçeneklerini ve bağımsız değişkenlerini tanımlar. Tüm komutlar, komutun --help nasıl kullanılacağı hakkında kısa açıklamalar yazdırma seçeneğini destekler.
  • .NET uygulamaları çalıştırır.

Komutunu kullanarak dotnet new Linux'ta ilk ASP.NET Core projenizi oluşturacaksınız. Bu komut, projenin türünü bağımsız değişken olarak alır. Proje türleri bu belgede açıklanmıştır. Ayrıca parametresiz çalıştırarak dotnet new türlerin listesini görüntüleyebilirsiniz. Web ile ilgili proje türleri aşağıdaki ekran görüntüsünde sarı renkle vurgulanır.

dotnet new komutunun ekran görüntüsü.

SDK kullanarak ASP.NET Core web uygulaması oluşturma

Aşağıdaki komutu kullanarak ilk web uygulamanızı oluşturmak için .NET CLI'yi kullanacaksınız:

dotnet new <template_type> -n <project_name> -o <output_directory>

Bu kurallar kullandığınızda dotnet newgeçerlidir:

  • komutu, çıkış dizininde proje dosyalarını oluşturur. Segmenti -o <output_directory> atlarsanız, proje geçerli dizinde oluşturulur. Anahtarı istediğiniz zaman kullanabilirsiniz -o .
  • Klasör yoksa, komut klasörü oluşturur.
  • Segmenti -n <project_name> atlarsanız, proje adı dizin adıyla aynı olur.

Dizin ve projenin kendisi için yaratıcı adlar bulabilirsiniz. Ancak Linux'un büyük/küçük harfe duyarlı olduğunu unutmayın. Bu alıştırma için proje adı olarak daha muhafazakar AspNetCoreDemo kullanın ve dizinde firstwebapp oluşturun.

Projeyi oluşturmak için aşağıdaki komutu çalıştırın:

dotnet new webapp -n AspNetCoreDemo -o firstwebapp 

Dizin ve proje adlarını görmek için çıktıyı inceleyin. Aşağıdaki ekran görüntüsünde çıkış dizininin içeriği de listelenir. Windows'ta daha önce bir ASP.NET Core web uygulaması oluşturduysanız dizin yapısı hakkında bilgi sahibi olmanız gerekir.

İlk web uygulaması için dotnet new komutunun ekran görüntüsü.

İlk uygulamanızı oluşturdunuz. Bir sonraki görev bunu çalıştırmak olacaktır. Dizinini proje klasörüne değiştirin ve komutunu çalıştırın dotnet run.

dotnet run komutunun ekran görüntüsü.

Not

Bu ekran görüntüsünde aşağıdaki öğeler:

  • Web uygulamanız HTTPS istekleri için 5001 numaralı bağlantı noktasını dinler ve HTTP istekleri için 5000 numaralı bağlantı noktasını dinler.
  • İçerik kökü giriş dizininin altındadır.

Uygulamayı giriş dizininiz altında çalıştırmamanızı öneririz. Daha sonra başka bir dizinde yayımlayacaksınız, ancak yayımlamadan önce test etmelisiniz. Uygulamayı durdurmak için Ctrl+C tuşlarına basabilirsiniz. Ancak şimdilik çalışmaya devam edin ve Linux sanal makinenize bağlanmak için tercih ettiğiniz yöntemi kullanarak yeni bir terminal oturumu açın. Bu örnekte PowerShell'i yeniden kullanacaksınız.

Web sitesini başka bir terminalden test edin

Yeni terminal oturumunuzda uygulamanızın 5000 ve 5001 bağlantı noktalarını dinlediğini doğrulayın. Linux, Windows ile aynı netstat komuta sahiptir. Anahtarla -tlp birlikte çalıştırınnetstat. Bu makaledeki netstatanahtarlar hakkında bilgi edinebilir veya veya info netstatkomutunu çalıştırarak man netstat yardım dosyasına bakabilirsiniz.

İkinci terminal oturumundan netstat -tlp komutun çıktısı aşağıdadır. AspNetCoreDemo işleminin PID 781 kullanılarak çalıştığını ve hem IPv4 hem de IPv6 için 5000 ve 5001 bağlantı noktalarını dinlediğini gösterir.

info netstat komutunun ekran görüntüsü.

Web sitenizi test etmek için curl ve wget kullanabilirsiniz. Her iki komut da hedef tarafa bir HTTP çağrısı yapar, ancak farklı davranır:

  • Curl yalnızca bir komut satırı tarayıcı aracıdır. Verilen hedefe bir HTTP isteğinde bulunur ve yalnızca HTTP yanıtının düz çıkışını gösterir. Örneğin, bir web uygulaması için HTML kaynak işaretlemesini gösterir.
  • Wget bir HTTP downloader'dır. Bir HTTP isteğinde bulunur ve verilen kaynağı indirir. Örneğin, wget http://server/file.zip file.zip indirip http://server geçerli dizine kaydeder.

Komut wget ayrıca yeniden yönlendirme ve alabileceğiniz hata iletileri gibi bazı diğer ayrıntıları da gösterir. Bu nedenle, ihtiyacınız olduğunda http izleme aracının ilkel bir sürümü olarak kullanabilirsiniz.

ile wgetarasındaki curl fark hakkında daha fazla bilgi için StackExchange web sayfasına gidin.

Bu eğitim serisinde daha önce wget .NET'i yüklemeden önce Microsoft sunucularından .deb paket yöneticisi dosyasını indirmiştiniz.

komutunu çalıştırırsanız curl http://localhosthiçbir şey olmaz. Bu büyük olasılıkla HTTP yanıtı olmadığı anlamına gelir. Ardından, siteye erişmeye çalıştığınızda daha fazla bilgi görüntülenip görüntülenmeyeceğini denetlemek için komutunu çalıştırabilirsiniz wget http://localhost .

curl localhost komutunun ekran görüntüsü.

Şu anda gerçekleşen şey şudur:

  • adresine http://localhost:5000http isteğinde bulunur ve başarıyla bağlanırsınız. Bu, uygulamanın 5000 numaralı bağlantı noktasındaki bağlantıları kabul ettiğini gösterir.
  • Uygulamadan güvenli bir HTTPS konumuna işaret eden bir HTTP 307 Geçici Yeniden Yönlendirme yanıtı alırsınız: https://localhost:5001.
  • Wget, bu yeniden yönlendirmeyi takip edecek ve öğesine yeni bir istekte bulunabilecek https://localhost:5001kadar akıllıdır.
  • Yeniden başarıyla bağlanırsınız. Ancak SSL wget sertifikasına güvenmez. Bu nedenle, bağlantı başarısız olur.

komutu, wget güvenli olmayan bir şekilde bağlanmak için anahtarı kullanarak --no-check-certificate bu soruna geçici bir çözüm kullanmanızı önerir. Ancak bu yaklaşım, bu eğitim için kapsamı dışında olan SSL sertifika ayarlarını içerir. Bunun yerine, http isteklerini HTTPS'ye yönlendirmemesi için ASP.NET Core uygulamanızı yapılandırabilirsiniz. ASP.NET Core uygulama geliştirme (veya yalnızca yapılandırma) hakkında bilginiz varsa, yeniden yönlendirme yapılandırmasını kaldırmak için Startup.cs dosyasını düzenleyin.

Vi kullanarak dosyaları düzenleme

Linux dağıtımları için vi metin düzenleyicisini kullanarak her türlü düz metin dosyasını düzenleyebilirsiniz. Bu eğitimde uygulamanızı yeniden yapılandırmak için kullanacaksınız.

Düzenlemeden önce uygulamanızı kapatmanız gerekir. İlk olarak açık terminal oturumunu kapatın. Ardından, uygulamayı kapatmak için Ctrl+C tuşlarına basın.

Startup.cs dosyasını düzenlemek için aşağıdaki komutu çalıştırın:

vi ~/firstwebapp/Startup.cs

Not

Bu komut vi düzenleyicisini başlatır ve dosyayı yükler. ~ (tilde) kısayolu, projenizi oluşturduğunuz giriş dizininize başvurur. Yani, komut /home/YourName/<firstwebapp/Startup.cs öğesini işaret eder>.

Düzenleme modunu etkinleştirmek için I (Ekle) tuşuna basın. Şimdi komut satırının en altında -- INSERT -- ifadesini görmeniz gerekir. Dosya içinde gezinmek için ok tuşlarını kullanın. Aşağıdaki ekran görüntüsünde app.UseHsTs()gösterildiği gibi, satırların başına ekleyerek // hem ; app.UseHttpsRedirection()hem de satırlara açıklama ekleyin.

Koddaki açıklamanın ekran görüntüsü.

Düzenleme modundan çıkmak için esc tuşuna basın, :wq! yazın ve enter tuşuna basın. İki nokta üst üste karakterinin (:) bir komut girdiğiniz, yazmaq, w çıkmak ve ! yazmaya zorlamak anlamına geldiğini unutmayın.

Koddaki wq metninin ekran görüntüsü.

Enter tuşuna bastıktan sonra değişikliklerin kaydedilmesi gerekir. komutunu çalıştırarak cat ~/firstwebapp/Startup.csdeğişiklikleri doğrulayabilirsiniz. Bu komut Startup.cs dosyasının içeriğini görüntüler.

Uygulamanızı yeniden başlatın. Bunu yapmak için geçerli dizini dizin olarak ~/firstwebapp değiştirin ve yeniden çalıştırın dotnet run . Ardından sunucunuzda başka bir terminal oturumu açın ve komutu yeniden çalıştırın curl http://localhost:5000 . Bu kez, komut giriş sayfasının HTML içeriğini döndürmelidir.

5000 bağlantı noktası komutunda curl localhost'un ekran görüntüsü.

Şimdi Linux üzerinde ilk ASP.NET Core Web App'inizi başarıyla çalıştırmış oldunuz.

Uygulamayı /var dizinine dağıtma

Bu alıştırmanın birincil hedefi, web uygulamanızı ters ara sunucu arkasında barındırmaktır; böylece bağlanan istemciler yalnızca bağlantı noktası numarası olmayan ana bilgisayar adını kullanarak uygulamaya başka bir bilgisayardan erişebilir. Gerçek dünya senaryolarında gerçekleşmesini beklediğiniz şey budur. Bu görevi tamamlamak için daha sonra Nginx ile çalışacaksınız. Ancak bunu gerçekleştirmeden önce uygulamanızı /var dizininde yayımlayın. Bunun nedeni, uygulamayı kullanıcının giriş dizininde çalıştırmamanızı öneririz.

/var dizininin Apache ve Nginx gibi çeşitli uygulamalar tarafından içerik ve günlük dosyalarını depolamak için kullanıldığını unutmayın. Yeni oluşturulan web uygulamasını /var'a yayımlayarak bu uygulamayı burada takip edersiniz.

Proje klasörüne geçin ve ardından bir yayımlama klasörü oluşturmak için komutunu çalıştırın dotnet publish . Bu klasörü /var dizinine kopyalayın.

dotnet publish komutunun ekran görüntüsü.

Ekran görüntüsü, komutun dotnet publish ~/firstwebapp/bin/Debug/net5.0/publish/ klasöründe yayımlama dosyaları oluşturduğunu gösterir. Ardından, tüm dosyaları /var/firstwebapp/ klasörüne kopyalamak için aşağıdaki komut kullanıldı:

sudo cp -a ~/firstwebapp/bin/Debug/net5.0/publish/ /var/firstwebapp/

Not

Kopyalama komutundan önce öğesinin kullanımına sudo dikkat edin. Standart kullanıcıların /var dizinine yazma izni olmadığından bunu kullanırsınız. Bu nedenle, komutunu süper kullanıcı olarak çalıştırmanız gerekir.

Uygulamanızı yayımlanmış bir klasörden çalıştırmak için aşağıdaki komutu çalıştırın:

dotnet /var/firstwebapp/AspNetCoreDemo.dll

İsterseniz, aynı curl ve wget komutlarını kullanarak bu testleri çalıştırabilirsiniz. Bunun nedeni uygulamanın HTTP istekleri için 5000 numaralı bağlantı noktasını dinlemeye devam edecek olmasıdır.

İşlemin ömrü ve sonraki adımlar

Uygulama sürekli çalışma süresi gerektiriyorsa, .NET uygulamalarını etkileşimli bir kullanıcı oturumunda çalıştırmak aşağıdaki nedenlerle iyi bir uygulama değildir:

  • Kullanıcılar, örneğin PuTTY veya PowerShell SSH istemcisini kapatarak oturumlarını sonlandıracak veya oturumdan çıksaydı, uygulama kapatılırdı.
  • İşlem bir nedenle sonlandırılırsa (örneğin, işlenmeyen bir özel durum nedeniyle işlem kilitleniyorsa), otomatik olarak başlatılmaz ve el ile yeniden başlatılması gerekir.
  • Sunucu yeniden başlatılırsa uygulama otomatik olarak başlatılmaz.

Sonraki adımlar

Bölüm 2.2 - Nginx'i yükleme ve ters ara sunucu olarak yapılandırma

Web uygulamasının otomatik olarak başlatıldığından emin olun. Nginx'i, 80 numaralı bağlantı noktasına yapılan HTTP isteklerini dotnet uygulamasına yönlendirmek için ters ara sunucu olarak yükleyin ve yapılandırın (böylece istemciler bağlantı noktası numarasını sağlamak zorunda kalmadan bağlanabilir).

Üçüncü taraf bilgileri hakkında yasal uyarı

Bu makalede adı geçen üçüncü taraf ürünleri Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği ile ilgili örtük veya başka türlü hiçbir garanti vermez.