วิธีทำ Git Server บน Godaddy ( Shared Web Hosting )

วิธีทำ Git Server บน Godaddy ( Shared Web Hosting )


        Hosting และ Git เป็นเครื่องมือหากินของ Web Developer ซึ่งบางครั้งกว่าเราจะได้ Dev กันก็เสียเวลาไปกับการ Setup Server และ Setup Project ซึ่งดูวุ่นวายพอสมควร หากติดปัญหาเฉพาะหน้า Set ไม่ผ่าน  Timeline ก็ยาวไกลออกไปอีก


        ในบทความนี้จึงเป็นการแชร์ความรู้เพื่อให้เพื่อนๆ ได้ลองทำไว้ใช้เองโดยส่วนตัวผมเช่น Hosting กับ Godaddy และค่อนข้างประทับใจการบริการของเค้า  และ ผมยังได้ทำ Server ไว้ใช้เองด้วยเครื่อง PC ที่บ้าน ต่อเป็นแบบ Dynamic IP ซึ่งทั้งสองกรณี สามารถใช้ Git ได้ทั้งคู่ครับ  เรามาลองดูวิธีทำกันดีกว่า 


ขั้นตอนแรกเซ็ต SSH ให้ Godaddy 

1. ล็อกอินเข้าสู่ระบบของ Godaddy

2. คลิกที่ "Manage Hosting" เพื่อเข้า cPanel ของ Godaddy จะปรากฏหน้าจอดังภาพ




3. ใน Textbox ( Find ) ให้พิมพ์ "ssh" จะเห็นดังรูปด้านล่าง



4. คลิกที่ "SSH/Shell Access" เพื่อ Add IP ของคุณ ( ดังภาพด้านล่าง ) ซึ่งใน Textbox จะแสดง IP ปัจจุบันของคุณ ตรงนี้ไม่ต้องสนใจให้ กดปุ่ม "Submit" ได้เลย


Add IP to Godaddy


5. ระบบจะโชว์ผลการ "Add IP" หลังจากนั้นก็เริ่มใช้งาน ssh ได้เลย


Godaddy SSS Information


เริ่มการสร้าง Git Server

1. เปิด Terminal 

2. ssh เข้าไปใน Hosting โดยพิมพ์ว่า "ssh [email protected]โดเมนของคุณ"  เช่น ssh [email protected] เมื่อ ssh ได้แล้วจะเจอหน้าจอด้านล่าง



3. สร้าง Folder ไว้สำหรับเก็บ Repository ของ Git ตรงนี้ตามสะดวกเลยครับว่าจะสร้างไว้ที่ไหน ขอแค่ชื่อโปรเจ็คเป็น .git ก็พอ แต่ส่วนตัวผมชอบสร้างเป็น /git/repositories/ชื่อโปรเจ็ค.git เช่น /git/repositories/maimem.git

[~]$ mkdir -p git/repositories/maimem.git


4. init git repositories โดยการพิมพ์ "git init --bare ตามด้วย Folder ในข้อ 3

[~]$ git init --bare git/repositories/maimem.git/


5. เข้าไปใน Folder ของ Git โดยพิมพ์ cd ตามด้วย Path ของ Project (ตามข้อ3)

[~]$ cd git/repositories/maimem.git/


6. ใช้คำสั่ง ls -al เพื่อดูไฟล์ภายใน Folder

[~/git/repositories/maimem.git]$  ls -al


จะพบ Folder ต่างๆ ดังรูปด้านล่าง


Git Hooks


7. ออกมาข้างนอก 1 ชั้น เพื่อที่จะทำการเซ็ต Permission ให้ Git Project ของเราโดยการพิมพ์ "cd .."

[~/git/repositories/maimem.git]$ cd ..


เมื่อออกมาแล้วให้แก้ Permission ของ Project โดยการพิมพ์ "chmod -R g+ws *"

[~/git/repositories]$ chmod -R g+ws *


8. ทีนี้ก็กลับเข้าไปใน Folder ของ Git Project โดยพิมพ์ "cd ชือProject.git"

[~/git/repositories]$ cd maimem.git


9. มา Config Repository กันหน่อยโดยการพิมพ์ "git config core.sharedRepository true"

[~/git/repositories/maimem.git]$ git config core.sharedRepository true

ในส่วนของตัว Server ถือว่าขั้นตอนการ Setup Git Server ได้เสร็จแล้วครับ ทีนี้เรามาลอง Clone Project กันเลย


เริ่มทำการ Clone Git Project

1. ออกจาก ssh ของ Godaddy ก่อน ( ปิดไปเลยก็ได้ )

2. เปิด Terminal ขึ้นมาใหม่ หรือ จะเปิด Tab ใหม่ก็ได้

3. cd เข้าไปใน Path ที่คุณต้องการเก็บไฟล์ไว้ตรงไหนในตัวอย่างเก็บไว้ใน Folder "Sites"

MBPs-MacBook-Pro:~ MBP$ cd /Users/MBP/Sites/


4. พิมพ์ "git clone ssh://username@โดเมน/home/username/git/repositories/maimem.git

MBPs-MacBook-Pro:Sites MBP$ git clone ssh://[email protected]/home/myuser/git/repositories/maimem.git

หากโดนถาม Password ให้ใส่ Password ที่คุณใช้เข้า ssh godaddy ลงไปครับแค่นี้ก็สามารถเริ่ม ใช้งาน git ได้แล้วครับ เพียงแต่ต้องใส่รหัสผ่านทุกครั้งที่ใช้ Git แต่ไม่ต้องห่วงครับ ผมได้เขียนวิธีการ ใช้ Git โดยไม่ถาม Password ไว้ให้แล้วครับ


Hook Git Project เข้าไป Folder บน Server

        หากคุณทำวิธีที่กล่าวมาตามด้านบนสำเร็จแล้ว สามารถใช้ Git ได้ก็จริงแต่ไฟล์ยังถูก Save เป็น Version ตามแบบของ Git อยู่ยังไม่ถูกแตกออกมาเป็นไฟล์จริงๆ และ ยังไม่ถูกยัดเข้าไปใน Folder ที่เราเขียน Vhost เอาไว้ เรามาดูวิธีเขียนไฟล์ Hook กันดีกว่าครับ


1. ssh เข้าไปใน Server ( ที่เก็บ Git Repository ) 

2. เข้าไปยัง Git Project ( Git Repository ) ของคุณ ซึ่งจากตัวอย่างในบทความนี้ Git repository ถูกเก็บไว้ที่  "git/repositories/maimem.git/"

[~]$ cd git/repositories/maimem.git/


3. เข้าไปใน Folder hooks

[~/git/repositories/maimem.git]$ cd hooks


4. ทำการสร้างไฟล์ชื่อ "post-receive" เพื่อเอาไว้ใส่ Command สำหรับการ Hook โดยใช้คำสั่ง "touch post-receive"

[~/git/repositories/maimem.git/hooks]$ touch post-receive


5. เปิดไฟล์ "post-receive" เพื่อเขียน Script สำหรับ Hook ตรงนี้ใครถนัดใช้อะไรก็ใช้เลยครับ อันที่จริงแล้วผมชอบใช้ nano แต่ใน Godaddy ไม่มี nano ให้ใช้ครับ ใช้ได้แต่ vi ซึ่งตัวผมเองก็ไม่ขัดข้อง

[~/git/repositories/maimem.git/hooks]$ vi post-receive


6. เขียน Script เพื่อ Hook ดังนี้

#!/bin/bash
export GIT_WORK_TREE=/home/username/www/maimem.com
cd $GIT_WORK_TREE /usr/bin/git --git-dir=$GIT_WORK_TREE/.git --work-tree=$GIT_WORK_TREE pull
echo "---------------- GIT Deploy complete. --------------";

จากนั้นเซฟไฟล์แล้วออกมาได้เลยครับ


อธิบาย Git Hook Script 

        บรรทัดแรกไม่ต้องสนใจมาดูบรรทัดที่ 2 กันเลย  "export GIT_WORK_TREE" คือ Path ที่เราจะใช้เก็บตัวเว็บของเรา ให้เข้าใจง่ายๆคือ เวลาเราสั่ง Git push ไปแล้วให้ไฟล์มันไปลงที่ไหนนั่นเองครับ ให้ใส่เป็น Directory ที่เราต้องการ 

ส่วนบรรทัดที่ 3 ก็ไม่ต้องสนใจครับ เป็นการทำงานของ Git 

บรรทัดที่ 4 ใช้ดู Result ว่า Deploy สำเร็จไหม เราจะแก้ไขเป็นประโยคว่าอะไรก็ได้ตามใจเราครับ โดยเขียนเหมือน PHP ปกติ หากตอนใช้งานลอง push แล้วไม่ echo บรรทัดที่ 4 ออกมาแสดงว่าเราเขียน Hook file ผิดครับ 


        สำหรับบทความนี้ยาวหน่อยนะครับ ใช้พลังในการเขียนเยอะมาก หากใครมีข้อสงสัยตรงไหน หรือ ผมยังอธิบายตรงไหนไม่ชัดเจน ทำตามแล้วยังไม่ได้ ติดขัดตรงไหน Comment ถามทิ้งไว้เลยครับ เดี๋ยวผมจะมาตอบให้ครับ 

  • 25 ตุลาคม 2557

  • โดย Admin

  • maimem.com

  • 0 ความคิดเห็น

แชร์บทความนี้

ความคิดเห็น


แสดงความคิดเห็น

กรุณาเข้าสู่ระบบเพื่อแสดงความคิดเห็น

เข้าระบบด้วย Google

ผู้สนับสนุน