ASP.NET Core 3 ile geliştirilmiş web uygulamalarını Linux ortamında çalıştırabiliyoruz.
İlk olarak Ubuntu sunucumuzu dotnet core yüklemek gerekli.
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-get update
sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install -y aspnetcore-runtime-3.1
Artık sunucuda dotnet core çalışır halde. Web sunucu olarak nginx kullanacağız.
sudo apt-get install nginx
Nginx reverse-proxy olarak web uygulamasını yayınlacak. Bu nedenle Nginx üzerinde aşağıdaki ayarları yapmak gerekiyor.
sudo nano /etc/nginx/sites-available/default
server {
listen 80 default_server;
server_name _;
return 444;
}
server {
listen 80;
server_name siteadi.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;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo service nginx stop
sudo service nginx start
Artık 80 nolu porttan siteadi.com olarak gelen istekleri nginx 5000 nolu porta yönlendirmiş olacak.
Optimal nginx ayarları için aşağıdaki bilgiler kullanılabilir.
sudo nano /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 8000;
accept_mutex off;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay off;
keepalive_timeout 29;
client_body_timeout 10;
client_header_timeout 10;
send_timeout 10;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
server_tokens off;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "SAMEORIGIN";
gzip on;
gzip_comp_level 9;
gzip_http_version 1.0;
gzip_disable "MSIE [1-6]\."
gzip_vary on;
# gzip_proxied any;
gzip_types text/plain
text/css
application/json
application/javascript
text/xml
application/xml
application/xml+rss
text/javascript
application/manifest+json
application/x-web-app-manifest+json
text/cache-manifest
font/opentype
font/otf
font/truetype
application/font-woff
application/vnd.ms-fontobject
image/svg+xml;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Yayınlancak web uygulamasını /var/www klasörünü altında alt klasör açarak yayınlayabiliriz.
Uygulamanın sürekli çalışır halde kalmasını sağlamak için servis kurulumu gerekli.
sudo nano /etc/systemd/system/kestrel-app1.service
[Unit]
Description=dotnet core web app
[Service]
WorkingDirectory=/var/www/siteadi.com
ExecStart=/usr/bin/dotnet /var/www/siteadi.com/WebApp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
sudo systemctl enable kestrel-app1.service
sudo systemctl start kestrel-app1.service
Ftp ile bağlanıp dosya yükleme de sorun yaşıyorsanız kendinize yetki vererek sorunu çözebilirsiniz.
sudo chown kullaniciadi:root /var/www/siteadi.com/ -Rf