ASP.NET Core API #10: Deployment API ke IIS atau Azure

ASP.NET Core API #10: Deployment API ke IIS atau Azure

Halo lagi, calon programmer yang aplikasinya sudah siap go public! 👋

Selama 9 artikel kita belajar bikin API keren dengan fitur CRUD, autentikasi JWT, upload gambar, dan lainnya. Tapi selama ini API kita cuma bisa diakses di localhost (komputer sendiri). Sekarang saatnya kita deploy (menerbangkan) API kita ke "angkasa" agar bisa diakses oleh seluruh dunia (atau setidaknya teman-teman kamu).

🤣 Kenapa deployment disebut "go public"? Karena aplikasinya sudah gak malu-malu lagi tampil di depan umum! 😆

Kita akan bahas dua cara populer untuk deploy ASP.NET Core API:

  1. IIS (Internet Information Services) – di server Windows lokal atau VPS.
  2. Azure App Service – di cloud Microsoft (bisa gratis!).

Kamu bisa pilih salah satu, tergantung kebutuhan dan budget. Yuk kita mulai!

Bagian 1: Prasyarat Umum

Sebelum deploy, pastikan beberapa hal ini:

  • Project WisataAPI sudah berjalan lancar di lokal (tidak ada error).
  • Database sudah berisi data (bisa pakai SQL Server di lokal atau nanti di cloud).
  • Sudah punya akun Azure kalau mau deploy ke cloud (bisa daftar gratis dengan kredit $200).
  • Koneksi internet stabil (kalau mau ke cloud).

Bagian 2: Deployment ke IIS (Lokal/Server Windows)

IIS adalah web server bawaan Windows. Cocok kalau kamu punya server Windows sendiri atau VPS. Anggap saja seperti kita punya "toko" sendiri, kita yang jaga sendiri.

Langkah 2.1: Install .NET Core Hosting Bundle di Server

IIS tidak bisa langsung menjalankan ASP.NET Core. Butuh penghubung yang disebut Hosting Bundle. Install ini di server tujuan [citation:1][citation:4].

  • Download hosting bundle dari situs resmi .NET (sesuaikan dengan versi .NET project kita, misal 8.0).
  • Jalankan installer di server.
  • Setelah selesai, restart server atau jalankan perintah: net stop was /y diikuti net start w3svc [citation:4].

Tanpa hosting bundle, IIS akan bingung dan ngasih error 500 [citation:10].

Langkah 2.2: Publish Aplikasi dari Visual Studio

  1. Buka project WisataAPI di Visual Studio.
  2. Klik kanan project → Publish.
  3. Pilih target Folder (kita akan publish ke folder lokal dulu).
  4. Tentukan folder tujuan (misal D:\Publish\WisataAPI).
  5. Klik Publish [citation:4].
  6. Setelah selesai, di folder publish akan ada file-file termasuk web.config (penting!).

Langkah 2.3: Konfigurasi IIS

  1. Buka IIS Manager di server.
  2. Klik kanan SitesAdd Website.
  3. Isi:
    • Site name: WisataAPI
    • Physical path: folder tempat kamu copy hasil publish (misal C:\inetpub\wwwroot\WisataAPI) [citation:4].
    • Binding: atur port (misal 8080) atau domain.
  4. Klik OK.

Langkah 2.4: Atur Application Pool

Aplikasi ASP.NET Core tidak perlu menjalankan CLR .NET Framework, jadi kita set application pool ke "No Managed Code" [citation:7][citation:10].

  1. Di IIS Manager, buka Application Pools.
  2. Cari pool yang sesuai dengan site kamu (misal WisataAPI).
  3. Klik kanan → Basic Settings.
  4. Ubah .NET CLR version menjadi No Managed Code.
  5. Klik OK.

Langkah 2.5: Atur Izin Folder

Pastikan IIS punya izin baca/tulis ke folder aplikasi [citation:7][citation:10].

  1. Klik kanan folder deploy (misal C:\inetpub\wwwroot\WisataAPI) → PropertiesSecurity.
  2. Tambahkan user IIS_IUSRS (atau IIS AppPool\WisataAPI) dengan izin Read & Execute (dan Write kalau perlu log).

Langkah 2.6: Uji Coba

Buka browser di komputer server (atau dari komputer lain) dan akses: http://localhost:8080/api/kategori (sesuai binding). Kalau muncul data JSON, berarti sukses! 🎉

💡 Kalau error 500, cek file log di folder logs (aktifkan di web.config). Biasanya karena connection string salah atau database tidak bisa diakses [citation:10].

Langkah 2.7: Menangani Swagger di Production

Secara default, Swagger hanya aktif di environment Development. Saat deploy, environment biasanya Production, jadi Swagger tidak muncul. Kalau ingin tetap muncul (misal untuk testing), kamu bisa ubah sementara environment di web.config [citation:1]:

<aspNetCore processPath=".\WisataAPI.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
  </environmentVariables>
</aspNetCore>

⚠️ Tapi ingat, menampilkan Swagger di production bisa berisiko keamanan. Lebih baik nonaktifkan atau lindungi dengan autentikasi.

Bagian 3: Deployment ke Azure App Service

Azure App Service adalah layanan cloud dari Microsoft untuk hosting web app. Cocok kalau kamu ingin gak ribet urus server, scaling otomatis, dan bisa diakses dari mana aja.

🤣 Kalau IIS itu kayak punya toko sendiri, Azure itu kayak nitip dagangan di mall besar—urusannya lebih gampang, tinggal bayar sewa!

Langkah 3.1: Siapkan Akun Azure

  • Kunjungi azure.com/free.
  • Daftar dengan akun Microsoft. Dapat kredit $200 untuk 30 hari pertama (cukup buat coba-coba).

Langkah 3.2: Publish Langsung dari Visual Studio

Cara termudah: deploy langsung dari Visual Studio [citation:2][citation:5].

  1. Klik kanan project → Publish.
  2. Pilih target Azure.
  3. Pilih Azure App Service (Windows) atau Linux (pilih Windows agar mudah).
  4. Klik Next.

Langkah 3.3: Login dan Buat Resource

  1. Login ke akun Azure kamu jika diminta.
  2. Pilih subscription yang aktif.
  3. Klik + untuk membuat App Service baru [citation:8].
  4. Isi:
    • Name: nama unik (misal wisataapi-namakamu). Ini akan jadi domain: wisataapi-namakamu.azurewebsites.net.
    • Subscription: pilih subscription kamu.
    • Resource Group: buat baru atau pilih yang ada (misal WisataAPI-RG).
    • Hosting Plan: pilih Free (F1) atau Basic (B1) untuk trial [citation:9].
  5. Klik Create. Visual Studio akan membuat resource di Azure (butuh waktu beberapa detik).

Langkah 3.4: Deploy Aplikasi

  1. Setelah resource selesai dibuat, kembali ke wizard publish.
  2. Pastikan App Service yang baru dipilih, lalu klik Finish.
  3. Klik Publish [citation:2].
  4. Visual Studio akan build, publish, dan mengupload file ke Azure. Progress terlihat di output.

Setelah selesai, browser akan otomatis terbuka ke URL https://wisataapi-namakamu.azurewebsites.net. Coba tambahkan /api/kategori di belakang URL.

Kalau muncul data JSON, berarti sukses! 🎉

Langkah 3.5: Mengatur Connection String dan Environment

Di lokal, kita pakai connection string ke SQL Server lokal. Di Azure, kita perlu menghubungkan ke database yang bisa diakses cloud. Ada beberapa opsi:

  • Pakai Azure SQL Database (bayar).
  • Pakai SQL Server di VM (ribet).
  • Untuk sementara, kita bisa ubah koneksi ke SQL Server lokal tapi tidak bisa karena Azure tidak bisa akses lokalmu. Jadi kita perlu deploy database juga ke cloud.

Alternatif cepat: gunakan database in-memory untuk demo, atau ubah ke SQLite yang file-nya ikut terdeploy. Tapi untuk serius, pakai Azure SQL Database.

Cara atur connection string di Azure:

  1. Di Azure Portal, buka App Service yang sudah dibuat.
  2. Di menu kiri, pilih Configuration.
  3. Di bagian Connection strings, tambahkan connection string baru dengan nama DefaultConnection (sesuai di appsettings.json).
  4. Isi dengan connection string ke Azure SQL Database atau database lain yang bisa diakses.
  5. Klik Save.

App Service akan otomatis mengganti connection string dari appsettings.json dengan yang diatur di Portal [citation:3].

Langkah 3.6: Mengatasi Swagger di Azure

Sama seperti di IIS, Swagger biasanya tidak aktif di production. Kalau ingin tetap aktif untuk testing, kamu bisa atur ASPNETCORE_ENVIRONMENT menjadi Development di Configuration > Application settings [citation:8].

⚠️ Tapi ingat, jangan lakukan ini di production sungguhan karena berisiko keamanan.

Perbandingan Singkat

IIS (Self-managed)

  • Kelebihan: Kontrol penuh, cocok untuk intranet atau aplikasi internal, tidak perlu bayar hosting (kalau punya server sendiri).
  • Kekurangan: Ribet urus server sendiri, harus urus keamanan, backup, dll.

☁️ Azure App Service

  • Kelebihan: Gak ribet urus server, scaling otomatis, keamanan dikelola Microsoft, domain gratis (.azurewebsites.net), SSL gratis.
  • Kekurangan: Berbayar (tapi ada free tier untuk coba-coba), kontrol terbatas.

Selamat! API Kamu Sudah Online

Kamu sudah berhasil mendeploy API ke IIS atau Azure. Sekarang API Wisata-mu bisa diakses dari mana saja. Berikan URL-nya ke teman-temanmu, biar mereka bisa lihat hasil karyamu.

Ini adalah akhir dari seri tutorial ASP.NET Core API dari awal sampai deployment. Kamu sudah belajar banyak: dari instalasi, bikin API, CRUD, JWT, upload gambar, sampai deploy. Hebat! 👏

Apa Selanjutnya?

  • Buat front-end (React, Vue, atau Blazor) untuk mengkonsumsi API ini.
  • Tambahkan fitur rating, komentar, atau pencarian.
  • Pelajari CI/CD dengan GitHub Actions agar deploy otomatis.
  • Eksplor layanan Azure lain seperti Azure Storage untuk gambar.
😎 Ingat: Programmer hebat bukan yang tidak pernah error, tapi yang tidak menyerah saat error. Selamat berkarya dan terus belajar!

Ditulis oleh Kakak programmer yang dulu juga deg-degan pas pertama kali deploy. Kalau ada pertanyaan atau mau diskusi, tulis di komentar ya!

Lebih baru Lebih lama

نموذج الاتصال