อัปเดตล่าสุด June 20, 2024
บทเรียนหัวข้อนี้คือการตั้งค่าพื้นฐานของทาง Server เพื่อเตรียมพร้อมในการ Deployment ต่อไปซึ่งผู้เรียนควรผ่านหัวข้อดังต่อไปนี้
เพื่อให้สามารถเรียนรู้การตั้งค่าผ่าน server ได้
หากเป็นผู้ให้บริการรายอื่นอาจจะมีรายละเอียดที่แตกต่างกันบ้างในการตั้งค่าต่างๆ แต่สามารถเรียนรู้และนำไปประยุกต์ใช้ได้
โดยบทความนี้จะอ้างอิงและเขียนเพิ่มเติมจาก Django Deployment ของคุณ Bradtravesy ที่ OS Ubuntu 20.04 LTS Focal Fossa
ทำการสร้าง Droplet จากบทเรียนที่แล้ว
หน้า Instance และ ipv4 ของ droplet ที่เราจะทำการ ssh เข้าไปใช้
เมื่อเราได้ทำการสร้างและ SSH เข้ามาที่ทาง server ของเราด้วย root user แล้วเราจะพบข้อความที่แสดงถึงระบบเราสิ่งนี้เรียกว่า Message of the day
หน้า message of the day
เมื่อเราสร้าง Droplet ทาง DigitalOcean จะให้สิทธิพื้นฐานเป็น root user ซึ่งจะมีสิทธิสูงสุดสามารถรันคำสั่งได้ทุกอย่าง แต่โดยทั่วไปแล้วเราจะสร้าง User ขึ้นมาใหม่และให้สิท sudo หรือ super user do ซึ่งจะมีความแตกต่างคือเวลาที่ sudo User รันคำสั่งที่โดยปกติไม่สามารถทำได้จะต้องทำการใส่ sudo นำหน้าคำสั่งทุกครั้ง และจะถูกบังคับใส่ Password อีกครั้งหนึ่งซึ่งก็จะมีความปลอดภัยกว่าการรัน root user ตรงๆ
เราสามารถสร้าง user ใหม่ด้วยคำสั่ง useradd และตามด้วยชื่อ user ที่เราต้องการใช้ซึ่งในที่นี้ผมขอใช้ชื่อ djangoadmin
adduser <user>
ต่อมาเราจะทำการเพิ่ม user ของเราเข้า sudo usergroup เพื่อให้สามารถรันคำสั่งต่างๆได้
usermod -aG <user>
add sudo user
sudo nano /home/<user>/.ssh/authorized_keys
เมื่อตั้งค่าเสร็จแล้วสามารถทำสอบด้วยการ ssh ด้วย key ไปยัง User ที่สร้างขึ้นมาใหม่
sudo nano /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
เสร็จแล้วให้ทำการรันคำสั่ง
sudo systemctl reload sshd
sudo ufw enable
sudo ufw disable
sudo ufw allow [port]/[protocol]
sudo ufw disable
[port]/[protocol]
sudo ufw allow 80/tcp
sudo ufw allow 'Nginx'
sudo ufw delete allow 'Nginx'
sudo ufw app list
ในเบื้องต้นให้ทำการ enable และมี OpenSSH ก็พอแล้วเมื่อเราได้ทำการเข้าถึง Server ของเราแล้วในตอนนี้ Package ต่างๆจะขึ้นอยู่กับทางผู้ให้บริการ Server ซึ่งใน Ubuntu จะมีตัวจากการ Package Library ต่างๆที่ชื่อว่า apt โดยเราจะทำการรันคำสั่งเพื่อ update ตัว apt ก่อนแล้วถึง upgrade library ต่างๆตามมา
sudo apt update -y&& sudo apt upgrade -y
* การใส่ -y นั้นโดยพื้นฐานเวลาเราลงมากจะมีขั้นตอนให้ยืนยันการลงโดยพิม y อีกครั้งนึงหากเราใส่ option -y ระบบจะลงอัตโนมัติโดยเราไม่ต้องพิมยืนยัน
Update Library and apt package
* สำหรับใครที่ต้องการ deploy ผ่าน docker สามารถข้ามขั้นตอนนี้ไปได้
sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx curl gunicorn python3-venv
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt install docker-ce -y
sudo systemctl status docker
ทำการเช็คสถานะของ docker daemon
ลองทำการรันคำสั่งในการเช็ค version ของ docker ด้วยคำสั่ง
docker --version
แต่จะพบว่า docker นั้นติดปัญหา permission อยู่จึงทำให้เราต้องรันผ่านคำสั่ง sudo จึงจะสามารถรันได้
ซึ่งสามารถแก้ได้ด้วยคำสั่ง
sudo chgrp docker /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket
***ทำการออกระบบและ ssh เข้าใหม่ก็จะสามารถใช้คำสั่งโดยไม่ต้องผ่าน sudo ได้แล้ว
ทำการลง docker-compose
sudo apt install docker-compose -y
Django Deployment - Digital Ocean · GitHub
How To Set Up Django with Postgres, Nginx, and Gunicorn on Ubuntu | DigitalOcean
How to Set Up a Firewall with UFW on Ubuntu | DigitalOcean
How To Install and Use Docker on Ubuntu 20.04 | DigitalOcean
สอนใช้งาน DigitalOcean หนึ่งใน cloud ยอดนิยมในปัจจุบัน เพิ่มทักษะการ depl…