Steps;
Connect to server
ssh root@<Your Server IP>
.Net sdk install on server,
wget https://packages.microsoft.com/config/ubuntu/18.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 dotnet-sdk-3.1
Let’s create the path;
sudo mkdir /var/www/
sudo mkdir /var/www/
sudo chown -R dries:www-data /var/www/
Let’s clone our project here
git clone <your repo git address.git>
Build and publish project
dotnet build
dotnet publish
Install nginx
sudo nano /etc/apt/sources.list
deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx
sudo apt-get update
sudo apt-get install nginx
sudo service nginx start
Welcome Nginx message when enter url with Your server ip
Add an SSL certificate with Certbot
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-nginx
sudo certbot --nginx
Forward requests to our app
sudo nano /etc/nginx/sites-available/sites.com
server {
listen 80;
server_name ;
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;
}
}
linked,
sudo ln -sf /etc/nginx/sites-available/sites.com /etc/nginx/sites-enabled/
sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
http{
...
include /etc/nginx/sites-available/sites.com;
}
sudo service nginx restart
Create service
sudo nano /etc/systemd/system/dotnet-project-name.service
[Unit]
Description=My application service
[Service]
WorkingDirectory=/var/www/
ExecStart=/usr/bin/dotnet /var/www//.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
In my case,
[Unit]
Description=My application service
[Service]
WorkingDirectory=/var/www/oguzhanabali-dev-demo-web
ExecStart=/usr/bin/dotnet /var/www/driesdeboosere-dev-demo-web/Oguzhanabali.Dev.Demo.Web.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=oguzhanabali-dev-demo-web
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
Permission access to folders,
sudo chown -R root:root /var/www/
sudo setfacl -R -d -m u:root:rwx,g:root:rwx,o::r /var/www/
sudo service oguzhanabali-dev-demo-web start
sudo systemctl | grep oguzhanabali-dev-demo-web
That’s it! Now your web server will keep running your ASP.NET Core app, even if you exit the server.