Ubuntu bir sunucuda birden fazla .NET Core tabanlı web sitesi barındırma rehberi
Üzeyir AYDIN
25 AraUbuntu bir sunucuda birden fazla .NET Core tabanlı web sitesi barındırmak, lisans maliyetlerini azaltmak için harika bir seçenektir. İşte bunu gerçekleştirmek için adım adım bir rehber:
1. Sunucu Hazırlığı
Ubuntu Sunucusunu Kurun:
- Uygun bir Ubuntu sürümünü (örneğin Ubuntu 20.04 LTS) yükleyin.
- Güncellemeleri yapın:
sudo apt update && sudo apt upgrade -y
Gerekli Paketleri Kurun:
curl
,wget
, veunzip
gibi temel araçları yükleyin:sudo apt install curl wget unzip -y
2. .NET SDK ve Runtime Yükleme
Microsoft Paket Deposu Ekleyin:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt update
.NET SDK ve Runtime'ı Yükleyin:
- Yalnızca çalıştırmak için Runtime yeterlidir:
sudo apt install -y aspnetcore-runtime-7.0
- Geliştirme de yapacaksanız SDK'yı yükleyin:
sudo apt install -y dotnet-sdk-7.0
- Yalnızca çalıştırmak için Runtime yeterlidir:
3. Uygulamaları Sunucuya Yükleme
Web Sitelerini Yayınlama:
- Projenizi
dotnet publish
komutuyla yayınlayın:dotnet publish -c Release -o ./publish
- Projenizi
Yayınlanan Dosyaları Sunucuya Kopyalayın:
scp
veya bir FTP istemcisi ile dosyaları sunucuya aktarın:scp -r ./publish user@your-server-ip:/var/www/site1
4. Reverse Proxy Yapılandırması (NGINX veya Apache)
NGINX'i Yükleyin:
sudo apt install nginx -y
NGINX Konfigürasyonu Oluşturun:
- Her site için ayrı bir konfigürasyon dosyası yapın:
sudo nano /etc/nginx/sites-available/site1.conf
- İçeriği aşağıdaki gibi yapın:
server { listen 80; server_name site1.com; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
- Her site için ayrı bir konfigürasyon dosyası yapın:
Konfigürasyonu Aktif Hale Getirin:
sudo ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/ sudo systemctl restart nginx
5. Sistem Servisi Olarak .NET Uygulamasını Çalıştırma
Systemd Servis Dosyası Oluşturun:
sudo nano /etc/systemd/system/site1.service
- Aşağıdaki içeriği ekleyin:
[Unit] Description=Site1 .NET App After=network.target [Service] WorkingDirectory=/var/www/site1 ExecStart=/usr/bin/dotnet /var/www/site1/yourapp.dll Restart=always RestartSec=10 SyslogIdentifier=site1 User=www-data Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy=multi-user.target
- Aşağıdaki içeriği ekleyin:
Servisi Etkinleştirin ve Başlatın:
sudo systemctl enable site1.service sudo systemctl start site1.service
6. Alan Adlarını Yönlendirme ve SSL Sertifikası
Alan Adlarını Sunucuya Yönlendirin:
- DNS ayarlarında sunucunun IP adresine yönlendirin.
SSL Sertifikası Alın (Let's Encrypt):
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d site1.com -d www.site1.com
- Otomatik yenileme için bir cron job oluşturun:
Ve şunu ekleyin:sudo crontab -e
0 3 * * * certbot renew --quiet
- Otomatik yenileme için bir cron job oluşturun:
7. Yedekleme ve İzleme
Yedekleme Yapın:
- Veritabanı ve uygulama dosyalarını düzenli olarak yedekleyin.
Log İzleme:
- Uygulama ve NGINX loglarını takip edin:
sudo journalctl -u site1.service sudo tail -f /var/log/nginx/access.log
- Uygulama ve NGINX loglarını takip edin:
Müşteri Girişi
Hesabınızı yönetmek için giriş yapın