วิธีสร้าง service และ auto start service บน Ubuntu server
วิธีสร้าง service และ auto start service บน Ubuntu server
เครดิต : https://medium.com/@wiboonklebkomut/%E0%B8%A7%E0%B8%B4%E0%B8%98%E0%B8%B5%E0%B8%AA%E0%B8%A3%E0%B9%89%E0%B8%B2%E0%B8%87-service-%E0%B9%81%E0%B8%A5%E0%B8%B0-auto-start-service-%E0%B8%9A%E0%B8%99-ubuntu-server-33c661254ccf
ในบทความนี้เราจะเปลี่ยน command ให้เป็น service และเปิดใช้งาน service ของเรารวมถึงการตั้งค่าให้ auto start service เมื่อ server มีการ reboot
ในบทความนี้จะทำ django ให้เปิดใช้งานตลอดเวลา
ขั้นตอนการสร้าง Service
1. เราจะเริ่มจากทดลองใช้ command ปกติของเราก่อน เช่น
cd django
source venv/bin/activate
python mange.py runserver 0.0.0.0:8000
เพื่อเปิดใช้งาน
2. สร้างไฟล์ .sh ขึ้นมาโดยนำ command ปกติใส่เข้าไป
จากนั้นเอาไฟล์นี้ขึ้นไปบน server แล้วสั่ง (ของผมตั้งชื่อเป็น script.sh)
$ bash script.sh
ถ้าเหมือนกับที่เราสั่งใช้งานเองได้แล้วถือว่าโอเค
3. จากนั้นกำหนดสิทธิไฟล์นี้โดย
$ chmod +x script.sh
4. เข้าไปที่ etc/systemd/system โดย
$ cd /etc/systemd/system
5. เมื่อเราเข้าไปใน path ด้านบนแล้วเราจะสร้างไฟล์ service ขึ้นมาโดย
$ sudo vim django.service
django.service เป็นชื่อไฟล์ของผม สามารถเปลี่ยนชื่อได้
6. มันจะเข้าไปใน ไฟล์ django.service แล้วให้กด i เพื่อ insert แล้วใส่ตามนี้เลย
[Unit]
Description=django
After=network.target
[Service]
ExecStart=/home/wiboon/script.sh
Restart=always
WorkingDirectory=/home/wiboon
User=wiboon
Group=wiboon
[Install]
WantedBy=multi-user.target
เมื่อใส่เสร็จแล้วกด Esc จะออกจากโหมด insert แล้วกด :wq จะเป็นการ save แล้วออกจากไฟล์
7. เราจะได้ไฟล์ service ของเรามา เราสามารถทดลองใช้ได้โดย
$ systemctl start django(ชื่อไฟล์ service)
สามารถเช็ค status ได้ด้วย
$ systemctl status django(ชื่อไฟล์ service)
และถ้าต้องการปิด service
$ systemctl stop django(ชื่อไฟล์ service)
เราอาจจะยังใช้งานไม่ได้จริงเพราะว่า ไฟล์ .sh ของเราอยู่ใน path ปกติของเรา ตัวอย่างเช่น home/wiboon แต่ในตอนนี้เราอยู่ใน etc/systemd/system ทำให้เมื่อ run service จะฟ้องว่าหา directory ไม่เจอ เราก็ต้องไปแก้ไขไฟล์ .sh ของเราทำให้ path ตรงกัน
ยกตัวอย่าง ผมก็ cd ../../.. ให้ถอยออกมาจาก folder etc/systemd/system
จากนั้น cd home/wiboon ทีนี้ directory ของเราก็จะเป็นตามปกติเราก็ใช้ command จากข้อ 1 ได้ปกติแล้ว ตามรูปภาพประกอบ
8. หลังจากทดลองเปิด-ปิด service ได้แล้ว เราจะทำให้ Auto start service ได้โดย
$ sudo systemctl enable django(ชื่อไฟล์ service ของเรา)
ทำให้ sure
$ sudo systemctl daemon-reload
ถ้าใช้งานได้ลอง reboot server ดูโดย
$ sudo reboot หรือ $ sudo systemctl restart django
แล้วกลับเช็ค status service ของเราดู
ถ้าขึ้นว่า update-rc.d error: xxxx Default-start contains…….
ให้ลองเข้าไปใน /etc/init.d แล้ว ls -l ดูว่ามีไฟล์ชื่อซ้ำกับ service หรือป่าว ถ้ามีก็ลบทิ้งโดย $ sudo rm filename
ทั้งหมดก็มีแค่นี้ลองปรับใช้กันดูครับผมก็มือใหม่เหมือนกัน :)
What's Your Reaction?