Triển khai .NET 6 MVC trên Linux

Bắt đầu bằng cách tạo một thư mục trên máy chủ Linux của bạn, ví dụ đặt tên là myweb. Hãy nhớ thiết lập quyền truy cập phù hợp cho thư mục; giá trị mặc định tiêu chuẩn là 0755. Giá trị 0755 tương ứng với quyền rwxr-xr-x:

Người dùng khác: Chỉ được đọc và thực thi (r-x)

Chủ sở hữu (tài khoản người dùng của bạn): Toàn quyền đọc, ghi và thực thi (rwx)

Thành viên nhóm: Chỉ được đọc và thực thi (r-x)

Tiếp theo, xuất bản dự án trong Visual Studio. Trước tiên chuyển sang cấu hình bản phát hành (Release) và biên dịch dự án, sau đó nhấp chuột phải vào dự án và chọn Xuất bản. Sau khi quá trình xuất bản hoàn tất, hãy sao chép tất cả tệp từ thư mục xuất bản vào thư mục myweb vừa tạo bằng công cụ FTP.

cd /usr/myweb

Sau khi di chuyển tệp xong, chạy lệnh bên dưới để khởi chạy ứng dụng dưới dạng tiến trình nền. Chạy ở chế độ nền giúp chương trình tiếp tục hoạt động ngay cả khi bạn đóng cửa sổ SSH kết nối từ xa đến Linux.

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

Ký tự & ở cuối lệnh rất quan trọng để chạy chương trình ở nền. Nếu bỏ qua ký tự này, ứng dụng sẽ chạy ở chế độ tiền cảnh và sẽ tắt ngay lập tức khi bạn đóng cửa sổ dòng lệnh hoặc nhấn tổ hợp phím Ctrl + C.

Dưới đây là ví dụ thực tế của tôi: sudo nohup dotnet WebSite.dll &

Lưu ý quan trọng bổ sung

Hãy cài đặt cổng kết nối trước khi xuất bản. Mở tệp appsettings.json trong dự án .NET MVC.

Thêm cấu hình bên dưới làm mẫu:

{
  "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)

Cấu hình này chấp nhận kết nối từ mọi địa chỉ IP qua cổng 8080. Bạn cũng có thể dùng Nginx làm proxy đảo, giúp lưu trữ nhiều tên miền khác nhau trên cùng một máy chủ Linux.

Nếu chỉ sử dụng Nginx làm proxy đảo, bạn không cần mở cổng này trên tường lửa. Hãy liên kết dịch vụ chỉ với địa chỉ cục bộ như sau:

{
  "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)

Với cấu hình này, ứng dụng chỉ nhận yêu cầu từ máy cục bộ và chặn tất cả các kết nối trực tiếp từ bên ngoài.

Mục tiêu của tôi là truy cập ứng dụng này thông qua địa chỉ abc.com/hello.

Sau đó chạy lệnh sudo nohup dotnet WebSite.dll & để khởi động ứng dụng.

Kiểm tra xem ứng dụng hoạt động ổn không với lệnh: ps -aux | grep WebSite.dll

Nếu xuất hiện thông tin tiến trình tương ứng, nghĩa là dịch vụ đã khởi chạy thành công.

Cài đặt Proxy đảo Nginx (bỏ qua phần này nếu không cần chức năng proxy)

Nếu bạn đã cài Nginx, tệp cấu hình chính nằm tại /etc/nginx/nginx.conf

Chỉnh sửa tệp cấu hình trang web tại đường dẫn /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 _;

	# Trang chính
	location / {
		try_files $uri $uri/ =404;
	}

	# ✅ Điểm quan trọng: Chuyển tiếp /hello sang .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)

Khởi động lại Nginx sau khi lưu thay đổi

sudo nginx -t
sudo systemctl restart nginx

Bây giờ hãy khởi động lại ứng dụng .NET MVC

Trước tiên tìm tiến trình đang chạy với lệnh ps -aux | grep WebSite.dll, sau đó ghi lại số PID ở đầu dòng lệnh tương ứng

Sử dụng số PID đó để tắt phiên bản .NET MVC đang hoạt động.

Khởi động lại dịch vụ với dòng lệnh: sudo nohup dotnet 你的项目.dll –urls http://127.0.0.1:8080 > /dev/null 2>&1 &

Bắt đầu kiểm tra toàn bộ hệ thống

Khởi động lại Nginx

Chạy lệnh sau:

bash

Thực thi:

sudo systemctl restart nginx

.NET lắng nghe trên cổng 8080

Sử dụng lệnh dưới đây để kiểm tra trạng thái dịch vụ .NET:

bash

Thực thi:

curl http://127.0.0.1:8080

Nếu cửa sổ dòng lệnh hiển thị nội dung HTML thô thì ứng dụng đang hoạt động bình thường.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *