Menyebarkan .NET 6 MVC di Linux

Pertama, buat folder di server Linux Anda, contohnya beri nama myweb. Pastikan mengatur izin folder dengan benar; nilai standar bawaan adalah 0755. Kode 0755 setara dengan izin rwxr-xr-x:

Pengguna lain: Hanya dapat membaca dan menjalankan (r-x)

Pemilik (akun pengguna Anda): Memiliki izin penuh untuk membaca, menulis dan menjalankan (rwx)

Anggota grup: Hanya dapat membaca dan menjalankan (r-x)

Selanjutnya, publikasikan proyek di Visual Studio. Ubah konfigurasi build ke mode Release lalu kompilasi proyek, kemudian klik kanan pada proyek dan pilih Publikasikan. Setelah proses publikasi selesai, salin semua berkas dari folder publikasi ke direktori myweb yang baru dibuat menggunakan klien FTP.

cd /usr/myweb

Setelah semua berkas dipindahkan, jalankan perintah di bawah untuk memulai aplikasi sebagai proses latar belakang. Berjalan di latar belakang membuat program tetap aktif meskipun Anda menutup jendela koneksi SSH jarak jauh Linux.

sudo nohup dotnet yourprogramname.dll &Code language: CSS (css)

Karakter & di akhir perintah sangat penting untuk menjalankan aplikasi di latar belakang. Tanpa karakter ini, aplikasi akan berjalan di depan dan langsung berhenti saat Anda menutup terminal atau menekan tombol Ctrl + C.

Berikut contoh penggunaan saya: sudo nohup dotnet WebSite.dll &

Catatan penting tambahan

Atur port sebelum melakukan publikasi. Buka berkas appsettings.json yang ada di dalam proyek .NET MVC.

Tambahkan konfigurasi di bawah sebagai templat:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://0.0.0.0:8080"
      }
    }
  }
}Code language: JSON / JSON with Comments (json)

Konfigurasi ini menerima koneksi dari semua alamat IP melalui port 8080. Anda dapat menggunakan Nginx sebagai proksi terbalik dan menghosting beberapa domain berbeda dalam satu server Linux.

Jika Anda hanya menggunakan Nginx sebagai proksi terbalik, Anda tidak perlu membuka port ini di firewall. Hubungkan layanan hanya ke alamat lokal seperti berikut:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://127.0.0.1:8080"
      }
    }
  }
}Code language: JSON / JSON with Comments (json)

Dengan pengaturan ini, aplikasi hanya menerima permintaan dari lokal dan memblokir semua koneksi langsung dari luar.

Tujuan akhir saya adalah mengakses aplikasi ini melalui alamat abc.com/hello.

Kemudian jalankan perintah sudo nohup dotnet WebSite.dll & untuk memulai aplikasi.

Periksa apakah aplikasi berjalan normal dengan perintah: ps -aux | grep WebSite.dll

Munculnya entri proses yang sesuai menandakan layanan telah berhasil dijalankan.

Mengatur Proksi Terbalik Nginx (lewati bagian ini jika tidak membutuhkan fitur proksi)

Jika Nginx sudah terinstal, berkas konfigurasi utama berada di /etc/nginx/nginx.conf

Edit berkas konfigurasi situs di lokasi /etc/nginx/sites-available/default

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	root /var/web/xxxx;
	index index.html index.htm index.nginx-debian.html;
	server_name _;

	# Situs utama
	location / {
		try_files $uri $uri/ =404;
	}

	# ✅ Penting: Arahkan /hello ke .NET
	location /hello {
		proxy_pass http://127.0.0.1:8080;
		proxy_http_version 1.1;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
	}
}Code language: PHP (php)

Mulai ulang Nginx setelah menyimpan perubahan

sudo nginx -t
sudo systemctl restart nginx

Sekarang mulai ulang aplikasi .NET MVC

Cari proses yang sedang berjalan dengan perintah ps -aux | grep WebSite.dll, lalu catat nomor PID di awal baris yang sesuai

Gunakan nomor PID tersebut untuk menghentikan instansi .NET MVC yang berjalan.

Jalankan kembali layanan dengan baris perintah ini: sudo nohup dotnet 你的项目.dll –urls http://127.0.0.1:8080 > /dev/null 2>&1 &

Sekarang lakukan pengujian keseluruhan

Mulai ulang Nginx

Jalankan perintah berikut:

bash

Jalankan:

sudo systemctl restart nginx

.NET mendengarkan di port 8080

Gunakan perintah di bawah untuk memverifikasi status layanan .NET:

bash

Jalankan:

curl http://127.0.0.1:8080

Jika terminal menampilkan konten HTML mentah, berarti aplikasi berfungsi dengan baik.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *