Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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.
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 new
geç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 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
.
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 netstat
anahtarlar hakkında bilgi edinebilir veya veya info netstat
komutunu ç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.
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, wgethttp://server/file.zip
file.zip indiriphttp://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 wget
arası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://localhost
hiç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
.
Şu anda gerçekleşen şey şudur:
- adresine
http://localhost:5000
http 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:5001
kadar 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.
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.
Enter tuşuna bastıktan sonra değişikliklerin kaydedilmesi gerekir. komutunu çalıştırarak cat ~/firstwebapp/Startup.cs
değ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.
Ş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.
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.