Provera rada servera
Platforme proveravaju da li aplikacija radi tako što povremeno pozivaju neku adresu. Dodaj rutu /zdravlje koja vraća {"status":"ok","vreme":"…"} i broj proizvoda u bazi, i upiši je kao Health Check Path na Render-u.
Prodavnica radi na tvom računaru; poslednji korak je da je postaviš na internet. Prikazujemo pripremu (dotnet publish, podešavanja za produkciju) i dva načina: Azure App Service (Microsoft-ova platforma) i Render pomoću Docker-a.
dotnet publish -c Release -o publish
Folder publish sadrži preveden program (Prodavnica.dll) i sve što mu treba. Pokreće se sa dotnet Prodavnica.dll – tako ga pokreće i server.
// Program.cs – posle builder.Build(): primeni migracije pri pokretanju (pravi bazu na serveru)
using (var scope = app.Services.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<ProdavnicaContext>();
db.Database.Migrate();
}
| Na serveru | Kako |
|---|---|
| okruženje Production | podrazumevano kada se ne pokreće iz razvojnog alata – detaljne strane grešaka su isključene |
| adresa baze i tajne | promenljive okruženja: ConnectionStrings__Prodavnica zamenjuje vrednost iz appsettings.json (dve donje crte = ugnežđeni ključ) |
| HTTPS | obezbeđuje platforma; aplikacija sluša HTTP na portu koji platforma zada |
prodavnica-ana) → runtime .NET iste verzije kao projekat → cenovni paket Free (F1).publish → Deploy to Web App.https://prodavnica-ana.azurewebsites.net (Azure može dodati nastavak imenu).Iz Visual Studio-a isto: desni klik na projekat → Publish → Azure. SQLite fajl na App Service-u radi za probu; za ozbiljniju aplikaciju koristi se Azure SQL baza.
Render nema ugrađenu podršku za .NET, ali pokreće Docker kontejnere – „kutije“ sa programom i svim što mu treba. Dodaj u koren projekta:
# Dockerfile
# 1. faza: prevođenje (slika sa SDK-om)
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app
# 2. faza: pokretanje (manja slika, samo runtime)
FROM mcr.microsoft.com/dotnet/aspnet:10.0
WORKDIR /app
COPY --from=build /app .
ENV ASPNETCORE_HTTP_PORTS=8080
EXPOSE 8080
ENTRYPOINT ["dotnet", "Prodavnica.dll"]
Broj 10.0 mora odgovarati verziji .NET-a u .csproj fajlu (za .NET 8: 8.0). Dodaj i .dockerignore sa redovima bin/, obj/, publish/, *.db.
Dockerfile → Free.https://prodavnica.onrender.com.Npgsql.EntityFrameworkCore.PostgreSQL i UseNpgsql). Uslovi besplatnih paketa se menjaju – proveri ih pre početka.| Simptom | Uzrok i rešenje |
|---|---|
| HTTP Error 500.30 / aplikacija se ne pokreće | pogledaj zapise (Log stream / Logs); često nedostaje promenljiva okruženja ili baza |
| no such table | nisu primenjene migracije – kod sa Database.Migrate() iz pripreme |
| CSS i slike se ne vide | nedostaje UseStaticFiles() ili fajlovi nisu u wwwroot |
| Docker: could not find Prodavnica.dll | ime u ENTRYPOINT mora odgovarati imenu projekta |
| JavaScript klijent ne dobija podatke | adresa API-ja u klijentu i dalje pokazuje na localhost – koristi relativnu adresu /api/proizvodi |
Za svaki zadatak postoji primer, uputstvo i rešenje.
Platforme proveravaju da li aplikacija radi tako što povremeno pozivaju neku adresu. Dodaj rutu /zdravlje koja vraća {"status":"ok","vreme":"…"} i broj proizvoda u bazi, i upiši je kao Health Check Path na Render-u.
dotnet build -c Release bez grešaka i da u kodu nema lozinki.appsettings.Development.json sa ličnim podešavanjima u javni repozitorijum.1. Šta pravi komanda dotnet publish -c Release?
2. Kako se na serveru zadaje adresa baze bez menjanja koda?
3. Zašto SQLite baza u besplatnom Docker servisu gubi podatke?