Selamlar. Bu yazıda Caddy Server ile Asp.NET Core Çalıştırma hakkında bilgiler vermeye çalışacağım. Son yazıda Spotify ve JavaScript yetkilendirmesi hakkında. yazmıştım. Kişisel bilgisayarımda Linux dağıtımı bulunuyor. Bu yazı Linux dağıtımı baz alınarak anlatılacak olsa da aynı yönergeleri uygulamanız mümkün. Hemen başlayalım:
Caddy Server ile Asp.NET Core Çalıştırma İşlemine Başlamadan Önce
Yazıya başlamadan önce dotnet kurulu olmalı ve bu yazı MySQL, MSSQL vb. data eklemeyi içermeyecektir. Proxy konularında kafası karışan arkadaşlar var ise nasıl çalıştığını bu sayede görecekler. Ayrıca Caddy basit bir dokümantasyona sahip olduğu için de kafa karışıklığı yaşanmayacak.
Dotnet Core Kurulumu
Öncelikle çoğu kişinin Ubuntu kullandığını varsayıyorum. Bu nedenden dolayı bu linkteki yönergeleri uygulayacağız. Linki verdim isterseniz kullandığınız dağıtımı seçip adımları tamamlayabilirsiniz. Microsoft’un imzasını kaydediyoruz.
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
Microsoft’un kaynak depolarını ekleyelim:
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-zesty-prod zesty main" > /etc/apt/sources.list.d/dotnetdev.list'
Yukarıdaki adım işletim sisteminize göre değişiklik gösterir. Son adım olarak sistemi güncelleyelim ve Dotnet Core kurulumunu yapalım:
sudo apt-get update sudo apt-get install dotnet-sdk-2.0.2
Kurulum için konsola dotnet komutunu vermeniz yeterlidir.
Caddy Kurulumu
Caddy için bu adrese gidelim. Ben http.cors ve http.expires modüllerini seçerek indireceğim. Hatta istersek cgi vs. seçebiliriz. Ama basit olsun diyorsak şunu kullanabiliriz:
curl https://getcaddy.com | bash -s personal http.cors,http.expires
Parola ekranından sonra caddy kurulumu tamamlandı. Zaten ufak tefek bir şey olmasından dolayı çok da uzun sürmüyor. 5-10 saniye.
Ardından caddy’nin binary dosyasını var altında www klasörünün içine kopyalayalım. Eğer yoksa www klasörünü oluşturun.
sudo cp /usr/local/bin/caddy /var/www/caddy
Asp.NET Core Projesi Oluşturma
Data işlemleri yapmayacağız. Bu nedenle şu anda sadece basit bir proje açalım. Şu komutları sırasıyla kullanalım:
sudo mkdir /var/www/mvcsitesi cd /var/www/mvcsitesi dotnet new mvc dotnet run
Artık projemiz 5000 portunda çalışır durumda. Buraya kadar bir şey anlatmadım çünkü yazının konusu Caddy üzerinden sistemin nasıl ayağa kalkacağı ile alakalı.
Servislerin Yazımı
Geldik bir diğer önemli konuya. Hem Caddy hem de Dotnet uygulaması için systemd üzerinde çalışacak iki adet servis yazacağız. Buradan aslında Caddy’nin proxy görevi gördüğünü de anlıyor olacağız.
MVC Projesinin Servisi:
sudo nano /etc/systemd/system/mvcsitesi.service
[Unit] Description=MVC Sitemiz [Service] WorkingDirectory=/var/www/mvcsitesi ExecStart=/usr/bin/dotnet /var/www/mvcsitesi/bin/Debug/netcoreapp2.0/mvcsitesi.dll Restart=no RestartSec=10 SyslogIdentifier=mvcsitesi User=root Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy=multi-user.target
Caddy İçin Servis Yazımı
sudo nano /etc/systemd/system/caddy.service
[Unit] Description=Caddy webserver Documentation=https://caddyserver.com/ After=network.target [Service] User=root WorkingDirectory=/var/www LimitNOFILE=4096 ExecStart=/var/www/caddy -log stdout -agree=true -email [email protected] -conf=/var/www/Caddyfile Restart=on-failure StartLimitInterval=600 [Install] WantedBy=multi-user.target
Ardından Caddy için izinleri verelim ki sonradan problem yaşamamış oluruz.
sudo setcap cap_net_bind_service=+ep /var/www/caddy
Ardından www klasörünün altına bir adet Caddyfile oluşturalım. Burada sitelerimizi tanıtacağız. Eğer canlıda çalışıyorsanız aşağıdaki gibi adresinizi belirtin. Yoksa localhost yazın.
mvcsitesi.com { proxy / localhost:8000 { transparent } gzip }
Buradaki transparent şunu sağlıyormuş:
header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} header_upstream X-Forwarded-Proto {scheme}
Şimdi az önce yazdığımız servisleri tek tek başlatalım.
systemctl restart mvcsitesi
Burada bize prompt ile parola sorabilir. Ardından caddy server’ı servis olarak başlatalım:
systemctl restart caddy
Sistemin çalışıp çalışmadığını anlamak için adres satırına http://localhost yazalım. Kontrolü böyle sağlamış oluruz. Avantajı şu 80 portu caddy üzerinden sunulurken esas oğlan 5000 portu ise gizlenmiş durumda oluyor. Bir diğer kontrol yöntemi ise şöyle oluyor:
Bunun aslında bir proxy olduğunu direkt olarak dotnet core projelerini çalıştıran bir yapısı olmadığını yazı sonuna ekleyeyim. Daha fazla bilgi almak için resmi sitedeki dokümantasyona göz atabilirsiniz:
Okuduğunuz için teşekkür ederim. Bir de son olarak bu yöntemle django, bottle ve flask projelerini ayağa kaldırdım. Hani olur da nasıl deploy ediyorduk ya diye düşünüyorsanız basit olarak işinizi görüyor. Belki onun için de bir yazı yazarım. Bu yazıda Caddy Server ile Asp.NET Core Çalıştırma hakkında bilgi sahibi olduk.