เปลี่ยน port apache จาก 80 เป็น 8081 ใน ubuntu 20.4 ใน Google Cloud Platform (GCP)

เฮ้ยๆ นานๆ ทำทีก็มีลืมบ้าง น่าเขกหัวจริงๆ พอทำทีก็คลำที ไอ้การเปลี่ยน port เนี่ย ทำทีไรก็ google’ling มันใหม่ทุกที แล้วก็เสียเวลาทุกที วันนี้จึงต้องรีบเขียน blog เอาไว้เลย บางคนอาจจะมองว่าง่ายจะตายค้นแปปเดียวก็เจอ ใช่ครับเจอ ผมก็ทำตามนั้นแหละ แต่มันไม่ได้ไง ตลกเนอะ เอ้าเขียนคู่มือเองเลย

ก่อนอื่นนะครับ เราก็ทำการ Install apache2 กันก่อนเลย
sudo apt update
sudo apt install apache2
เมื่อ Install เสร็จ ตั้งค่าให้ apache2 ทำงานแบบ Service ด้วยคำสั่ง
sudo systemctl enable apache2
จากนั้นทำการ start service ดังกล่าวด้วยคำสั่ง
sudo systemctl start apache2
เมื่อเราเข้าตาม ip จริงแล้วเราก็จะได้หน้าตาเว็บประมาณนี้

แหมดูดี เหมือนจะดี แต่ๆๆๆๆ ถ้าเราไม่เอา port 80 ละ
ช่วง ถาม-ตอบ
Q: ก็แล้วทำไมไม่ใช ่port 80 ละ
A: ก็เพราะเราจะลอง nginx ยังไงละ เลยต้องกำหนดให้ port มันไม่ชน
Q: อ้าวแล้วทำไมไม่ กำหนด nginx port เป็น 8081 ละ
A: ต่อยกันไหม …ถามเยอะจัง… เอ้ย ก็เพราะจะใช้เว็บหลักด้วย nginx ยังไงละ เขาเคลมว่าดีกว่าก็ลองกันเสียหน่อย
เอาละเข้าเรื่องเลย เราต้องไปกำหนด ไฟล์ 2 ตัวคือ
/etc/apache2/sites-enabled/000-default.conf
/etc/apache2/ports.conf
ไฟล์ 000-default.conf
1. ตรง *:80 นั้นเปลี่ยนเป็น 8081
จากนั้นทำการบันทึก

ไฟล์ ports.conf
- ตรง Listen 80 นั้นเปลี่ยนเป็น 8081 แล้วกด บันทึก

สั่ง Restart Service Apache
sudo systemctl restart Apache2
ในเน็ตก็จะบอกคุณเท่านี้แหละ แต่ถ้าคุณทำบน Google Cloud Platform แล้วละก็มันไม่จบนะครับ เพราะเมื่อเรียกเว็บแล้วมันก็จะ Error เรียกไม่มา
ทางแก้คือ ต้องไปเพิ่ม Firewall เฉพาะ ซึ่งหากเรากำหนด Port ใหม่นอกเหนือจากที่มี Default มาให้ เราต้องมากำหนดใหม่ทุกครั้ง และใช้ได้กับ ทุก Instance ที่เราสร้าง แต่ตอนตั้งค่าต้องเลือก All instance in the network ตามรูปด้านล่าง
โดยไปเพิ่มที่เมนู VPC network → Firewall

จากนั้นให้เราเพิ่ม Rule โดยการคลิกที่ Create firewall rule

ให้เรากำหนดชื่อ โดยตั้งเป็นอะไรที่สื่อความหมายให้มันหน่อย เช่น allow http -8081
กำหนดให้เก็บ log เป็น On

เลือก Targets เป็น All instance in the network เพื่อให้ใช้ได้กับทุก Instance
เลือก Source IP Range เป็น 0.0.0.0/0 ก็คือไม่ Fix นั่นแหละ
tcp port กำหนดเป็น 8081
แล้วกด Create

เมื่อลองไป Refresh ดูก็จะพบว่าใช้งานได้ตามปกติ เย้
สุดท้ายนี้ไอ้วิธีของผมมันก็ไม่ใช่ว่าถูกต้องตามหลักการอะไร 100 Percent ไม่ได้ใช้ Docker หรือ อะไรที่คนเก่งๆเขาทำกัน แต่ก็พอได้แก้ปัญหาได้แบบลูกทุ่งๆครับ