Hosting a .NET 8 web application on a CentOS 7 VPS

Hosting a .NET 8 web application on a CentOS 7 VPS requires setting up the necessary environment, installing dependencies, and configuring a web server. Below are the detailed steps to achieve this:

 

using System;

namespace HelloWorld
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Hello World!");
    }
  }
}
C#

Step 1: Update the System

Ensure your CentOS 7 system is up to date to avoid compatibility issues.

bash

CollapseWrapCopy

sudo yum update -y

Step 2: Install Development Tools

Install essential tools and libraries required for building and running .NET applications.

bash

CollapseWrapCopy

sudo yum groupinstall "Development Tools" -y sudo yum install gcc-c++ glibc-devel zlib-devel -y

Step 3: Install the .NET SDK

.NET 8 is not natively available in the default CentOS 7 repositories, so you need to add the Microsoft package repository.

  1. Add the Microsoft Repository:

    bash

    CollapseWrapCopy

    sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

  2. Install .NET 8 SDK:

    bash

    CollapseWrapCopy

    sudo yum install dotnet-sdk-8.0 -y

  3. Verify Installation: Check that the .NET SDK is installed correctly by running:

    bash

    CollapseWrapCopy

    dotnet --version

    This should display the installed .NET SDK version (e.g., 8.x.x).

Step 4: Prepare Your .NET 8 Web Application

  1. Publish Your Application: If your application is not already published, publish it on your development machine or directly on the VPS. Use the following command to create a self-contained deployment (recommended for VPS to avoid dependency issues):

    bash

    CollapseWrapCopy

    dotnet publish -c Release -r linux-x64 --self-contained true

    • -c Release: Builds the application in release mode.
    • -r linux-x64: Specifies the runtime for Linux 64-bit.
    • --self-contained true: Includes the .NET runtime in the output.

    The published files will be in the bin/Release/net8.0/linux-x64/publish/ directory of your project.

  2. Transfer Files to VPS: If you published the application on a different machine, use scp or an FTP client to transfer the contents of the publish folder to your VPS. For example:

    bash

    CollapseWrapCopy

    scp -r /path/to/publish user@your-vps-ip:/path/to/destination

Step 5: Install and Configure a Web Server

To serve your .NET 8 web application, you need a web server. The most common choices are Nginx (as a reverse proxy) or running the app directly with Kestrel (not recommended for production). Here, we'll use Nginx.

  1. Install Nginx:

    bash

    CollapseWrapCopy

    sudo yum install nginx -y

  2. Start and Enable Nginx:

    bash

    CollapseWrapCopy

    sudo systemctl start nginx sudo systemctl enable nginx

  3. Configure Nginx as a Reverse Proxy: Create a new Nginx configuration file for your application:

    bash

    CollapseWrapCopy

    sudo nano /etc/nginx/conf.d/yourapp.conf

    Add the following configuration (replace yourapp and your-vps-ip as needed):

    nginx

    CollapseWrapCopy

    server { listen 80; server_name your-vps-ip; location / { proxy_pass http://localhost:5000; # Default Kestrel port 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; } }

    Save and exit the file (Ctrl+O, Enter, Ctrl+X).

  4. Test Nginx Configuration: Ensure the configuration is valid:

    bash

    CollapseWrapCopy

    sudo nginx -t

  5. Restart Nginx: Apply the changes:

    bash

    CollapseWrapCopy

    sudo systemctl restart nginx

Up Next
    Ebook Download
    View all
    Pristine
    Read by 0 people
    Download Now!
    Learn
    View all
    GE HealthCare will never ask for payment to process documents, refer you to a third party to process