Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
110 views

Deploying Using Nginx PDF

The document provides step-by-step instructions for deploying a .NET Core 2.0 web application to a production environment on Ubuntu 16.04 using Nginx. It details setting up a new user and enabling sudo privileges. It also covers installing dependencies like .NET Core, Nginx, Git, and configuring the reverse proxy. The application is then published and a systemd service unit file is created to run it on startup behind the reverse proxy.

Uploaded by

Albeiro Rojas
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
110 views

Deploying Using Nginx PDF

The document provides step-by-step instructions for deploying a .NET Core 2.0 web application to a production environment on Ubuntu 16.04 using Nginx. It details setting up a new user and enabling sudo privileges. It also covers installing dependencies like .NET Core, Nginx, Git, and configuring the reverse proxy. The application is then published and a systemd service unit file is created to run it on startup behind the reverse proxy.

Uploaded by

Albeiro Rojas
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

5/20/2020 Deploying a .NET Core 2.0 Web Application to a Production Environment on Ubuntu 16.

04 using Nginx

Deploying a .NET Core 2.0 Web Application to a


Production Environment on Ubuntu 16.04 using
Nginx
John George Follow
Sep 13, 2017 · 3 min read

Written on behalf of NEPA Web Solutions, LLC (https://nepaweb.solutions)

. . .

The goal of this blog is to take you step-by-step through the deployment of a .NET Core
2.0 web application on a Ubuntu 16.04 Production environment.

I’m writing this because I discovered the hard way that .NET Core’s ‘dotnet run’
command is NOT meant to be production ready. My biggest headache was that my
website shut down when I exited my shell. Not even the ‘disown’ command would
dissociate the running service from the user.

I needed to find a way to start my .NET Core project and have it STAY running. Nginx
and Kestrel was where my research led me.

Assumptions
You already have a .Net Core 2.0 project that builds and runs properly.

I personally use Linode to spin up my Linux distros because of their $5/month instance.
Excellent for developers just playing around and learning new things.

All the steps (Just the “what” for now)

https://medium.com/@JohGeoCoder/deploying-a-net-core-2-0-web-application-to-a-production-environment-on-ubuntu-16-04-using-nginx-683b7e831e6 1/4
5/20/2020 Deploying a .NET Core 2.0 Web Application to a Production Environment on Ubuntu 16.04 using Nginx

Here we go. Spin up a brand new Ubuntu 16.04 instance and open up a terminal
window.

The [USERNAME], [PUBLISH_DIRECTORY], and [SERVICE_NAME] are meant to be


replaced by you.

1. Create new user


adduser [USERNAME]

2. Change the password again. This enables FTP access for the new
account
passwd [USERNAME]

3. Grant sudo privileges to the new user


usermod -aG sudo [USERNAME]

4. Switch to the new user


su - [USERNAME]

5. Disable the root account


sudo passwd -l root

6. Add the 'dotnet' repository link


sudo sh -c 'echo "deb [arch=amd64]
https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod
xenial main" > /etc/apt/sources.list.d/dotnetdev.list'

7. Update the apt-get feed


sudo apt-get update

8. Install .NET Core 2.0


sudo apt-get install dotnet-sdk-2.0.0

9. Install Git
sudo apt-get install git

10. Install NPM (if your project relies on NPM to build or publish)
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install npm

11. Give new user permissions to use NPM


sudo chown -R $USER:$(id -gn $USER) /home/[USERNAME]/.config

12. Install Nginx


sudo apt-get install nginx

13. Create the Nginx reverse proxy settings.


sudo nano /etc/nginx/sites-available/default
https://medium.com/@JohGeoCoder/deploying-a-net-core-2-0-web-application-to-a-production-environment-on-ubuntu-16-04-using-nginx-683b7e831e6 2/4
5/20/2020 Deploying a .NET Core 2.0 Web Application to a Production Environment on Ubuntu 16.04 using Nginx

Erase all existing contents and replace with the following. I'm
assuming that your project runs on port 5000 by default. Modify your
proxy pass as necessary.

server {
listen 80;
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;
}
}

Verify the syntax of the nginx settings with the following

sudo nginx -t

14. Place the raw unpublished project files in


"/home/[USERNAME]/website" directory. You can accomplish this with
either FTP or Git. You may omit the /bin, /obj, and /node_modules
folder to save copy time. They are re-created when the solution is
published.

15. Publish the project to [PUBLISH_DIRECTORY]


dotnet publish -c Release -o [PUBLISH_DIRECTORY]

16. Create the kestrel service definition file.


sudo nano /etc/systemd/system/[SERVICE_NAME].service

Enter the following into the new service definition file (case
sensitive).

[Unit]
Description=Example .NET Web API Application running on Ubuntu

[Service]
WorkingDirectory=[PUBLISH_DIRECTORY]
ExecStart=/usr/bin/dotnet [PUBLISH_DIRECTORY]/[PROJECTNAME].dll
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

17. Enable your new service to auto-start on system boot.


sudo systemctl enable [SERVICE_NAME].service
https://medium.com/@JohGeoCoder/deploying-a-net-core-2-0-web-application-to-a-production-environment-on-ubuntu-16-04-using-nginx-683b7e831e6 3/4
5/20/2020 Deploying a .NET Core 2.0 Web Application to a Production Environment on Ubuntu 16.04 using Nginx

18. Reboot the system.

19. Verify that your service is running without error.


sudo systemctl status [SERVICE_NAME].service

Port 80 is open to the public by default. And we declared in the Nginx reverse proxy that
your project is routed from port 5000 to port 80.

Congratulations! You should now be able to see your project running from your
server’s IP address!

Source: https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction?
tabs=aspnetcore2x

Nginx Aspnetcore Ubuntu Web Development Web Hosting

About Help Legal

Get the Medium app

https://medium.com/@JohGeoCoder/deploying-a-net-core-2-0-web-application-to-a-production-environment-on-ubuntu-16-04-using-nginx-683b7e831e6 4/4

You might also like