Tutorials  /  Linux Basics

Install and Host .NET Core Apps on CentOS 7 with Nginx

Ccentron Redaktion · May 2025 ·7 min read ·Linux Basics, Tutorial

.NET Core is a reimagined, open-source development framework developed by Microsoft along with its continually expanding community. Designed for cross-platform use, .NET Core empowers developers to build fast, modern applications across a wide range of environments.

This tutorial will guide you through the process of setting up .NET Core on a CentOS 7 server and launching a fully operational .NET Core-based web application.

Requirements Before Installation

  • An up-to-date CentOS 7 x64 server — for this guide, the server IP is 203.0.113.1.
  • Access to a user account with sudo privileges.
  • The server should already be updated to the latest stable release using the EPEL YUM repository.
VM

Matching infrastructure at centron

No hardware needed to follow along: ccloud³ VMs with full root access start at €3.12 per month, billed by the hour and ready in seconds. Rent a cloud server →

Integrating the .NET Product Repository

.NET Core offers prebuilt binary packages for different operating systems. For CentOS 7, you can set up the Microsoft-signed YUM repository by running the commands below with sudo access:

Console
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

Install the Latest .NET SDK with YUM

After configuring the .NET YUM repository, you can proceed to install the latest version of the .NET SDK. This includes the .NET Core runtime along with essential dependencies. Use the following commands on your system:

Console
sudo yum update -y
sudo yum install libunwind libicu -y
sudo yum install dotnet-sdk-2.1.4 -y

To ensure everything was installed successfully, you can build and launch a simple "Hello World" app using the .NET Core CLI:

Console
cd
dotnet new console -o helloworldApp
cd helloworldApp
dotnet run

The command dotnet new console -o helloworldApp will generate a folder named helloworldApp in your home directory and use the console template to create all required project files inside it.

Running dotnet run will compile and execute the app, and you should see the output Hello World! printed to your terminal.

Build a .NET Core Razor Web Application

You can now create and launch a Razor-based .NET Core web application. Razor Pages are a part of the ASP.NET Core MVC ecosystem, specially designed for scenarios that are page-focused:

Console
cd
dotnet new razor -o myfirstwebapp
cd myfirstwebapp
dotnet run

Executing the dotnet run command will initiate a .NET Core web server, which listens by default on http://localhost:5000.

Even if you're using a command-line-only server, you can verify the app is running by opening another terminal window and entering:

Console
curl http://localhost:5000

This command will display the HTML source of your web app’s default page. To terminate the app, simply press Ctrl + C.

To further develop your web application, you can modify files inside the generated project directory. For more guidance, consult the official .NET documentation.

Once your app is ready, use the commands below to publish it:

Console
cd ~/myfirstwebapp
dotnet publish

The compiled and published web application will be located at:

~/myfirstwebapp/bin/Debug/netcoreapp2.0

(Optional) Using Supervisor to Keep the .NET Core Web App Running

Application processes can sometimes crash. To ensure continuous availability of your .NET Core web application, it's wise to use a process management utility like Supervisor. It helps by automatically restarting your application if it goes down unexpectedly.

To install Supervisor on CentOS 7, run the following command:

Console
sudo yum install supervisor -y

Next, create a dedicated Supervisor configuration file for your application:

Console
cd /etc/supervisord.d
sudo vi myfirstwebapp.conf

Inside the configuration file, insert the following content:

Code
[program:myfirstwebapp]
command=dotnet myfirstwebapp.dll
directory=/home/sudouser/myfirstwebapp/bin/Debug/netcoreapp2.0/
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=1
stderr_logfile=/var/log/myfirstwebapp.err.log
stdout_logfile=/var/log/myfirstwebapp.out.log

Save and exit the file by entering:

Code
:wq!

Now, update the main Supervisor configuration file to ensure it includes files with the .conf extension:

Console
sudo cp /etc/supervisord.conf /etc/supervisord.conf.bak
sudo vi /etc/supervisord.conf

Scroll to the end of the file and locate:

files = supervisord.d/*.ini

Replace it with:

files = supervisord.d/*.conf

Save and close the file:

Code
:wq!

Enable and start the Supervisor service:

Console
sudo systemctl start supervisord.service
sudo systemctl enable supervisord.service

Load the updated Supervisor configuration settings:

Console
sudo supervisorctl reread
sudo supervisorctl update

To view the current status of your application, execute the following:

Console
sudo supervisorctl status

The output will resemble:

myfirstwebapp RUNNING pid 3925, uptime 0:08:45

To simulate a crash, you can manually terminate the process using its PID:

Console
sudo kill -s 9 3925

Wait briefly and then recheck the application status:

Console
sudo supervisorctl status

The new output will confirm the app has been restarted automatically:

myfirstwebapp RUNNING pid 3925, uptime 0:00:06

(Optional) Configure Nginx as a Reverse Proxy

To allow easier access for users, you can set up Nginx to function as a reverse proxy that forwards incoming traffic to your .NET Core application running on port 5000.

Start by installing Nginx using the following command:

Console
sudo yum install nginx -y

Next, edit the default Nginx configuration file:

Console
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo vi /etc/nginx/nginx.conf

Within the http {} block, find the existing location / {} section. Insert the following six lines between the curly braces:

Code
location / {
  proxy_pass http://127.0.0.1:5000;
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
}

Save and exit the file:

Code
:wq!

Now, start the Nginx service and ensure it launches on system boot:

Console
sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Configure Firewall Access

To allow external traffic on ports 80 (HTTP) and 443 (HTTPS), apply the following firewall rules:

Console
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
sudo firewall-cmd --reload

With all components now properly configured, your .NET Core application is accessible via http://203.0.113.1.

Conclusion

By following the steps outlined in this guide, you’ve successfully installed and configured a .NET Core environment on CentOS 7. From setting up the official Microsoft repository, installing the .NET SDK, and deploying a Razor-based web application, to configuring process monitoring with Supervisor and integrating Nginx as a reverse proxy — each component contributes to a stable and production-ready deployment workflow.

This setup not only ensures reliable application performance but also provides flexibility and maintainability for future development and scaling. With your .NET Core application now accessible via a public-facing URL, you are well-equipped to build and deliver robust web solutions on a Linux-based server.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Linux Basics
Teilen
Noch offene Fragen?

Unser Team hilft Ihnen bei Ihrem konkreten Setup weiter – von Menschen, die die Plattform selbst betreiben.

War dieses Tutorial hilfreich?

Ihre Antwort wird anonym gespeichert und hilft uns, die Tutorials zu verbessern.

Kommentare

Noch keine Kommentare – stellen Sie die erste Frage zu diesem Tutorial.

Zum Kommentieren anmelden

Kommentare stehen centron-Kunden offen. Melden Sie sich in Ihrem Konto an, um eine Frage zu diesem Tutorial zu stellen.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren