Published
- 1 min read
วิธี Deploy Blazor ไปที่ Linux server
How to publish Blazor
เพื่อให้โปรแกรมของคุณทำงานอัตโนมัติเมื่อ Raspberry Pi (ที่ใช้ Linux เป็น OS) เริ่มต้นหรือรีสตาร์ท คุณสามารถสร้างไฟล์บูต (boot file) สำหรับ systemd ใน Raspberry Pi OS ตามขั้นตอนต่อไปนี้:
- สร้างไฟล์บูต .service:
สร้างไฟล์ใหม่ใน
/etc/systemd/system
และตั้งชื่อเป็นmyproject.service
หรือชื่อที่คุณต้องการ:
sudo nano /etc/systemd/system/myproject.service
- เพิ่มข้อมูลในไฟล์ .service: เพิ่มข้อมูลต่อไปนี้ในไฟล์ myproject.service:
[Unit]
Description=My Project Service
After=network.target
[Service]
WorkingDirectory=/path/to/your/project/bin/Release/net8.0/publish
ExecStart=/usr/bin/dotnet /path/to/your/project/bin/Release/net8.0/publish/MyProject.dll --urls "http://my.project.com:5000"
Restart=always
# Restart service after 10 seconds if the dotnet service crashes
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=myproject
User=pi
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
WorkingDirectory
: ระบุที่อยู่ของโปรเจคของคุณExecStart
: ระบุคำสั่งที่จะใช้เริ่มโปรแกรมRestart
: ระบุว่าเมื่อเกิดข้อผิดพลาดหรือโปรแกรมจบการทำงาน ให้รีสตาร์ทUser
: ระบุผู้ใช้ที่จะให้ systemd ใช้ในการรันบริการEnvironment
: ระบุตัวแปรสภาพแวดล้อมของ ASP.NET Core (Production, Development, etc.)
-
บันทึกและปิดไฟล์: บันทึกการเปลี่ยนแปลงและปิดไฟล์.
-
Reload systemd: รีโหลดการกำหนดค่า systemd:
sudo systemctl daemon-reload
- เปิดให้บริการทำงาน: เริ่มให้บริการทำงานแบบอัตโนมัติทุกครั้งที่ Raspberry Pi เริ่มต้น:
sudo systemctl enable myproject.service
- เริ่มให้บริการทำงาน: เริ่มให้บริการทำงาน:
sudo systemctl start myproject.service
ตอนนี้ บริการของคุณควรจะทำงานเมื่อ Raspberry Pi เริ่มต้นหรือรีสตาร์ท และโปรแกรมของคุณจะถูกเรียกใช้ด้วยคำสั่งที่คุณได้ระบุในไฟล์ .service
การตรวจสอบสถานะของ Service
systemctl status myproject.service
การเปิด Port สำหรับให้เชื่อมต่อจากภายนอกได้
sudo apt install ufw
sudo ufw allow 80/tcp
เพียงเท่านี้คุณก็สามารถตั้ง Web Server ที่พัฒนาด้วย Blazor ได้แล้ว กรณีมีหลายเว็บอาจจะต้องศึกษาวิธีใช้ Nginx ช่วยในการ Redirect เว็บไซต์ตามชื่อ Domain เพิ่มเติมนะครับ