มาลอง Build GO Lang ขึ้น Production กันเถอะ
หลายครั้งก็สงสัย
ว่าบน Production ต้องลงอะไรไหม ? ไม่ต้องเลยสักนิด ตัว binary ของ Golang เนี่ยฉลาดๆจริงๆ สามารถอยู่ตัวคนเดียวได้
ต้อง build ยังไง ? เดี๋ยวเรามาดูกัน
ต้อง run ยังไง ? เดี๋ยวเรามาดูกัน
เพราะว่าส่วนใหญ่ก็เขียนบนเครื่องตัวเองแล้วก็ run บนเครื่องตัวเองนี่แหละ ไม่เคย build เป็น binary ขึ้น production สักที ก็เลยมาลองสักหน่อยจะได้รู้สักที
เมื่อเราเขียน Golang เสร็จแล้ว และตัวโปรแกรมของเราเนี่ยต้องต่อกับ Database ด้วย บน Production ของเราก็ต้องมา Database ที่เราจะติดต่อด้วยเนอะ
วันนี้เราจะมาลอง Insert ข้อมูลลง MongoDb กัน
package mainimport ("fmt""gopkg.in/mgo.v2""gopkg.in/mgo.v2/bson")func main(){ session, err := mgo.Dial("localhost:27017") if err != nil { panic(err) } defer session.Close() collection := session.DB("income").C("users") err = collection.Insert(bson.M{"name": "Phatcharaphan"}) if err != nil { panic(err) } fmt.Println("Insert data success.")}
ลอง run command
go run main.go
แล้วแสดง Insert data success. แสดงว่าเพิ่มข้อมูลใน Mongo ได้แล้ว อันนี้เราลองทดสอบบนเครื่องของเราก่อนเนอะว่าได้ผลลัพธ์ตามที่เราต้องการหรือเปล่า แล้วค่อย Build เป็น binary ขึ้น Production กัน
เรามาดูข้อมูลใน Mongo กัน จะเห็นฐานข้อมูลดังภาพ
เรามาดูข้อมูลใน income กัน ข้อมูลจะแสดงดังภาพ
คราวนี้เรามา build กันดีกว่า ขึ้น Production กัน
Run command
go build main.go
เราจะได้ Binary ตัวนึง ชื่อ main ดังภาพ
คราวนี้เรานำตัว Binary ตัวนี้ขึ้น Production กัน
ตอนนี้เรานำ Binary ขึ้น Production บน path ดังภาพ /root/tmp
ต่อมาเรามา Run โปรแกรมกัน ด้วยคำสั่ง
./main
อะแน่ๆๆๆ แต่ว่าเกิด Error ดังภาพ เพราะว่าไฟล์ที่เรา Build มาต้นทางเป็นเครื่อง Macbook เครื่องที่เรานำมา Run ก็ต้องเป็นเครื่อง Macbook ด้วยจะสามารถ Run ได้ อย่างนั้นเวลาที่เราจะ Build Binary เราต้องตรวจสอบก่อนว่าเครื่องที่เราจะนำไป Run นั้นเป็นเครื่องอะไร แล้วค่อย set ก่อนที่จะ Build Golang
อย่างนั้นเรามาดูว่าเครื่องที่เราจะนำ Golang ไป Run นั้นเป็น os อะไร Run command ใน os ของเราด้วยคำสั่ง
uname -a
เมื่อเรา Run คำสั่งนี้แล้วผลลัพธ์จะได้ดังภาพ เครื่องที่เราจะ Execute binary นั้นเป็น Linux
เรามา Build binary ใหม่กันแต่เราต้อง Set ให้เป็น Linux ก่อนด้วยคำสั่ง
export GOOS=linux
export GOARCH=amd64
เมื่อเราปิดหน้าจอที่เรา export ไว้ตัวที่เรา Set ไว้ก็กลับไปเป็น kernel เดิมของเครื่องเราน่ะจ๊ะ เช่นของเก๋ตอนนี้เป็น GOOS=”darwin” ซึ่ง kernel เป็น Mac
อะๆๆมาต่อกันเมื่อเรา Set Execute binary ปลายทางแล้วเราก็มา build Golang ด้วยคำสั่ง
go build main.go
เสร็จแล้วเราก็จะได้ Binary main แล้วเราก็นำ Binary ตัวนี้ขึ้น Production
แล้วเราก็มาลอง Run คำสั่งใหม่อีกรอบน่ะจ๊ะ เย้ๆครั้งนี้ Run ได้ด้วยดังภาพ
หลังจากนั้นเราก็มาดูว่าผลลัพธ์ว่าข้อมูลลง Mongo บน Production หรือเปล่าน๊าามาดูกันดังภาพ
เย้ๆๆ เรา Run binay golang บน Production ข้อมูลลงฐานข้อมูลแล้วว
ผิดพลาดตรงไหน ช่วยแก้ไขด้วยน่ะจ๊ะ
ขอให้สนุกกับการเขียน Golang น่ะจ๊ะ อันนี้เป็นวิธีแบบลำบากนิดนึง ซึ่งเราต้องทำเองหมดทุกอย่างเลย ถ้าเราใช้ Jenkins ในการ build ให้ ชิวิตเราก็จะโคตรสะดวกเลย คราวหน้าเรามาดู blog กัน set jenkins ให้ build binary Golang บน Production กันน่ะจ๊ะ