management streaming server configuration file system case ... ระบบจัดการ... ·...
TRANSCRIPT
ระบบจัดการไฟลคอนฟกกูเรช่ันโปรแกรมสตรีมมิ่งเซิฟเวอร
กรณีศึกษา บริษัท บบีีทีวี นิวมีเดีย จํากัด
Management Streaming Server Configuration File System
Case Study: BBTV New Media CO., LTD.
ศราวุธ ล้ิมดํารงคชิต
สารนิพนธนี้เปนสวนหนึ่งของการศึกษา
หลักสูตรวิทยาศาสตรมหาบัณฑิต สาขาวิชาความมั่นคงทางระบบสารสนเทศ
คณะวิทยาการและเทคโนโลยีสารสนเทศ
มหาวิทยาลัยเทคโนโลยีมหานคร
ปการศึกษา 2556
หัวขอ ระบบจัดการไฟลคอนฟกกูเรชั่นโปรแกรมสตรีมม่ิงเซิรฟเวอร กรณีศึกษา บริษัท บบีีทวีี นิวมีเดีย จํากัด ชื่อนักศึกษา ศราวธุ ลิ้มดํารงคชิต รหัสนักศึกษา 5417810009 หลักสูตร วิทยาศาสตรมหาบัณฑิต สาขาความม่ันคงทางระบบสารสนเทศ ปการศึกษา 2556 อาจารยที่ปรึกษา ดร.วรพล ลีลาเกียรตสิกุล
บทคัดยอ
วัตถุประสงคของระบบจัดการไฟลคอนฟกกูเรชั่นโปรแกรมสตรีมม่ิงเซิฟเวอร ไดพัฒนาขึ้นเพ่ือเปนเครื่องมือชวยในการกระจายไฟลคอนฟกกูเรชั่น (Configuration) โปรแกรมสตรีมม่ิงเซิฟเวอร (WowzaMediaServer) หลายๆ เคร่ือง ซ่ึงทุก ๆ เคร่ืองทําหนาที่เหมือนกันหมด ซ่ึงหากการรีโมทเขาไปคอนฟกกูเรชั่นทุก ๆ เคร่ืองหากเกิดผิดพลาดแมแตเคร่ืองเดียว จะทําใหเกิดดาวนไทม (Downtime) ซ่ึงจะสงผลเสียแกเว็บไซตของบริษัทเปนอยางมาก ดังนั้น ระบบจัดการไฟลคอนฟกกูเรชั่นสามารถชวยแกปญหาดังกลาวได เม่ือมีการคอนฟกกูเรชั่นไฟลแลวการกระจายไฟลคอนฟกกูเรชั่นจะกระจายไปยังเคร่ืองสตรีมม่ิงเซิฟเวอรทุก ๆ เคร่ืองอัตโนมัติทันที พรอมทั้งบันทึกล็อก วันที่ เวลา ชื่อผูแกไขคาคอนฟกกูเรชั่น ทุกคร้ัง เพ่ือลดความเสี่ยงที่จะเกิดดาวนไทมแกเว็บไซตของบริษัท ทั้งยังชวยใหเกิดความสะดวก สบายในการแกไขคาคอนฟกกูเรชั่นทุกๆ เคร่ืองอีกดวย
I
กิตติกรรมประกาศ
สารนิพนธน้ีไดพัฒนาจนสําเร็จดวยดี เพราะความกรุณา ความชวยเหลือ และกําลังใจจากหลายคน ขาพเจาขอขอบพระคุณมา ณ ที่น้ี
ขอขอบพระคุณ ดร.วรพล ลีลาเกียรติสกุล อาจารยที่ปรึกษาโครงงานที่กรุณาเสียสละเวลาใหคําแนะนําและคอยตรวจสอบโครงงานอยูสมํ่าเสมอ และยังคอยหาตัวอยางที่ดี ๆ มาใหอีกมากมาย
ขอขอบพระคุณบริษัท บีบีทีวี นิวมีเดีย จํากัด ที่กรุณาใหโอกาสไดมีการพัฒนาระบบ ทั้งยังอุปกรณ ขอมูล ตางๆ ที่จําเปนตอการพัฒนาระบบ ประกอบในการจัดทําสารนิพนธ
ขอขอบพระคุณอาจารยทุกๆ ทานที่ชวยประสิทธิประสาทวิชาแกขาพเจาตั้งแตขาพเจาเขามาศึกษาในท่ีแหงน้ี ขอบคุณกําลังใจจากอาจารยทุกทานที่ทําใหขาพเจาพัฒนาโครงงานน้ีใหสําเร็จไปไดดวยดี
ขอขอบพระคุณพ่ีๆ เพ่ือนๆ และทุกคนที่ชวยสอนเวลาที่โปรแกรมมีปญหาและเปนกําลังใจในยามที่เราทอ
ศราวธุ ลิ้มดํารงคชิต
กันยายน 2556
II
สารบัญ หนา
บทคัดยอ I กิตติกรรมประกาศ II สารบัญ III สารบัญรูป V บทที่ 1 บทนํา 1
1.1. บทนํา 1 1.2. ปญหาและแรงจูงใจ 1 1.3. วัตถุประสงค 2 1.4. ขอบเขตขอบระบบ 2 1.5. ประโยชนที่คาดวาจะไดรับ 2
บทที่ 2 พ้ืนฐานและทฤษฎทีี่เก่ียวของ 4
2.1. การควบคุมการปรับปรุงแกไข 4 2.2. Git ขั้นพ้ืนฐาน 7 2.3. SSH (Secure Shell) 16 2.4. Shell Programming Language 18
บทที่ 3 การดําเนินงาน 21
3.1. Diagram การทํางานของระบบ 21 3.2. การออกแบบการทํางานของระบบสวนของ Bash Shell Script 23 3.3. การออกแบบการทํางานของระบบสวนของ GUI 25 3.4. การออกแบบฐานขอมูลของระบบ 30 3.5. แผนภาพแสดงการไหลของขอมูล 31 3.6. สรุปผล 35
บทที่ 4 ผลการดําเนินงาน 36
4.1. ขั้นตอนการทดลอง 36 4.2. สภาพแวดลอมของการทดลอง 36
III
สารบัญ (ตอ)
หนา 4.3. ผลการทดลอง 37
บทที่5 สรุปผลดําเนินงานโครงการและขอเสนอแนะ 49
5.1. สรุปผลการดําเนินงาน 49 5.2. ขอเสนอแนะในการแกไขปญหา 49 5.3. สรุปปญหาทีพ่บ 49
IV
สารบัญรูป หนา รูปที่ 2.1 ระบบ version control แบบ local 4 รูปที่ 2.2 ระบบ version control แบบรวมศูนย 5 รูปที่ 2.3 ระบบ Version Control แบบกระจายศูนย 6 รูปที่ 2.4 การเก็บขอมูลโดยอางอิงกับการแกไขที่เกิดขึน้กับไฟล 7 รูปที่ 2.5 การเก็บขอมูลแบบ Snapshot 8 รูปที่ 2.6 แสดงองคประกอบพ้ืนที่ของGit 9 รูปที ่2.7 ระบตุัวตนผูใชงาน Git 10 รูปที ่2.8 สรางแหลงเก็บขอมูลของ git 10 รูปที ่2.9 นําขอมูลจากเครื่องเซิฟเวอรมายังเคร่ืองลูกขาย 10 รูปที ่2.10 ยืนยันการแกไขไฟล 11 รูปที ่2.11อัพไฟลไปยังเซฟิเวอร 11 รูปที ่2.12ดูบนัทึกการยืนยนัการแกไขไฟล 11 รูปที ่2.13 การแสดงสถานะของ Git 12 รูปที ่2.14ยอนกลับไปใชไฟลเวอรชั่นกอนหนา 12 รูปที ่2.15แสดง flow การแกไขไฟลแบบไมมี branch 13 รูปที ่2.16 แสดง flow การแกไขไฟลแบบมี branch 13 รูปที ่2.17 แสดง branch default ที่ Git มีมาให 14 รูปที ่2.18 การสราง branch เพ่ิม 14 รูปที ่2.19 เปลี่ยนไปทํางานที่ branch อ่ืน 14 รูปที ่2.20 หลักการทํางานของ RSA 16 รูปที ่2.21 การสงขอมูลไปแฮช 17 รูปที ่2.22 การเขารหัสเมสเซสไดเจสตดวยกุญแจสวนตวัเพ่ือเปนการลงลายเซ็น 17 รูปที ่2.23 ขั้นตอนการเปรียบเทียบความถูกตอง 18 รูปที ่2.24 โครงสรางพ้ืนฐานการทํางานของ UNIX 18 รูปที ่2.25 ตัวอยาง bash shell 19 รูปที ่2.26 สั่งไฟล bash shell ใหทํางาน 19 รูปที ่3.1 การออกแบบ Diagram ภาพรวมการทํางานของระบบ 21 รูปที่ 3.2 การออกแบบ Flowchart การทํางานของไฟล post-receive 23
V
สารบัญรูป (ตอ) หนา รูปที่ 3.3 การออกแบบ Flowchart การทํางานของไฟล deploy.sh 24 รูปที่ 3.4 การออกแบบ Flowchart การทํางานภาพรวมของโปรแกรม GUI 25 รูปที่ 3.5 การออกแบบการทํางานของโปรแกรม GUI สวนการเปลี่ยนรหัสผานของตัวเอง 26 รูปที่ 3.6 การออกแบบการทํางานของโปรแกรม GUI สวนการจัดการสมาชิก 27 รูปที่ 3.7 การออกแบบการทํางานของโปรแกรม GUI สวนการจัดการ Application 28 รูปที่ 3.8 การออกแบบการทํางานของโปรแกรม GUI สวนการจัดการ Config Application 29 รูปที่ 3.9 การออกแบบฐานขอมูลการของโปรแกรม GUI 30 รูปที่ 3.10 แผนภาพแสดงการไหลของขอมูลระดับ 0 31 รูปที่ 3.11 แผนภาพแสดงการไหลของขอมูลระดับที่ 1 การเพ่ิม Member 32 รูปที่ 3.12 แผนภาพแสดงการไหลของขอมูลระดับที่ 1 การเพ่ิม Application 32 รูปที่ 3.13 แผนภาพแสดงการไหลของขอมูลระดับที่ 1 การบันทึกขอมูล Configuration Application ไปยัง GIT Server 33 รูปที่ 3.14 แผนภาพแสดงการไหลของขอมูลระดับที่ 1 การบันทึกขอมูล Configuration Application จาก GIT Server ไปยังเคร่ือง WowzaMediaServer ทุกเคร่ืองอัตโนมัติ 33 รูปที่ 3.15 แผนภาพแสดงการไหลของขอมูลระดับที่ 1 การออกรายงาน Application 34 รูปที่ 3.16 แผนภาพแสดงการไหลของขอมูลระดับที่ 1 การออกรายงาน Member 34 รูปที่ 4.1 GUI หนา Login 37 รูปที่ 4.2 GUI หนา Manage User 38 รูปที่ 4.3 GUI หนา Create new user 38 รูปที่ 4.4 GUI หนา Manage User ที่มี User ที่เพ่ิมเขาไป 39 รูปที่ 4.5 GUI ลบ User 40 รูปที่ 4.6 GUI หนาแจงเตือนเพ่ิม User ซํ้ากับทีมีอยูแลว 40 รูปที่ 4.7 GUI หนา Change Password 41 รูปที่ 4.8 GUI หนาแจงเตือน Password ปจจุบันไมถูกตอง 41 รูปที่ 4.9 GUI หนาแจงเตือนใหกรอก Password ใหมใหตรงกันทั้ง 2 คร้ัง 42 รูปที่ 4.10 GUI หนา Manage Application 43 รูปที่ 4.11 GUI หนา Create Application 44 รูปที่ 4.12 GUI หนาแจงเตือน Application มีอยูกอนแลว 44
VI
สารบัญรูป (ตอ) หนา รูปที่ 4.13 GUI หนาแกไขขอมูลใน Application 45 รูปที่ 4.14 GUI ลบ Application 46 รูปที่ 4.15 GUI หนา Config Application 47 รูปที่ 4.16 แสดงคาวันเวลาพรอมทั้งคาขางตนของไฟล Configuration 48 รูปที่ 4.17 บนัทึก Log การแกไขคา Configuration file Application 48
VII
1
บทท่ี 1 บทนํา
1.1 บทนํา
ในปจจุบันสื่ออินเตอรเน็ตมีเน้ือหาสาระ (Content)ท่ีหลากหลายรูปแบบ ท้ัง ขอความ, บทความ,รูปภาพ, เสียงและวีดีโอ ซ่ึงเว็บไซตท่ีใหบริการเน้ือหาสาระประเภทวีดีโอมีมาก การแขงขันทางธรุกิจเว็บไซตประเภทนี้มีสูง ซ่ึง บริษัท BBTV New Media จํากัด ก็เปนผูใหบริการเว็บไซต ประเภทวีดิโอ โดยมีเนื้อหาสาระที่เปนรายการตางๆ ของสถานีโทรทัศสสีกองทัพบกชอง 7 และมีเคร่ืองเซิฟเวอร (Server) ท่ีทําหนาท่ีคอยใหบริการเผยแพรวีดีโอ (Video Streaming) จํานวนหลายเครื่อง ซ่ึงการจะบริหารจัดการคาคอนฟกกูเรชั่น (Configuration) วีดิทัศนเซิฟเวอรทุกเครื่องใหตรงกันท้ังหมด เปนไปดวยความยาก เพราะจะตองรีโมท (Remote) เขาไปคอนฟกทีละเครื่อง และเครื่องเซิฟเวอรแตละเครื่องก็จะมีการคอนฟกหลายแอพพลิเคช่ัน (Application) เชน วีดีโอออนดีมาน (Video On Demand) และ ถายทอดสด (Live Streaming) ก็จะตอง คอนฟกแตกตางกัน หากมีการแกไขคาคอนฟกกูเรช่ันแลวเกิดขอผิดพลาด ก็จะทําให เครื่องเซิฟเวอรท่ีใหบริการเผยแพรวีดีโอนั้นไมสามารถใหบริการเผยแพรวีดีโอได 1.2 ปญหาและแรงจูงใจ
การรีโมทเขาไปท่ีเซิฟเวอรทีละเคร่ืองเพ่ือคอนฟกกูเรช่ันวีดีโอสตรีมม่ิงเซิฟเวอร ใหเหมือนกันทุกเครื่องและ ใหมีความพรอมใชงานตลอดเวลานั้น เปนไปไดคอยขางลําบาก หากแกไขผิดก็สงผลใหเซิฟเวอรเคร่ืองนั้นไมพรอมใชงานได ตองตรวจสอบคาคอนฟกในทุกเคร่ืองวาผิดพลาดตรงไหน ทําใหเสียเวลาเปนอยางมากและหากตรวจสอบไมดีแลวทําใหเกิดวีดีโอสตรีมม่ิงเซิฟเวอรไมสามารถทํางานได จะเกิดเปนดาวนไทม (Downtime) ท่ีนานข้ึนไปอีก สงผลใหเกิดผลกระทบกันธุรกิจของบริษัทในมูลคาท่ีสูงมาก
ถาหากมีการจัดการคาคอนฟกกูเรชั่นเซิฟเวอรใหสามารถ จัดการไดจากท่ีเครื่องเซิฟเวอรเครื่องเดียว ครั้งเดียวแลวกระจายไฟลคอนฟกกูเรช่ันไปยังเคร่ือง เซิฟเวอรทุกเครื่องพรอมๆกัน และมีการควบคุมเวอรชั่นของไฟลคอนฟกกูเรชั่นไว สามารถสั่งยอนกลับไปใชเวอรช่ันเกาไดทันที ก็จะสงผลให ลด ดาวนไทมได รวมถึงลดระยะเวลาในการทํางาน และ ลดความซับซอนของงานลงไปไดเยอะ อีกท้ังยังรองรับการเพ่ิมเครื่องเซิฟเวอรในอนาคตก็เปนไปไดงายข้ึน
จากปญหาดังกลาว จึงไดมีการศึกษาเพ่ือนําระบบเวอรช่ันคอนโทลเขามาประยุกตใชงาน กับการจัดการไฟลคอนฟกกูเรช่ันวีดีโอสตรีมม่ิงเซิฟเวอรซ่ึงคงไวความถูกตองครบถวนของขอมูล (Integrity) เพ่ือใหวีดีโอสตรีมม่ิงเซิฟเวอรมีความพรอมใชงานอยูตลอดเวลา (Availability)
2
ซ่ึงถาหากวาการปรับแตงคาคอนฟกกูเรชั่นวีดีโอสตรีมมิ่งเซิฟเวอรมีขอผิดพลาด ก็สามารถสั่งยอนกลับไปใชคาเดิมไดอยางรวดเร็ว ทําใหลดผลท่ีจะกระทบกับธุรกิจของบริษัทลงไปไดมาก
1.3 วัตถุประสงค
1.3.1 ศึกษาการระบบจัดการเวอรช่ันคอนโทลดวยโปรแกรม Git 1.3.2 ศึกษาโปรโตคอล SSH เพ่ือรีโมทเขาไปยังเคร่ืองเซิฟเวอร และ scp เพ่ือก็อปป
ไฟลขามเครื่องเซิฟเวอรในระบบปฏิบัติการลีนุกซ 1.3.3 ศึกษาการเขียนโปรแกรมดวย bash shell เพ่ือสั่งการควบคุมการกระจายคา
คอนฟกกูเรช่ันไปยังเคร่ืองเซิฟเวอรทุกๆเครื่อง 1.3.4 เขียนโปรแกรม Graphic User Interface ใหยูสเซอรใชคอนฟกกูเรชั่นโปรแกรม
WowzaMediaServer ไดสะดวก 1.3.5 ทดสอบการทํางานและสรุปผล 1.3.6 จัดทําเอกสารโครงงาน
1.4 ขอบเขตของระบบ
1.4.1 ทําโปรแกรม GUI ใหยูสเซอรใช Configuration Application ไดอยางงาย สะดวก
1.4.2 โปรแกรม GUI สามารถเพิ่ม ลบ แกไข Member โดยจํากัดสิทธิ์ใหเฉพาะ Admin เทาน้ัน
1.4.3 โปรแกรม GUI กําหนดสิทธิ์ให Member สามารถเปล่ียนแปลง Password ของตัวเองได
1.4.4 โปรแกรม GUI สามารถเพ่ิม ลบ แกไข Application ได 1.4.5 โปรแกรม GUI สามารถแกไข Configuration Application ได 1.4.6 โปรแกรม GUI สามารถ Deploy Configuration Application File ไปยังเครื่อง
WowzaMediaServer ทุกเคร่ืองไดแบบอัตโนมัติ
1.5 ประโยชนท่ีคาดวาจะไดรับ 1.5.1 ความรูความเขาใจเก่ียวกับรูปแบบการทํางานของซอสโคดเวอรช่ันคอนโทล 1.5.2 ลดภาระ และความซับซอนในการทํางาน ท่ีจะตองรีโมทเขาไปคอนฟกกูเรช่ันท่ี
เซิฟเวอรท่ีทําหนาท่ีเหมือนกัน หลายๆ เครื่อง
3
1.5.3 ลดดาวนไทมท่ีอาจจะเกิดข้ึนจากการคอนฟกเซิฟเวอรผิด หรือคอนฟกไมเหมือนกันทุกเครื่อง ทําใหทํางานแตกตางกัน
1.5.4 มีการแบงไฟลคอนฟกออกเปนเวอรชั่น สามารถเรียกใชยอนหลังไดทันที และถือเปนการแบ็คอัพไฟลคอนฟกกูเรช่ันไปในตัว
1.5.5 รองรับการขยายตัวของเว็บไซตืของบริษัทใหเปนไปไดงายย่ิงข้ึน
2.1 การควบ Vers
หลายๆ ไฟล
จากท่ีจุดดําเนินกVersion1 ก็ย
ระบSystem แบบSystem แบบออกไป ท้ังข
บคุมการปรั
sion Coล ซึ่งสามารถ
รูปท่ี 2.1 จะการปจจุบันขยังคงถูกเก็บไบ Versionบรวมศูนย (Cบกระจายศูนอดีและขอเสี
พื้นฐา
ับปรุงแกไข
ntrol เปนรท่ีจะเรียกเวอ
รูปที่ 2.1 ร
พบวา ภายใของแฟมขอมูไว สามารถเรี
n Control หCentralized นย (Distributeสย แตะจะยังค
บททีานและทฤษ
(Version C
ระบบท่ีจัดเก็อรช่ันใด เวอร
ระบบ version
ในเครื่องคอมมูลนี้คือ Versรียกยอนกลับหลักๆ จะมีอVersion Coed Version คงเก็บไฟลข
ที่ 2 ษฎีที่เกี่ยวข
ontrol) [1]
ก็บการเปล่ียนรชั่นหนึ่ง ขอ
n control แบ
มพิวเตอรจะมีion 3 แลบมาดู หรือแกยู 2 แบบดวontrol SysteControl Sysอมูลเปน Ver
ของ
นแปลงท่ีเกิดงไฟลนั่นกลับ
บบ local
มีรุนของแฟมะการแกไขในกไข เม่ือไรก็ยกันคือ ระบ
ems) และ ระstems) แตละrsion เหมือน
ดข้ึนกับไฟลหบมาดูเม่ือไรก็
ขอมูล 3 Verน Version สามารถทําไบบ Versionะบบ Versionะแบบมีขอแตนกัน
4
หนึ่ง หรือก็ได
rsion โดย2 และ
ด n cornel n Control ตกตางกัน
5
2.2.1 ระบบ Version Control System แบบรวมศูนย (Centralized Version Control Systems)
หลักการทํางานของระบบ Version Control System แบบรวมศูนย คือจะเก็บไฟลท้ังหมดไวในท่ีเดียวคือเคร่ืองเซิฟเวอร และผูใชหลายๆ คนสามารถตอเขามาเพ่ือดึงไฟลจากเครื่องเซิฟเวอรไปแกไขได ระบบการทํางานแบบรวมศูนยน้ีไดถูกนํามาใชเปนเวลาหลายป
ระบบรวมศูนยมีขอดีกวาระบบ Local หลายๆ ดาน เชนทุกคนสามารถรูไดวา คนอ่ืนในโปรเจ็คกําลังทําอะไร ผูควบคุมระบบสามารถควมคุมไดอยางละเอียดวา ใครสามารถแกไขอะไรไดบาง การจัดการแบบรวมศูนยในท่ีเดียวทําไดงายกวาการจัดการฐานขอมูลในเครื่อง client แตละเครื่องเยอะ
รูปท่ี 2.2 ระบบ version control แบบรวมศูนย
จากรูปท่ี 2.2 จะพบวาระบบนี้มีจุดออนตรงท่ีการรวมศูนยคือ ถาเครื่องเซิฟเวอรืลม ก็ไมมีใครสามารถดู แกไข ไฟลไดเลย และถาฮารดดิสของเครื่องเซิฟเวอรพัง เสียหายข้ึนมา แลวไมมีการแบ็คอัพไว ขอมูลท้ังหมดก็จะศูนยหายไปเลย
2.2.2 ระบบ Version Control System แบบกระจายศูนย (Distributed Version Control Systems)
6
หลักการทํางานของระบบ Version Control System แบบกระจายศูนยคือไฟลทุกไฟลจะกระจายอยูท่ีเครื่อง Client และอยูท่ีเครื่องเซิฟเวอรดวยนั้นเอง ซ่ึงถาหากวาเซิฟเวอรเกิดลมไป ก็ยังจะสามารถทํางานตอไปได และเมื่อเซิฟเวอรพรอมใชงานอีกที ก็สามารถอัพไฟลเขาไปยังเซิฟเวอรตอไดทันที
รูปที่ 2.3 ระบบ Version Control แบบกระจายศูนย
จากรูปท่ี 2.3 ระบบเหลาน้ีจะทํางานกับ เซิฟเวอรท่ีเก็บไฟล หลายๆ ท่ีไดเปนอยางดี ทําใหสามารถทํางานกับคนหลายๆกลุม ซ่ึงทํางานในรูปแบบตางกันในโปรเจคเดียวกันไดงาย เน่ืองจากระบบเหลาน้ีสนับสนุนการทํางานไดหลากหลายรูปแบบ ซ่ึงอาจจะทําไดยากในระบบแบบรวมศูนย ชื่อโปรแกรมท่ีใชระบบ Version Control แบบกระจายศูนยมีหลากหลายย่ีหอ เชน Git, Mercurial, Bazaar หรือ Darcs
7
2.2 Git ข้ันพ้ืนฐาน Git ถูกสรางข้ึนเม่ือป 2005 โดยไลนัส ทอรวอลด ผูสรางลีนุกซ โดยพัฒนาจาก
ประสบการณท่ีมีอยูระหวางการใชงาน BitKeeper โดยมีวัตถุประสงคดังนี้ ความรวดเรว็ในการทํางาน ดีไซตท่ีเรียบงาย สนับสนุนการทํางานหลายทางพรอมๆ กัน (เชนม ีbranch เปนพันๆ) แยกศูนยเก็บขอมูลจากศูนยกลางศูนยเดียว สามารถรองรับโปรเจคขนาดใหญไดเปนอยางดี เชน ลีนุกซเคอรเนล
2.2.1 หลักการทํางานของ Git [2] เม่ือมีการแกไขไฟลตางๆ เกิดข้ึน ระบบอ่ืนๆ จะมองขอมูลในรูปแบบของไฟลและการ
แกไขตางๆ ท่ีเกิดข้ึนกับไฟลแตละไฟล ดังรูป
รูปที่ 2.4 การเก็บขอมูลโดยอางอิงกับการแกไขท่ีเกิดข้ึนกับไฟล
จากรูปท่ี 2.4 การเก็บขอมูลโดยอางอิงกับการแกไขท่ีเกิดกับไฟลจะตางจาก Git ท่ีจะเก็บขอมูลในลักษณะเปนเสมือนภาพถาย (Snapshot) ของระบบไฟลขนาดเล็กๆ ทุกครั้งท่ีมีการ commit หรือบันทึกสถานะของโปรเจคลงไปใน Git มันจะทําการถายภาพของไฟลท้ังหมดในตอนนั้นและบันทึกการอางอิงไปยัง snapshot น้ัน เพ่ือใหการจัดเก็บน้ันมีประสิทธิภาพ ถาไฟลใดท่ีไมไดมีการเปล่ียนแปลง Git ก็จะไมบันทึกไฟลน้ันอีกคร้ัง เพียงแตจะทําการเชื่อมโยงไปยังไฟลเดิมท่ีเคยถูกบันทึกเอาไวอยูแลว
8
รูปท่ี 2.5 การเก็บขอมูลแบบ Snapshot
จากรูปท่ี 2.5 การทํางานสวนใหญของ Git จะใชทรัพยากรในเครื่องลูกขายเทาน้ัน ปกติจะไมมีขอมูลใดๆ ท่ีจําเปนตองใชจากคอมพิวเตอรเครื่องอ่ืนๆ ในเน็ตเวิรก ซ่ึงตางจากระบบอ่ืนๆ ท่ีตองใชงานระบบเน็ตเวิรกในการสงขอมูลจํานวนมาก จึงทําให Git ทํางานไดเร็วกวาระบบอ่ืนๆ มาก และถึงแมวาเคร่ืองเซิฟเวอรท่ีเก็บไฟลจะลม ก็ยังสามารถเรียกดู หรือแกไขไฟลน้ันได
ทุกอยางท่ี Git ทําการบันทึกเอาไว จะถูกทําการ Checksum แลวนํามาใชเปนตัวอางอิง น่ันทําใหไฟล หรือ ไดเรคทอรี่ใดถูกแกไขแลว Git จะไมตรวจพบ กลไกท่ี Git ใชในการทํา Checksum คือการแฮช (hash) แบบ SHA-1 ซ่ึงผลลัพธจะไดออกมาเปนตัวอักษร 40 ตัวท่ีแทนเลขฐานสิบหก (0-9 และ a-f) จากการคํานวณเนื้อหาในไฟลหรือโครงสรางของไดเร็คทอรี่ของ Git ตัวอยางเชน
24b9da6552252987aa493b52f8696cd6d3b00373 จะเห็นไดวาผลของการแฮชเหลาน้ีอยูในทุกท่ีใน Git เพราะจะถูกใชบอยครั้ง ซ่ึงจริงๆ
แลว Git ไมไดเก็บบันทึกขอมูลทุกอยางตามชื่อไฟล แตเก็บในฐานขอมูลของ Git แลวสามารถอางถึงดวยคาแฮชของขอมูลไฟล
2.2.2 วัฏจักรการเปลี่ยนแปลงของแฟมขอมูลบนซอฟตแวร Git Version Control Git จะมีสถานะของไฟลอยู 3 สถานะคือ ยืนยันแลว (committed), ถูกแกไข (modified)
และอยูในข้ันตอน staged ซ่ึง Committed หมายถึงขอมูลท่ีถูกบันทึกเรียบรอยแลวในฐานขอมูลในเครื่องคอมพิวเตอร modified หมายถึงไฟลไดถูกแกไขแตยังไมไดยืนยันลงในฐานขอมูล สวน Staged หมายถึงไดทําเคร่ืองหมายไวท่ีไฟลท่ีถูกแกไขในเวอรช่ันปจจุบัน เพื่อรอการ commit ใน snapshot ถัดไป
9
รูปที่ 2.6 แสดงองคประกอบพ้ืนท่ีของ Git
จากรูปท่ี 2.6 จะเห็นวา Git directory เปนท่ีท่ี Git ใชเก็บ metadata และ object ของฐานขอมูลของโปรเจคตางๆ สวนนี้เปนสวนสําคัญท่ีสุดของ Git และเปนสวนท่ีจะถูกคัดลอกออกมาเม่ือมีการ clone คลังขอมูลจากคอมพิวเตอรเครื่องอ่ืนๆ
Working directory เปนเวอรชั่นหนึ่งของไฟลในโปรเจคท่ีถูกดึงออกมาจากฐานขอมูลท่ีถูกบีบอัดไวใน Git directory แลวเก็บไวในดิสกเพ่ือใหนําไปใชหรือเอามาแกไข
Staging area เปนไฟลธรรมดาไฟลนึง โดยท่ัวไปก็อยูใน Git directory ของเคร่ืองคอมพิวเตอรลูกขาย ซ่ึงเก็บขอมูลสวนท่ีคุณจะทําการ commit ในครั้งถัดไป บางคร้ังก็เรียกวาดัชนี (index) แตปกติก็จะเรียกวา staging area
กระบวนการขั้นตอนพ้ืนฐานของ Git มีลักษณะดังนี้ 1) แกไขไฟลใน working directory ภายในเครื่องคอมพิวเตอรลูกขาย 2) แลวทําการ stage ไฟลเหลาน้ันเพ่ือใหมีการใส snapshot ลงไปใน staging area
ของเครื่องคอมพิวเตอรลูกขาย 3) ทําการยืนยันซึ่งนําไฟลท่ีอยูใน staging area ไปเก็บอยางถาวรใน Git Directory เมื่อไฟลอยูใน Git directory มันจะถือวาเปนสถานะ committed ถาไฟลถูกแกไขแลวถูก
เพ่ิมลงใน staged ก็จะเปนสถานะ modified
10
2.2.3 การตั้งคาการใชงาน Git [3] เริ่มตนการใชงาน Git ตองระบุตัวตนผูใชกอน โดยสั่งดังนี ้
รูปท่ี 2.7 ระบุตัวตนผูใชงาน Git
จากรูปท่ี 2.7 เปนการระบุตัวตนผูใชงาน Git คําสั่งสรางแหลงเก็บขอมูลของแฟมขอมูล ใชคําสั่งดังนี ้
รูปท่ี 2.8 สรางแหลงเก็บขอมูลของ Git
จากรูปท่ี 2.8 เปนการสรางแหลงเก็บขอมูลของ Git การนําขอมูจากเครื่องเซิฟเวอรมายังเครื่องลูกขาย สั่งดังนี ้
รูปท่ี 2.9 นําขอมูลจากเครื่องเซิฟเวอรมายังเคร่ืองลูกขาย
จากรูปท่ี 2.9 เปนการนําขอมูลจากเครื่องเซิฟเวอรมายังเคร่ืองลูกขาย เมื่อมีไฟลขอมูลท่ีตองการอัพไปยังเครื่องเซิฟเวอร จะตองทําการยืนยันการแกไขซะกอน
โดยใชคําสั่ง ดังตอไปน้ี
11
รูปท่ี 2.10 ยืนยันการแกไขไฟล
จากรูปท่ี 2.10 เปนการยืนยันการแกไขไฟล จากนั้นจึงอัพไปยังเคร่ืองเซิฟเวอร โดยใชคําสั่ง ดังนี ้
รูปท่ี 2.11 อัพไฟลไปยังเซิฟเวอร
จากรูปท่ี 2.11 เปนการอัพไฟลไปยังเซิฟเวอร เม่ือ Git มีการเก็บบันทึกการยืนยัน และอัพไฟลไปยังเซิฟเวอรแลว เราสามารถ
ตรวจสอบดูการบันทึกน้ันๆ ได โดยใชคําส่ังดังนี้
รูปที่ 2.12 ดบัูนทึกการยืนยันการแกไขไฟล
จากรูปท่ี 2.12 เปนการสั่งดูบันทึกการยืนยันการแกไขไฟล
หากมีการแกไขไฟลแตยังไมไดยืนยันการแกไข Git จะรูทันทีวามีการเปล่ียน แปลงเกิดข้ึน และเม่ือส่ังดูสถานะ Git จะฟองวามีการแกไขและบอกวาใหทําการยืนยันการแกไขไฟล ดังตัวอยาง
12
รูปที่ 2.13 การแสดงสถานะของ Git
จากรูปท่ี 2.13 เปนการแสดงสถานะของ Git เมื่อตองการยอนกลับไปใชไฟลเวอรช่ันกอนจะเปล่ียนแปลง ใหดูท่ี Git บันทึกไว นําคา
hash SHA-1 มาใสกับคําส่ัง reset ดังตัวอยาง
รูปท่ี 2.14 ยอนกลับไปใชไฟลเวอรชั่นกอนหนา
จากรูปท่ี 2.14 จะเห็นวาเม่ือใชคําสั่ง reset โดยระบุคา hash SHA-1 แลว Git จะ
ยอนกลับไปใชเวอรช่ันกอนหนาให
2.2.
master มาใหbranch ไดconfiguratioไวเซิฟเวอรไ
เห็นวาเปนก
จากmaster, nicเวอรช่ัน และพัฒนาไดถึงกับเซิฟเวอร
4 Git BranGit Bra
ห ในกรณีท่ีต เชน bran
on จนถึงจุดทีได
รูปท
จากรูป 2ารแกไขตาม
รปู
กรูปท่ี 2.16 ce_feature, ะเพ่ือใหจํางาจุดท่ีนาพอใจรจริง ตอไปได
nching [3] anch คือ กิ่งตองการจะมพีืch pre-pro
ท่ีพึงพอใจแลว
ที่ 2.15 แสดง
2.15 แสดง fมปกติท่ัวไป คื
ปที่ 2.16 แสด
จะเห็นวากาvery_nice_
าย จึงไดตั้งชืจแลว ก็สามาด
งการสาขาท่ีเพ้ืนท่ีเก็บไฟลoduction ไวว ก็สามารถ
ง flow การแก
flow การแกไคือไฟลเดียว
ดง flow การแ
ารแกไขไฟลเ_feature ซึ่งตช่ือ branch ารถ merge
เพ่ิมข้ึนมาจาลขอมูลเพิ่มจวสําหรับเก็merge รวม
กไขไฟลแบบ
ไขไฟลแบบที แกเปน vers
แกไขไฟลแบ
เดียวกัน สามตามรูปแลว สตามจุดประรวมเขากับ
าก โดยปกติคาก branch mบไฟล ท่ีใชทเขากับ bran
บไมมี branch
ท่ีไมมี barnchsion ไปเรื่อย
บบมี branch
มารถแบงไดสามารถแบงกะสงคของการbranch ma
คาเริ่มตนของmaster ก็สาทดสอบ เม่ือch master แ
h
h ธรรมดาท่ัวๆ
เปน 3 braกันไปพัฒนารพัฒนาไฟลนster เพ่ือนํา
13
ง Git จะมี มารถเพ่ิม อทดสอบ แลวอัพไป
วๆ ไป จะ
anch คือ ไฟล ตามนั้นๆ เมื่อาไปใชงาน
14
รูปท่ี 2.17 แสดง branch default ท่ี Git มีมาให
จากรูปท่ี 2.17 เปนคําสั่งแสดง branch ซ่ึงคาเริ่มตน Git จะมี branch master มาใหหากตองการสราง branch เพิ่มเอง ก็สามารถทําได โดยสั่งดังตัวอยางตอไปน้ี
รูปท่ี 2.18 การสราง branch เพ่ิม
จากรูปท่ี 2.18 เปนการสราง branch เพ่ิมข้ึนมา 2 branch คือชื่อวา vdo-ondem และ live-streaming พอสรางเสร็จก็จะมีช่ือ branch ปรากฏข้ึนมา แตสังเกตเครื่องหมายดอกจันวายังอยูท่ี branch master ซ่ืงหมายความวายังคงทํางานอยูท่ี branch master การจะเปล่ียนไปทํางานบน branch อ่ืนๆ สามารถทําไดโดยใชคําสั่งตามตัวอยางดังนี้
รูปท่ี 2.19 เปล่ียนไปทํางานท่ี branch อ่ืน
15
จากรูปท่ี 2.19 เม่ือสั่งเปล่ียนไปทํางานท่ี branch vdo-ondemand แลว ลองส่ังแสดง branch ท่ีมีอีกครั้งจะพบวา เครื่องหมายดอกจันยายไปอยูท่ี branch vdo-ondemand แลว
2.2.5 Git Server [4] Git Server มีมากมายหลายย่ีหอใหเลือกใช แตท่ีเปนท่ียอดนิยม และที่ผูจัดทําโปรเจค
เลือกใชคือ โปรแกรม Gitolite ซ่ึงรองรับการทํางานท้ังหมดตามท่ีไดกลาวมาแลว Protocol ท่ีใชติดตอกันระหวาง Git Server และ Git client น้ันมีหลายชองทางเชน Local Protocol, SSH (Secure Shell), http/https, Git protocol ซ่ึงแตละ protocol ก็มีขอดีขอเสียแตกตางกันไป ดังนี้
1) Local Protocol ทํางานดวยระบบไฟล ซ่ึงก็คือทํางานบนเครื่องตัวมันเอง หาก
ตองการรับสงไฟลขามเครื่อง ตองอาศัยระบบเอ็นเอฟเอส (NFS) เขาชวย
2) SSH Protocol ทํางานบน Protocol SSH ตามชื่อของมัน มีความปลอดภัยสูงในการ
รับสงขอมูลตามหลักการทํางานของ SSH อยูแลว การใชงาน Git รวมกับ SSH protocol น้ีมี
ขอดีกวา protocol อ่ืนๆ หลายอยาง ไมวาจะเปนเรื่อง permission ของไฟลท่ีอางอิงกับ
permission user ของระบบ Linux โดยตรง การจะทรานเฟอรไฟลกันจะตองมีการ
authenticated กันทุกครั้ง แตหากตองการใชงานแบบไมมีการ authenticated จะไมสามารถทํา
ได เพราะพ้ืนฐานของ SSH อยูแลว
3) Git Protocol เปน protocol ของ Git โดยเฉพาะ ทํางานบน TCP Port 9418 ขอดี
คือเปนโปรแกรมท่ีมีขนาดเล็ก ทํางานไดรวดเร็ว และสามารถใหบุคคลอ่ืนๆ ซ่ึงไมใชเจาของไฟล
เทาน้ันแกไขไฟลได แตขอเสียก็คือ ไมมีการ authenticated หากตองใชงานกับไฟลท่ีตองการ
ความปลอดภัยจึงไมเหมาะสม
4) http/https Protocol เปน protocol ตัวลาสุดท่ี Git พัฒนาใหสามารถทํางานรวมดวย
ได หลักการทํางานคลายๆกับ http ท่ัวๆ ไป ขอดีคือใชงานงาย ใครก็สามารถเอาขอมูลเผยแพร
ไปใชงานไดเลย หากตองการความปลอดภัยระหวางการรับสงขอมูล ก็สามารถใช SSL เขามา
ชวยเสริมได และไฟรวอลลท่ัวๆไป จะอนุญาติใหใชงาน port 80, 443 ไดอยูแลว แตขอเสียคือ
ใชทรัพยากรทราฟฟกจํานวนคอนขางมากเมื่อเทียบกับ protocol อ่ืนๆ และ permission ของ
ไฟลจะเปนแบบ read-only แตจะแกไขไดก็เฉพาะผูเปนเจาของไฟลน้ันเทาน้ัน
ในท่ีน้ีผูจัดทํา เลิอกใช SSH protocol เพราะมีความปลอดภัยสูงในการรับสงขอมูล และเหมาะสมกับลักษณะงานที่ออกแบบไว เพราะไมตองการจะแชรไฟล Configuration ใหกับบุคคลอ่ืน ท่ีอยูภายนอกองคกร
16
2.3 SSH (Secure Shell) [5]
SSH เปน Protocol ท่ีใชเช่ือมตอ สื่อสารกันระหวางเคร่ืองคอมพิวเตอรบนระบบเครือขาย ทํางานผาน Port 22 การติดตอสื่อสารท้ังหมดจะมีการเขารหัสลับขอมูล (Encryption) ปจจุบันอยูท่ีเวอรชั่น 2 ลักษณะการทํางานจะเปน Client-Server โดยเม่ือมีการเช่ือตอโดย SSH ระบบตอง authentication กอน เพ่ือระบุตัวตนของ client เม่ือผานแลว ก็ใชงานได โดย Encryption โดย authentication มีแบบ RSA และ DSA และ Encryption ใชวิธี IDEA, DES (Data Encryption Standard) และ Blowfish
2.3.1 หลักการทํางานของ RSA
รูปท่ี 2.20 หลักการทํางานของ RSA
จากรูปท่ี 2.20 เปนหลักการทํางานของ RSA 1) เม่ือ Client SSH ไปยัง Server แลว Client จะทําการรองขอ Public Key ของ
Server จากเคร่ือง Server เคร่ือง Server ก็จะสงมาให 2) Client ทําการ encrypt ขอมูลการ authentication กับ Public Key ท่ีไดรับมาจาก
เครื่อง Server 3) Client สงขอมูลท่ี Encryption แลว คือ Cipher text สงไปให เครื่อง Server 4) เครื่อง Server เม่ือไดรับ Cipher text แลว ก็ทําการ Decrypt โดยใช Private Key
17
2.3.2 หลักการทํางานของ DSA 1) เม่ือผูใชตองการสงขอมูลไปยังผูรับ ขอมูลนั้นจะถูกนําไปเขาฟงกชั่นทางคณิตสตร
เรียกวา แฮช จะได เมสเซสไดเจสต (Message Digest)
รูปท่ี 2.21 การสงขอมูลไปแฮช
จากรูปท่ี 2.21 เปนการสงขอมูลไปแฮช 2) จากน้ันนําเมสเซสไดเจสตมาเขารหัสดวยกุญแจสวนตัวของผูสงจะไดลายเซ็นต
ดิจิตอล
รูปท่ี 2.22 การเขารหัสเมสเซสไดเจสตดวยกุญแจสวนตัวเพ่ือเปนการลงลายเซ็น
จากรูปท่ี 2.22 เปนการเขารหัสเมสเซสไดเจสตดวยกุญแจสวนตัวเพ่ือเปนการลงลายเซ็น
3) ผูรับจะนําลายเซ็นดิจิตอลมาแฮชจะไดเมสเซสไดเจสต และนําลายเซ็นดิจิตอลมาถอดรหัสดวยกุญแจสาธารณะของผูสง จะไดเมสเซสไดเจสต แลวนําเมสเซสไดเจสตท่ีไดท้ัง 2 อันมาเปรียบเทียบกัน ถาตรงกัน เปนการยืนยันวา ลายเซ็นตดิจิตอลนั้นมาจากผูสงจริง และถือไดวา ขอมูลท่ีสงมาน้ันถูกตอง
18
รูปที่ 2.23 ข้ันตอนการเปรียบเทียบความถูกตอง
จากรูปท่ี 2.23 เปนข้ันตอนการเปรียบเทียบความถูกตอง
2.4 Shell Programming Language [6]
Shell คือโปรแกรมหนึ่งบนระบบ UNIX ท่ีทําหนาท่ีเปน interface ระหวาง UNIX กับ user โดย user สามารถสั่งงาน UNIX ไดผานทาง shell เทาน้ัน
Shell Programming Language คือ การนําคําสั่งตางๆ ของ shell มาเขียนเปนโปรแกรมเก็บเปนไฟลไวได เรียกวา shell script
รูปท่ี 2.24 โครงสรางพ้ืนฐานการทํางานของ UNIX
จากรูปท่ี 2.24 เปนโครงสรางพ้ืนฐานการทํางานของ UNIX
19
2.4.1 Shell ท่ีนิยมใชในปจจุบัน 1) Bourne shell (/bin/sh) เปน shell ยุคแรกๆ ท่ีมีกันอยางแพรหลายมีกําหนด
โครงสรางภาษาคลายกับภาษาอัลกอ เปนมาตราฐานของ shell ท่ีมีใน UNIX ทุกตัว สามารถยายไปใชกับ UNIX ระบบอื่นโดยไมตองแกไขอะไรเลยไดอีกดวย
2) C shell (/bin/csh) เปน shell ท่ีพัฒนาข้ึนหลังจาก Bourne shell มีรูปแบบคลายภาษา C มีฟงกช่ันการทํางานท่ีดีและสะดวก สามารถควบคุม Bourne shell และยังสามารถเรียกใชคําสั่งท่ีส่ังไปแลวได
3) Korn shell (/bin/ksh) เปน shell ท่ีพัฒนามาจาก Bourne shell และ C shell สามารถใชฟงกช่ันของ Bourne shell ไดทุกอยาง สามารถเรียกใชคําส่ังท่ีใชไปแลวได
4) Bourne again shell (/bin/bash) เปนการนํา Bourne shell มาพัฒนาใหม สามาทํางานแบบ line editor ได และเพิ่มประสิทธิภาพในการทํางานอีกหลายอยาง bash shell ไมใชมาตราฐาน shell ของ UNIX แตเปนมาตราฐาน shell ใน Linux ในปจจุบัน
รูปท่ี 2.25 ตัวอยาง bash shell
จากรูปท่ี 2.25 บรรทัดท่ี 1 เปนการประกาศใหระบบรูวา เปน bash shell บรรทัดท่ี 2 เปนการประกาศตัวแปรช่ือ TXT มีขอมูลคือ Hello World ! และบรรทัดท่ี 3 เปนคําสั่งใหแสดงผลคาในตัวแปร TXT ออกมาหนาจอ
รูปท่ี 2.26 สั่งไฟล bash shell ใหทํางาน
จากรูปท่ี 2.26 เปนชุดคําส่ังใหไฟล bash shell ทํางานได ลําดับคําสั่งดังนี้
20
1) สั่งดูวามีไฟลอะไรบาง ผลท่ีไดจะมีไฟล first_shell.sh ท่ีเพ่ิงเขียนข้ึนมาจะเห็นวา permission ของไฟลจะไมสามารถ execute ได ดังนั้นจึงสั่งรันไมได
2) สั่งใหไฟล first_shell.sh สามารถexecute ได ตองใชคําส่ังchmod +x first_shell.sh 3) สั่งดูไฟล first_shell.sh ใหมอีกคร้ัง จะเห็นวาสามารถ execute ไดแลว 4) สั่งรันไฟล first_shell.sh จะมีการแสดงผลคําวา “Hello World !” ออกมาทางหนาจอ
ในบ
deploymentGitolite เปน
3.1 Diagram
บทนี้จะกลาวถึt configuratน Git Server
m การทํางาน
รูปที่ 3.1
ถึงข้ึนตอนขอion file and สวนการทําง
นของระบบ
1 การออกแบ
บททีการดําเนิ
องการออกแd Code Veงานหลักๆ แบ
บบ Diagram
ที่ 3 นนิงาน
บบและพัฒนersion Contบงออกเปน 3
ภาพรวมกา
นาระบบ Bastrol using G3 สวน ซึ่งจะ
รทํางานของร
sh Shell Git ซึ่งจะใชโไดอธิบายดัง
ระบบ
21
Scripting โปรแกรม งตอไปน้ี
22
จากรูปท่ี 3.1 อธิบายไดดังนี้ หมายเลข 1 เม่ือ Client configuration file ผานหนา GUI เสร็จแลวกด save โปรแกรม
จะเรียกไฟล shell script ท่ีเขียนไวใหยืนยัน (commit) การเปล่ียนแปลงไฟลคอนฟกกูเรช่ัน หมายเลข 2 เม่ือยืนยันการแกไขเสร็จแลว ทําการอัพไฟลขอมูลไปยังเซิฟเวอร (push) หมายเลข 3 เม่ือเซิฟเวอรไดรับไฟล ก็จะนําไปเก็บไวในพืนท่ีเก็บไฟลขอมูล (repository)
และไปอานไฟล hooks/post-receive ซ่ึงขางในเปนไฟล bash shell ซ่ึงเขียนไวให เก็บ log ไววามีการ push เขามายังเคร่ืองเซิฟเวอร จากน้ันสั่ง sudo เปน root และ SSH ไปเครื่อง WowzaMediaServer แตละเครื่อง และเรียก execute bash shell ไฟลอีกไฟลหน่ึงท่ีเขียนไว
หมายเลข 4 เม่ือ SSH ไปท่ีเครื่อง WowzaMediaServer โดยใชวิธีทํา Key Pair File ของ user น้ันไปไวท่ีเครื่อง Server แตละเคร่ืองไวกอนแลว เพราะท่ีจะไดไมตองให Server เหลาน้ันถามพาสเวิรด
หมายเลข 5 เม่ือ SSH เขามาไดแลว ก็เรียก execute ไฟล bash shell ท่ีเขียนไว ส่ังให โหลดไฟลท่ีมีการอัพเดตรในเซิฟเวอรลงมา (pull) ยังเคร่ือง พรอมท้ังเก็บ log ระหวาง pull ไวดวย
แตการจะให WowzaMediaServer อานไฟล Configuration ใหมน้ันจําเปนจะตอง restart Service และเพ่ือความปลอดภัย ผูจัดทําโครงงานจึงไมไดเขียนโปรแกรมใหมีการ restart Service แตจะใหใชวิธี SSH เปน root ดวยตัวเองเขาไป restart Service เทาน้ัน
3.2 การ
product
แลวสั่งรั
รออกแบบกา
3.2.1 การออ
รูป
จากรูปท่ี 3.21) 2)
ion แลวส่ังรัน3)
ันไฟล deply
ารทํางานขอ
อกแบบ Flow
ปที่ 3.2 การอ
2 อธิบายไดดัเม่ือเริ่มโปรแตรวจสอบวานไฟล deployตรวจสอบวา
ys.sh แลวจบ
องระบบสวน
wchart การทํ
ออกแบบ Flow
ดังนี้ แกรมจะประกา branch ใช y.sh แลวจบาถาเปน braการทํางาน
นของ Bash
างานของไฟ
wchart การท
กาศตวัแปรตาpre-productการทํางาน anch master
Shell Scrip
ล post-rece
ทํางานของไฟ
างๆ เพื่อใชเtion หรือไม
r หรือไม ถาใ
pts
ive
ฟล post-rece
ก็บ log ม ถาใชจะ ss
ใชจะ ssh ไป
eive
sh ไปเครื่อง p
ปเครื่อง prod
23
pre-
uction
product
แลวสั่งp
3.2.2 การออ
รู
จากรูปท่ี 31) 2)
ion แลวส่ัง p3)
ull เพ่ือโหลด
อกแบบ Flow
รูปที่ 3.3 การ
3.3 อธิบายไดเม่ือเริ่มโปรแตรวจสอบวา
pull เพือ่โหลดตรวจสอบวาดคา config ใ
wchart การทํ
รออกแบบ Flo
ดดงันี้ แกรมจะประกา branch ใช ดคา config ใาถาเปน braใหมแลวจบกา
างานของไฟ
owchart การ
กาศตวัแปรตาpre-productใหมแลวจบกanch masterารทํางาน
ล deploy.sh
รทํางานของไ
างๆ เพื่อใชเtion หรือไมการทํางาน r หรือไม ถาใ
h
ไฟล deploy.
ก็บ log ม ถาใชจะ ss
ใชจะ ssh ไป
sh
sh ไปเครื่อง p
ปเครื่อง prod
24
pre-
uction
3.3 การ
หรือไม ถ
ตัวเองได
รออกแบบกา
3.3.1 การ
รูปที ่ จากรูปท่ี 3.4
1) เม่ือ2) เม่ือ
ถาใช จะสาม3) ถาไ
ดหรือ Add P4) เม่ือ
ารทํางานขอ
ออกแบบ Flo
3.4 การออก
4 อธิบายไดดัเริ่มโปรแกรม Login จะมามารถไป Manมใช Admin
Program ไดห Logout แลว
องระบบสวน
owchart การ
กแบบ Flowc
ดังนี้ มจะตรวจสอบาอยูท่ีหนา Mnage Memben จะมี 4 เมนูหรือ สามารถวเปนการจบก
นของ GUI
รทํางานภาพร
chart การทําง
บวา Login Main Displaers ตางๆ ไดนูใหสามารถใถ Edit Configการทํางาน
รวมของโปรแ
งานภาพรวม
หรือยัง ถายัy แลวจะตรด และสามารถใชงานไดคือ g & Deploy
แกรม GUI
มของโปรแกร
ยังจะ Redirecรวจสอบวามีถ Logout ได สามารถ ChFile ได และส
รม GUI
ct มาท่ีหนา Lสิทธิ์เปน ด hange Passwสามารถ Log
25
Login Admin
word ของgout ได
ไมจะมี E
ถาไมจะ
Form C
3.3.2 การ
รูปที่ 3.5 กา
จากรูปท่ี 3.51) 2) 3)
Error Messa4)
มี Error Mes5)
hange Pass
ออกแบบการ
รออกแบบกา
5 อธิบายไดดัเม่ือเขาสูเมนูเม่ือเปล่ียน Pเม่ือ Save ม
age แจงเตือนProcess นี้จssage แจงเตืProcess นี้จ
sword
รทํางานของโ
ารทํางานของ
ดงันี้ นู Change PPassword แมาแลวจะตรวนแลวกลับสูหจะตรวจสอบวตอืนแลวกลับจะทําการ Sa
โปรแกรม GU
งโปรแกรม G
assword จะลวกด Save วจสอบวา Paหนาเปล่ียน Pวา Passwordบสูหนาเปล่ียนave data ลงฐ
UI สวนการเป
GUI สวนการ
มี Form ให จะไปสู Procassword ปPassword แตd ท่ีกรอกเขาน Passwordฐานขอมูล M
ปล่ียนรหัสผา
เปล่ียนรหัสผ
หเปล่ียน Pascess ตอไป จจุบันตรงกับตถาตรงจะไปามาใหมท้ัง แตถาตรงจะ
MEMBERS แ
าน
ผานของตัวเอ
ssword ของต
บท่ีกรอกมาหปสู Process
2 ชองตรงกะไปสุ Procesแลว Redirec
26
อง
ตัวเองได
หรือไม ถาตอไป กันหรือไม ss ตอไป ct ไปหนา
จัดการไ
Save ถAdd Me
Edit เสร็
Process
แลวจะ R
3.3.3 การ
รูปที่ 3
จากรูปท่ี 3.61)
ด 3 อยางคือ2)
ถาหากวา Meember ถาไมซ
3) ร็จก็กด Save
4) s ตอไป
5) Redirect ไปห
ออกแบบการ
3.6 การออกแ
6 อธิบายไดดัเม่ือเขาสูเมนูอ Add Memb
ember มีอยูกซ้ํา ก็จะไปสู Edit Memb
e แลวจะไปสู Delete Mem
เม่ือทําเมนูใดหนา List Me
รทํางานของโ
แบบการทํางา
ดงันี้ นู Manage M
bers จะมี FกอนหนาแลวProcess ตอer จะมี Form Process ตอmber คือจะส
ดเมนูหนึ่งเสร็embers
โปรแกรม GU
านของโปรแก
Members จ
Form ใหกรอกว จะมี Erอไป m ท่ีมีรายละอไป สามารถลบ M
ร็จแลว จะมา
UI สวนการจั
กรม GUI สว
ะมี List Me
กรายละเอียดrror Messag
ะเอียดของ M
Member คนน
าท่ีการ Sav
ัดการสมาชิก
วนการจัดการ
embers ท่ีอยู
ดตางๆ ของ ge แจงเตือน
Member คนน
นั้นๆ ออกจา
ve data ลงฐ
ก
รสมาชิก
กอนแลว โด
Member คนนแลวกลับสูห
นั้นๆ อยูกอน
กระบบได แ
ฐานขอมูล ME
27
ยสามารถ
นนั้น แลว หนา Form
นแลว เม่ือ
แลวจะไปสู
EMBERS
สามารถ
แลว SavForm C
เมื่อ Edi
ไปสู Pro
จะ Redi
3.3.4 การ
รูปที่ 3.7
จากรูปท่ี 3.71)
จัดการได 3 2)
ve ถาหากวาreate Applic
3) t เสร็จก็กด S
4) ocess ตอไป
5) irect ไปหนา
ออกแบบการ
การออกแบบ
7 อธิบายไดดัเม่ือเขาสูเมนูอยางคือ Create Appา Applicatiocation ถาไมซEdit ApplicSave แลวจะDelete App เม่ือทําเมนูใด List Applica
รทํางานของโ
บการทํางาน
ดงันี้ นู Manage
plication จะn มีอยูกอนหซํ้า ก็จะไปสู cation จะมี ไปสู Proces
plication คือจ
ดเมนูหนึ่งเสร็ation
โปรแกรม GU
นของโปรแกร
Application
มี Form ใหหนาแลว จะมีProcess ตอForm ท่ีมีรา
ss ตอไป จะสามารถล
ร็จแลว จะมา
UI สวนการจั
ม GUI สวนก
จะมี List
กรอกรายละมี Error Mอไป ายละเอียดข
บ Applicatio
าท่ีการ Sa
ัดการ Applic
การจัดการ A
Application
เอียดตางๆ ขMessage แจ
อง Applicati
on นั้นๆ ออ
ave data ลงฐ
cation
Application
n ท่ีอยูกอน
ของ Applicaจงเตือนแลวก
on นั้นๆ อยู
อกจากระบบไ
ฐานขอมูล A
28
นแลว โดย
ation นั้น กลับสูหนา
ยูกอนแลว
ได แลวจะ
PPS แลว
รู
Applicat
Process
Process
3.3.5 การ
รูปที่ 3.8 การ
จากรูปท่ี 3.81)
tion ใด เม่ือ 2) 3)
s ตอไป 4)
s ตอไป
ออกแบบการ
รออกแบบกา
8 อธิบายไดดัเม่ือเขาสูเมนูModify dataProcess นีจ้Process นี้จ
Process นี้จ
รทํางานของโ
ารทํางานของ
ดงันี้ นู Config Aa เสร็จแลวก็กจะ Save dataจะรันไฟล Sh
จะรันไฟล Sh
โปรแกรม GU
งโปรแกรม G
Application กด Save เพ่ืa ลง config hell Script เพื
hell Script เพื
UI สวนการจั
GUI สวนการจ
จะมี Tab Aอไปสู Procefile แลวไปสูพ่ือ Commit
พื่อ Push Co
ัดการ Config
จัดการ Conf
Application ess ตอไป ส Process ตอ การเปล่ียนแ
onfig file ไปที
g Applicatio
fig Applicatio
ใหเลือกวาจ
อไป แปลง config
ท่ี Git Server
29
n
on
จะ Config
แลวไปสู
r แลวไปสู
file ตาง
Applicat 3.4 การ
ของ memembeวันท่ีและ
ของ AppApplicatท่ีสราง A
5) ๆ ไปยัง Wow
6) tion
รออกแบบฐา
3.4.1 การออ
จากรูปท่ี 3.91)
ember คนนั้นr, priority คือะเวลาที่สราง
2) plication นัน้tion นั้นๆ, deApplication น
เม่ือ Git SerwMediaServProcess นี้จ
านขอมูลขอ
อกแบบฐานข
รูปที่ 3.9
9 การออกแบMEMBERS นๆ, email ท่ีใอระดับสิทธิ์ก member คนAPPS คือสว
นๆ, name คือesc คือ คารานั้นๆ, และ d
rver ไดรับไฟver ตางๆ จะ Load new
องระบบ
ขอมูลการของ
9 การออกแบ
บบฐานขอมูล คือสวนท่ีเก็ใช Login, naารเขาถึง, mนนนๆ วนท่ีเก็บรายลอช่ือของ Appายละเอียดตาate_time คอื
ฟลแลวจะรันไ
w Config fi
งโปรแกรม G
บฐานขอมูลก
ของโปรแกรบรายละเอียดame คือช่ือขode คือชือ่ข
ละเอียดตางๆplication นั้นางๆ ของ Apอวันท่ีและเวล
ไฟล post-rec
le มาใหม แ
GUI
การของโปรแ
ม GUI จะมีดดตางๆ ของ อง member,องระดับสิทธิ์
ๆ ของ Applicๆ, config_p
pplication นั้นลาท่ีสราง Ap
ceive ท่ีทําห
แลว Redirect
แกรม GUI
ดวยกัน 2 สวMember คือ, password ธิก์ารเขาถึง แ
cation คือ idath คือ ระบุทีนๆ, added คืplication นัน้
หนาท่ี Depl
t ไปหนา Lis
นคือ อ id คือรหัสปคือรหัสผานขและ date_tim
d คือรหัสประท่ีเก็บไฟล coคือ ชื่อของ mนๆ
30
oy config
st Config
ประจําตัวของ me คือ
ะจําตัวonfig ของ
member
31
3.5 แผนภาพแสดงการไหลของขอมูล
แผนภาพแสดงการไหลของขอมูล แสดงความสัมพันธระหวางขอมูลกับระบบกับขอมูลท่ีเกี่ยวของโดยขอมูลในแผนภาพแสดงใหเห็นถึงการไหลของขอมูล
3.5.1 แผนภาพแสดงการไหลของขอมูลระดับ 0
รูปท่ี 3.10 แผนภาพแสดงการไหลของขอมูลระดับ 0
จากรูปท่ี 3.10 แผนภาพแสดงการไหลของขอมูลจะแสดงกระบวนทํางานของระบบ โดยแบงออกเปน 4 หัวขอได ดังนี ้
1) กระบวนการจัดเก็บขอมูล Member ลงฐานขอมูลจะกระทําไดโดย Admin เทาน้ัน 2) กระบวนการจัดเก็บขอมูล Application ลงฐานขอมูลสามารถกระทําไดท้ัง Admin
และ Member ของระบบ 3) กระบวนการจัดเก็บขอมูล Configuration Application ลง GIT Server สามารถ
กระทําไดท้ัง Admin และ Member ของระบบ
32
4) กระบวนการจัดเก็บขอมูล Configuration Application จาก GIT Server ไปจัดเก็บลง WowzaMediaServer ทุกๆเคร่ืองเปนไปอยางอัตโนมัติ
5) การดึงขอมูลจากฐานขอมูล APPS สามารถกระทําไดท้ัง Admin และ Member ของระบบ
6) การดึงขอมูลจากฐานขอมูล MEMBERS สามารถกระทําไดเฉพาะ Admin ระบบเทาน้ัน
3.5.2 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การเพ่ิม Member
รูปท่ี 3.11 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การเพิ่ม Member
จากรูปท่ี 3.11 แผนภาพแสดงการไหลของขอมูลและแสดงกระบวนการจัดเก็บขอมูล โดย Admin ของระบบจะตองกรอกขอมูลตางๆ ของ MEMBERS ลงในฐานขอมูล
3.5.3 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การเพ่ิม Application
รูปท่ี 3.12 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การเพ่ิม Application
33
จากรูปท่ี 3.12 แผนภาพแสดงการไหลของขอมูลและแสดงกระบวนการจัดเก็บขอมูลตองกรอกขอมูลตางๆ ของ APPS ลงในฐานขอมูล
3.5.4 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การบันทึกขอมูล Configuration Application ไปยัง GIT Server
รูปท่ี 3.13 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การบันทึกขอมูล Configuration Application ไปยัง GIT Server
จากภาพท่ี 3.13 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การบันทึกขอมูล Configuration
Application ไปยัง GIT Server โดยจะสงรายละเอียดตางๆ ไปบันทึก Log ไว 3.5.5 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การบันทึกขอมูล Configuration Application
จาก GIT Server ไปยังเครือ่ง WowzaMediaServer ทุกเคร่ืองอัตโนมัติ
รูปท่ี 3.14 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การบันทึกขอมูล Configuration Application จาก GIT Server ไปยังเครื่อง WowzaMediaServer ทุกเครื่องอัตโนมัติ
34
จากรูปท่ี 3.14 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การบันทึกขอมูล Configuration Application จาก GIT Server ไปยังเคร่ือง WowzaMediaServer ทุกเครื่องอัตโนมัติ และจะนําขอมูลตางๆ ท่ีไดไปบันทึกลง Log ไวท่ีเครื่อง WowzaMediaServer ทุกเครื่อง ทุกครั้ง
3.5.6 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การออกรายงาน Application
รูปท่ี 3.15 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การออกรายงาน Application
จากรูปท่ี 3.15 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การออกรายงาน Application โดยผูท่ีสามารถเรียกดูรายงานของ Application ไดมีท้ัง Admin และ Member ของระบบ
3.5.1 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การออกรายงาน Member
รูปที่ 3.16 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การออกรายงาน Member
จากรูปท่ี 3.16 แผนภาพแสดงการไหลของขอมูลระดับท่ี 1 การออกรายงาน Member โดยผูท่ีสามารถเรียกดูรายงานของ Member ไดมีเฉพาะ Admin ของระบบเทาน้ัน
35
3.6 สรุปทายบท
ระบบ System deployment configuration file and Code Version Control using Git แบงการทํางานออกเปน 3 สวนหลักๆ คือ สวนท่ีหน่ึง สวน GUI ทําหนาท่ีเปน Web interface ใหยูสเซอรใชแกไขไฟล Configuration ไดอยางสะดวก เม่ือแกไขแลว โปรแกรมจะเรียกใชงาน Bash shell script ท่ีเขียนไวใหทําการยืนยันการแกไขไฟลแลว ก็สั่งอัพไปยังเซิฟเวอร สวนท่ีสอง คือ Git Server จะทําหนาท่ีเก็บไฟลไวในพ้ืนท่ีเก็บขอมูล จากน้ัน Git Server จะไปอานไฟล post-receive ท่ีอยูในไดเรคทอร่ี hooks ซ่ึงในไฟล post-receive จะทําใหเปน bash shell ไว สั่งให SSH ไปยังเครื่อง WowzaMediaServer ทุกๆ เครื่องแลวสั่งรันไฟล deploy.sh ท่ีเขียนไวในเครื่องเซิฟเวอรทุกเครื่อง ในสวนท่ีสามนี้ก็คือไฟล deploy.sh ท่ีอยูท่ีเครื่องเซิฟเวอรทุกๆ ในไฟลก็จะตรวจสอบกอนวา ตองการโหลดไฟลจาก branch ใด หรือเปน pre-production ก็จะยายไปท่ี branch pre-production หรือถาเปน branch master ก็จะยายไป branch master แลวคอยส่ังโหลดไฟล configuration มาไวยังเครื่องเซิฟเวอรตัวมันเอง แตการจะใหมีการอานคาไฟล configuration ใหมน้ันจําเปนจะตองสั่ง restart service แตผูจัดทําโครงงานไดคํานึงถึงความม่ันคงปลอดภัยของระบบ จะใหผูดูแลระบบเขามาสั่ง restart service ดวยตัวเองเทาน้ัน ในบทตอไปจะเปนการทดสอบในการใชงานจริง ซ่ึงในแตละข้ึนตอนวามีการทํางานหรือทดสอบอยางไร พรอม ท้ังการอธิบายโดยมีภาพตัวอยางประกอบชัดเจนในบทถัดไป
36
บทท่ี 4 ผลการดําเนินงาน
4.1 ข้ันตอนการทดลอง
ข้ันตอนการทดลองแบงไดเปนลําดับ ดังนี้ 3.2.1 Login เขาไปนระบบ GUI โดยสิทธิ์แอดมินของระบบ 3.2.2 ทดลองสรางยูสเซอรของระบบ 3.2.3 ทดลองสรางยูสเซอร ซํ้ากับท่ีมีอยูในระบบแลว 3.2.4 ทดลองลบยูสเซอรของระบบ 3.2.5 Login เขาระบบ GUI โดยสิทธิ์ยูสเซอร 3.2.6 ทดลองเปล่ียน Password ของยูสเซอร 3.2.7 ทดลองสราง Application 3.2.8 ทดลองสราง Application ซํ้ากับท่ีมีอยูในระบบแลว 3.2.9 ทดลองแกไขขอมูล Application 3.2.10 ทดลองลบ Application 3.2.11 ทดลองแกไขคา Configuration Application แลว Save
4.2 สภาพแวดลอมของการทดลอง
สภาพแวดลอมของการทดลองระบบครั้งนี้ประกอบดวย 1) เคร่ือง Server ท่ีทําหนาท่ีเปน GIT Server และ GUI 2) เครื่อง WowzaMediaServer ท่ีทําหนาท่ีรับคา Configuration Application จากเครื่อง GIT
Server 3) เครื่อง GIT Server และเครื่อง WowzaMediaServer ตั้งอยูในระบบเน็ตเวิรควงเดียวกัน ซ่ึง
เปน Private IP 4) มีระบบเน็ตเวิรคเอ็มพีแอลเอส (MPLS) เช่ือมตอระหวางวงเน็ตเวิรคของยูสเซอรกับ ระบบ
เน็ตเวิรคของ Server
37
4.3 ผลการทดลอง
4.3.1 ผลการทดลองใชงานโปรแกรม GUI ผูจัดทําโครงงานไดเขียนโปรแกรม Graphic User Interface เพ่ือให User สามารถใชงานได
สะดวกเสร็จเปนท่ีเรียบรอยดี โดยใช Apache เปน Web Server และใชภาษา PHP และ HTML ในการพัฒนาระบบ ฐานขอมูลใชวิธีการเก็บลงในไฟลไว โดยเมื่อเขามาท่ี GUI จะเช็ควาได Login ไวหรือไม ถาไม จะ Redirect มาหนา Login
รูปท่ี 4.1 GUI หนา Login
จากรูปท่ี 4.1 แสดงหนาจอ Login ของโปรแกรม GUI เม่ือ Login ดวย User ท่ีมีสิทธิ์เปน Admin ของระบบ จะสามารถเขามาหนา Manage User ได
โดยหนาน้ีจะสามารถ ลบ User และ Create User ได
38
รูปท่ี 4.2 GUI หนา Manage User
จากรูปท่ี 4.2 แสดงหนาจอ Manage User เม่ือ Click ท่ีแท็ป Create new user จะมี form ใหกรอกรายละเอียดของ User ท่ีกําลังจะ Create
ใหม
รูปที่ 4.3 GUI หนา Create new user
39
จากรูปท่ี 4.3 แสดงหนาจอ Create new user เม่ือ Create new user เสรจ็แลว โปรแกรมจะ Redirect ไปหนา Manage User จะเห็นวาใน List
User มี User ใหมปรากฏข้ึนมาแลว
รูปที่ 4.4 GUI หนา Manage User ท่ีมี User ท่ีเพ่ิมเขาไป
จากรูปท่ี 4.4 แสดงหนาจอหลังจากเพิ่ม User เม่ือ Click ท่ีรูปถังขยะจะเปนการลบ User คนนั้น จะมี Dialog Box ใหเตือนวาตองการจะลบ
User คนนั้นจริงหรือไม ถายืนยันก็ Click Delete อีกครั้ง
40
รูปที่ 4.5 GUI ลบ User
จากรูปท่ี 4.5 แสดงหนาจอลบ User เม่ือลองเพ่ิม User โดยใหซํ้ากับ User ท่ีมีอยูแลว จะไมสามารถเพ่ิมได โดยจะมีขอความแจง
เตือนวา User ท่ีตองการจะเพ่ิมนั้นมีอยูแลว
รูปท่ี 4.6 GUI หนาแจงเตือนเพ่ิม User ซํ้ากับทีมีอยูแลว
จากรูปท่ี 4.6 แสดงหนาจอเตือนเม่ือเพ่ิม User ซํ้า เม่ือเปล่ียนมา Login ดวย User ท่ีไมมีสิทธิ์ Admin จะไมมี Menu Manage User ข้ึนมาใหใช
งาน หารตองการเปล่ียน Password ของตัวเองให Click ท่ี Change Password จะมี form ใหกรอกโดยจะตองกรอก Password ปจจุบันเขาไป และกรอก Password ใหมท่ีตองการเขาไปใหเหมือนกัน 2 ครั้งเพื่อปองกันการพิมพผิดพลาด
41
รูปท่ี 4.7 GUI หนา Change Password จากรูปท่ี 4.7 แสดงหนาจอ Change Password ถาหากกรอก Password ปจจุบันผิด ก็จะไมสามารถเปล่ียน Password ได โดยจะมีขอความแจง
เตือนวา Current Password ไมตรงกับท่ีมีอยู
รูปท่ี 4.8 GUI หนาแจงเตือน Password ปจจุบันไมถูกตอง
จากรูปท่ี 4.8 แสดงหนาจอแจงเตือน Password ปจจุบันไมถูกตอง
42
ถาหากกรอด Password ใหมไมเหมือนกันท้ัง 2 ครั้ง จะมีขอความแจงเตือนวา Password จะตองเหมือนกัน
รูปที่ 4.9 GUI หนาแจงเตือนใหกรอก Password ใหมใหตรงกันท้ัง 2 ครั้ง จากรูปท่ี 4.9 แสดงหนาจอเตือนกรอก Password ใหมไมตรงกันท้ัง 2 คร้ัง เม่ือ Click มาท่ีเมนู Manage Application จะมีแท็ป 2 แท็ปคือ Application จะมี List
Application ท่ีไดสรางไวแลวอยูจากหนาน้ีสามารถแกไขขอมูลของ Application และสามารถลบ Application น้ันๆ ได และ Create Application เอาไวสราง Application เขาไปได
43
รูปที่ 4.10 GUI หนา Manage Application
จากรูปท่ี 4.10 แสดงหนาจอ Manage Application เม่ือ Click ท่ีแท็ป Create Application จะมี Form ใหกรอกขอมูลของ Application โดยจะตอง
กรอกชื่อ Application และ Config path ถาไมกรอก 2 ชองนี้จะไมสามารถเพ่ิม Application ได สวน Description มีไวกรอกรายละเอียดอ่ืนๆ จะกรอกหรือไมกรอกก็ได
44
รูปที่ 4.11 GUI หนา Create Application
จากรูปท่ี 4.11 แสดงหนาจอ Create Application ถาหากกรอกช่ือ Application มาซํ้ากับท่ีมีอยูกอนแลว จะไมสามารถเพ่ิมได โดยจะมีขอความ
แจงเตือนวา Application name น้ันๆ มีอยูกอนแลว
รูปท่ี 4.12 GUI หนาแจงเตือน Application มีอยูกอนแลว
จากรูปท่ี 4.12 แสดงหนาจอแจงเตือน Application ซํ้า
45
เม่ือเพิ่ม Application แลวจะมีชื่อ Application ใหมปรากฏข้ึนมาใน List หากตองการแกไขขอมูลใน Application น้ัน ให Click ท่ีช่ือ Application น้ันๆ จะมี Form ข้ึนมาโดยมีขอมูลของ Application น้ันอยู สามารถกรอกขอมูลท่ีตองการแกไขเขาไปไดเลย เสร็จแลวกด Save โปรแกรมจะบันทึกขอมูลไว
รูปท่ี 4.13 GUI หนาแกไขขอมูลใน Application
จากรูปท่ี 4.13 แสดงหนาจอแกไขขอมูลใน Application หากตองการลบสามารถลบไดท่ีแท็ป Application โดยสามารถลบไดมากกวาครั้งละ 1
Application โดยให Click ท่ีดานหลังของขอมูล Application น้ันๆ ใหมีเครื่องหมายกาถูก จากน้ัน Click ปุม Delete จะมี Dialog ข้ึนมาให Confirm
46
รูปท่ี 4.14 GUI ลบ Application
จากรูปท่ี 4.14 แสดงหนาจอลบ Application หากตองการ Configuration คาตางๆ ของโปรแกรม WowzaMediaServer ให Click เขาไปเมนู
Config Application จะมีแท็ปตามจํานวน Application ท่ีไดกรอกไวท่ีเมนู Manage Application สามารถ Click แท็ปท่ีตองการแกไขไดเลย โปรแกรมจะโหลด Configuration ท่ีอยูท่ี Server มาใหสามารถแกไข เมื่อเสร็จแลว Click ท่ีปุม Save โปรแกรมจะเอาคา Configuration ท่ีกรอกเขาไป ไปใสไวในไฟลตามพารทท่ีกรอกตรง Config Path ท่ีไดกรอกไวกอนแลว และจะเรียกใหไฟล Bash Shell ท่ีไดเขียนไวกอนหนาน้ันทํางานโดยจะยืนยันการแกไขไฟล Configuration โดยมี Comment วา User คนไหนเปนคนแกไข และวันเวลาใด เพ่ือเปน Log อางอิงการแกไขคร้ังนั้นๆ
ประสานทดสอบแพรอมท้ังทดลองเพรอมท้ังตามที่กรบานสาม
จากรูปท่ี 4.1จากผลการทํ
นกับการทํางาแกไขคา Conงสั่งแสดงคาขปล่ียนตัวเลขงคาขางตนขรอกมาใน GUมารถทํางานป
15 แสดงหนาทําโปรแกรม านหลังบานขnfiguration ขขางตนของไฟขเปนเลข 6 แองไฟล ApplUI โดยท่ีไมไประสานกันได
รูปที่ 4.15
าจอ Config AGUI ข้ึนมาเพืองระบบใหทํของ Applicatฟล Configurแลวกด Saveication อีกคดแกไขท่ีเครื่ดด ีไดขอมูลท
5 GUI หนา C
Application พื่อให User สทํางานไดตามtion โดยกอนration นั้น จะe ท่ีหนา GUI ร้ัง จะเห็นวาอง Server ทํท่ีถูกตองแมน
Config Appl
สามารถใชงามท่ีตองการอยนแกไขไดสั่งแะเห็นวามีขอมู จากนั้นไดกคาในไฟลท่ีเทําใหพิสูจนไดนยํา
ication
านไดสะดวกแยางถูกตองแมแสดงวันท่ีแลมูลเปนตัวเลขลับมาสั่งให Sครื่อง Serveดวา โปรแกร
แลว ก็จะตองมนยํา โดยเมืะเวลาขณะนั้ข 5 อยุ การแServer แสดง
er ไดถูกเปล่ียรม GUI กับระ
47
งเอามาม่ือการนั้นนั้น แกไขไดงวันเวลายนไปะบบหลัง
48
รูปท่ี 4.16 แสดงคาวันเวลาพรอมท้ังคาขางตนของไฟล Configuration จากรูปท่ี 4.16 แสดงคาขางตนของไฟล Configuration ภายในเครื่อง WowzaMediaServer ท่ีมี
ตางกันระหวางกอนและหลังจาก Configuration Application แลวมีการ Deploy มาแบบอัตโนมัติตรงตามวัตถุประสงคของการจัดทําระบบ
และในการแกไขคา Configuration ทุกครั้งจะมีการบันทึก Log ไวท่ีเครื่อง Server วา User คนใดเปนคนแกไข วันท่ีเวลาใด แกไข Application ใด และไฟล Configuration ไฟลใด
รูปท่ี 4.17 บันทึก Log การแกไขคา Configuration file Application
จากรูปท่ี 4.17 แสดงหนาจอบันทึก Log ของการแกไขคา Configuration file Application และมีการ Deploy
49
บทท่ี 5 สรุปผลดําเนินงานโครงการและขอเสนอแนะ
5.1. สรุปผลการดําเนินงาน
โครงงานที่ 1 จะเปนการทําระบบหลังบานคือ ติดตั้ง Git Server โดยใชโปรแกรม Gitolite ซ่ึงมีความสามารถในการทํา Source code version control แลวไปเขียน Bash Shell ไวเช็ค หากมีการ Push ไฟลใหมเขามาให SSH ไปเครื่อง WowzaMediaServer ตางๆ ท่ี Configuration ไวแลวสั่งรันไฟล Bash Shell ท่ีเขียนไวให Pull ไฟลใหมลงมา เปนการทํา Auto Deployment
โครงงานท่ี 2 จะเปนการทํา GUI ใหยูสเซอรสามาถใชสําหรับแกไขคา Configuration Application ไดอยางงายดาย สะดวก โดยมีการแบงระดับสิทธิ์ของระบบเปน Admin และ Members โดยท่ีจะมีเพียง Admin เทาน้ันท่ีจะมีสิทธิ์ในการเพ่ิม ลบ แกไข Members ได สวนเมนูอ่ืนๆ สามารถใชงานไดทุกคน โดยหากมีการแกไขใดๆ จะมีการระบุ วันท่ี เวลา และชื่อผูท่ีแกไขดวยทุกครั้ง 5.2. ขอเสนอแนะในการแกไขปญหา
จากการทําโครงงาน 1 และ 2 ปญหาท่ีไดพบอยูในสวนของ permission ของ configuration file คือถาหากใช user อ่ืนในการ pull ไฟลระหวางท่ี Program WowzaMediaServer ยังทํางานอยูน้ัน จะไมสามารถ pull ไฟลลงมาทับได ดังนั้นผูจัดทําโครงงานจึงใช root ในการ pull configuration file มาทับ และการจะเพ่ิมเคร่ือง WowzaMediaServer แตละเคร่ืองจําเปนจะตองทํา ssh-keygen แลวนํา public key มาใสไวท่ีเคร่ือง Git Server ซ่ึงข้ันตอนดังกลาวไมสามารถยังไมสามารถทําโดยใชเพียง Bash Shell ได เนื่องจากการ scp public key ขามเครื่อง Server โดย root จะตองใส Password ดวยทุกครั้ง
5.3. สรุปปญหาท่ีพบ
1. ไมสามารถ pull configuration file ลงมาทับขณะท่ีโปรแกรม WowzaMediaServer ยัง
ทํางานอยู เนื่องจากติด Permission 2. การเพ่ิมเครื่อง WowzaMediaServer เขาใน Git Server ไมสามารถเขียนเปน Bash Shell
Script แลวเรียกทํางานไดเพราะตองใส Password ดวยทุกครั้งท่ี scp public key
50
5.4. แนวทางการพัฒนาโครงงาน
จากปญหาท่ีกลาวมาขางตน จะตองมีการแกไขใหระบบสามารถใชงานไดในอนาคต โดยผูจัดทําโครงงานจะตองศึกษาเพ่ิมเติมในสวนของการใช user อ่ืนท่ีไมใช root ในการ pull configuration file ลงมาทับไดโดยไมติดปญหาเร่ือง Permission file และการ scp โดยไมตองใส Password หากสามารถทําให copy public key file ขามเครื่องได ก็จะสามารถทําใหสามารถ เพิ่ม ลบ แกไข เครื่อง Server จากโปรแกรม GUI ได
51
เอกสารอางอิง
[1] Getting Started - About Version Control, Git-smc.com, [Online]. Available : http://git-scm.com /book/en/Getting-Started-About-Version-Control [2] Getting Started - Git Basics, Git-smc.com, [Online]. Available : http://git-scm.com/book/en /Getting-Started-Git-Basics [3] Git Branching. Git-smc.com. [Online]. Available : http://git-scm.com/book/en/Git-Branching [4] Scott Chacon, Pro Git, Springer-Verlag New York, Inc., New York, 2009. [5] วรศิวัช จิวะกิดาการ (2549), “พื้นฐานความรูเกี่ยวกับ-Secure-Shell-SSH” มหาวิทยาลัยเชียงใหม, [Online]. Available : http://network.cmu.ac.th/wp-content/uploads/2011/05/พ้ืนฐานความรูเก่ียวกับ-Secure-Shell-SSH-2-มิ.ย.-49.ppt [6] KESHAVA G.S (2013,Aug), Introduction to Operating System and UNIX, [Online]. Available : http://it-ims.com/2013/rhel6/class-1-intro/