Files
my-docs/Web Servers & Reverse Proxies/nginx/dotnet.md
2024-09-08 23:01:57 +03:30

2.8 KiB
Executable File

Deploying .NET on Linux

This tutorial has been tested only on .NET 7 and Ubuntu 22.04.

Getting the Output

First, let's install .NET:

sudo apt install dotnet-sdk-7.0

Note: You can create a .NET project using dotnet new mvc command.

Then, we need to publish our project:

dotnet publish

The location of the output file will be displayed after the command finishes. Typically, the project output will be placed in: bin/Debug/net7.0/publish

Installing Nginx

Nginx is a high-performance web server with low resource usage, distributed under the terms of the BSD license. It runs on Unix-like operating systems and is widely used, currently powering 12.07% of the internet's domains.

To install Nginx via apt, use the following command:

sudo apt install nginx

Then, disable the firewall with:

sudo ufw disable

If you encounter an error with this command, it means you don't have a firewall. In that case, skip this part.

If the installation is successful, you should see "Welcome to Nginx" when typing localhost in your browser.

Configuring Nginx

Create a directory for your site:

sudo mkdir /var/www/app1 

Copy the contents of the publish directory to the newly created directory:

sudo cp yourprojectFolder/bin/Debug/net7.0/publish /var/www/app1

Then, navigate to the Nginx configuration:

sudo vim /etc/nginx/sites-available/default

Replace the contents of the file with the following:

server {
    listen        80;
    server_name   example.com *.example.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;
    }
}

Note: Replace example.com with your site address.

Check the configuration file syntax:

sudo nginx -t

If no errors are reported, reload Nginx to apply the changes:

sudo nginx -s reload

Adding the Site as a Service

Create a service file for your site:

sudo vim /etc/systemd/system/app1.service

Copy the following code into the file:

[Unit] 
Description=dotnet webapp
[Service] 
WorkingDirectory=/var/www/app1
ExecStart=/usr/bin/dotnet /var/www/app/projectname.dll 
Restart=always
RestartSec=10
SyslogIdentifier=projectname
Environment=ASPNETCORE_ENVIRONMENT=Production
    
[Install]
WantedBy=multi-user.target

Note: Replace projectname with your project's name.

Enable and start the site, and check its status:

sudo systemctl enable app1.service
sudo systemctl start app1.service
sudo systemctl status app1.service