Før du fortsætter!
Du skal nu bruge et ASP.NET projekt som ligger på Ubuntu serveren i en mappe i /var/www før du kan fortsætte. Publish dit projekt til en folder, derefter zip det og upload det med vores panel.
Husk at sætte dine filers rettigheder med "sudo chmod -R 775 /var/www/<dit_projektnavn>"
Hvis du har ændret i din service fil skal du bruge "sudo systemctl daemon-reload" for at få ændringerne til at virke.
Der skal nu oprettes en service file som står for at køre dit ASP.NET projekt.
Først bruger vi nano til at oprette filen
sudo nano /etc/systemd/system/helloapp.service
så skriver vi vores service file sådan her
[Unit]
Description=Running ASP.NET Core on Ubuntu 20.04 Webserver
[Service]
# These 2 lines need to be changed to match your application
WorkingDirectory=/var/www/helloapp/
ExecStart=/usr/bin/dotnet /var/www/helloapp/Helloapp.dll
#
Restart=always
# Restart service after 10 seconds if the dotnet service crashes
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
# Put the user this is running under here
User=www-data
#
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
I den fil skal du sørge for at udskifte helloapp med hvor din app ligger. Husk også at skifte User til din webuser i linux.
Vi bruger nu
sudo nano /etc/apache2/sites-available/default-ssl.conf
til at tilføje følgende under vores virtual host. Du skal ændre der hvor der står helloapp til hvad du vil have din api hedder. Med eksemplet bliver det https://hjemmeside/helloapp/
Alias "/" "/var/www/helloapp/wwwroot/"
ProxyPreserveHost On
# These 2 lines need to be changed to point to the port your app is using
ProxyPass "/" "http://127.0.0.1:5000/"
ProxyPassReverse "/" "http://127.0.0.1:5000/"
Start af service og aktivering af Apache site
Nu kan vi starte vores service til programmet med kommandoen:
sudo systemctl start helloapp.service
Herefter går vi vores Apache konfiguration aktiv med kommandoen:
sudo a2ensite default-ssl.conf
Vi disabler også default site så den ikke er i konflikt med vores HTTPS site
sudo a2dissite 000-default.conf
og til sidst restarter apache
sudo systemctl restart apache2.service
Hvis du har lavet filerne rigtigt, så har du nu dit ASP.NET projekt til at køre på serveren.
Tilføj UsePathBase i Program.cs, med den unikke sti du vil bruge til dit projekt. Sørg for at du har det som noget af det første i dit projekt.
Her er et eksempel med en dotnet 8 Core Web App (Razor Pages)
app.UsePathBase("/site2");
Så skal du ændre i vores default-ssl.conf på din server.
Her skal du sørge for at Alias har stien til dine css, js, osv. Den er typisk i wwwroot som bliver vist i eksemplet her.
ProxyPreserveHost On
Alias "/sample" "/var/www/sample_site/wwwroot/"
ProxyPass "/sample" "http://127.0.0.1:5000/sample"
ProxyPassReverse "/sample" "http://127.0.0.1:5000/sample"
Alias "/site2" "/var/www/site2/wwwroot"
ProxyPass "/site2" "http://127.0.0.1:5001/site2"
ProxyPassReverse "/site2" "http://127.0.0.1:5001/site2"
i service filen skal du tilføje enviroment variable som fortæller at vores service skal køre på en anden port. Dette gør vi fordi ellers prøver flere aspnet programmer at bruge default port 5000 hvilket fejler.
[Unit]
Description=Running ASP.NET Core on Ubuntu 20.04 Webserver
[Service]
# These 2 lines need to be changed to match your application
WorkingDirectory=/var/www/site2/
ExecStart=/usr/bin/dotnet /var/www/site2/Test_site_2.dll
#
Restart=always
# Restart service after 10 seconds if the dotnet service crashes
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=site2
# Put the user this is running under here
User=www-data
#
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
Environment=ASPNETCORE_URLS=http://localhost:5001
[Install]
WantedBy=multi-user.target
Start af service og aktivering af Apache site
Nu kan vi starte vores service til programmet med kommandoen:
sudo systemctl start site2.service
Herefter går vi vores Apache konfiguration aktiv med kommandoen:
sudo a2ensite default-ssl.conf
Vi disabler også default site så den ikke er i konflikt med vores HTTPS site
sudo a2dissite 000-default.conf
og til sidst restarter apache
sudo systemctl restart apache2.service
Så for hver seperat hjemmeside/projekt du vil tilføje skal du gøre disse 3 ting
Test at din custom path virker lokalt så du kan udelukke det.
Der skal nu oprettes en service file som står for at køre dit ASP.NET projekt.
Først bruger vi nano til at oprette filen
sudo nano /etc/systemd/system/helloapp.service
så skriver vi vores service file sådan her
[Unit]
Description=Running ASP.NET Core on Ubuntu 20.04 Webserver
[Service]
# These 2 lines need to be changed to match your application
WorkingDirectory=/var/www/helloapp/
ExecStart=/usr/bin/dotnet /var/www/helloapp/Helloapp.dll
#
Restart=always
# Restart service after 10 seconds if the dotnet service crashes
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
# Put the user this is running under here
User=www-data
#
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
I den fil skal du sørge for at udskifte helloapp med hvor din app ligger. Husk også at skifte User til din webuser i linux.
Hvis du skal sætte flere ASP.NET projekter op på samme server skal du lave en service fil til hver af dem. Den service fil vi lavede før, bruger default port 5000 til at køre. Vi kan tilføje følgende ekstra linje til at specificere hvilken port der skal bruges.
Environment=ASPNETCORE_URLS=http://localhost:5001
Vi bruger nu
sudo nano /etc/apache2/sites-available/default-ssl.conf
til at tilføje følgende under vores virtual host. Du skal ændre der hvor der står helloapp til hvad du vil have din api hedder. Med eksemplet bliver det https://hjemmeside/helloapp/
RewriteRule "^/helloapp/(.*)" "/$1"
ProxyPreserveHost On
# These 2 lines need to be changed to point to the port your app is using
ProxyPass "/helloapp/" "http://127.0.0.1:5000/"
ProxyPassReverse "/helloapp/" "http://127.0.0.1:5000/"
Start af service og aktivering af Apache site
Nu kan vi starte vores service til programmet med kommandoen:
sudo systemctl start helloapp.service
Herefter går vi vores Apache konfiguration aktiv med kommandoen:
sudo a2ensite default-ssl.conf
Vi disabler også default site så den ikke er i konflikt med vores HTTPS site
sudo a2dissite 000-default.conf
og til sidst restarter apache
sudo systemctl restart apache2.service
Hvis du har lavet filerne rigtigt, så har du nu dit ASP.NET projekt til at køre på serveren.