สร้าง Server บน Digital Ocean ทำยังไง มาดูกัน Ep.5 (Configure server ด้วย Putty)
จากตอนที่ 4 ที่เราได้ upload data ไปที่ server ใน user ที่เราได้กำหนดไว้แล้วนะคับ อันดับต่อไปเราจะมา configure env ให้กับ server ต่อนะคับ
- เริ่มแรกให้เปิด Putty และ Login เข้าไปใน User เราก่อนนะคับ
- ให้ลง Firewall ของ Linux นะคับ (เปิดปิด port จะมาทำที่นี่หมดนะคับ)
sudo apt-get install ufw # ให้เข้ามาใน Project ก่อนนะคับ ค่อยวางคำสั่ง
#=============================================================ถ้า install ไม่ได้นะคับ ให้รันใน root ด้วย 2 คำสั่งนี้นะ แต่ถ้าลงได้ก็ผ่านเลย
usermod -aG sudo apiadmin # apiadmin = login name
su - apiadmin
3. ต่อไปเป็นการ Configure firewall ต่อนะคับ (ให้รันทีละคำสั่ง ทีละบรรทัดนะคับ)
sudo ufw default allow outgoing
sudo ufw default deny incomingsudo ufw allow 8000
sudo ufw allow 22
sudo ufw enable
sudo ufw status
4. ติดตั้ง pip และ venv นะ (ยังอยู่ใน Floder project นะ)
sudo apt-get install python3-pip
sudo apt-get install python3-venvsudo python3 -m venv venv # ตอนนี้เราจะได้ Folder venv ที่่เดียวกับ manage.py
5. ต่อไปให้ Activate venv แบบนี้นะ (เข้าไปใน folder Project ก่อน)
cd grassroot
source ./venv/bin/activate # หลัง activate จะมี (venv)อยุ่ด้านหน้าสุด
6. จากนั้นให้ถอยหลังออกมาที่ main folder of user ก่อนนะ (ให้ ls เห็น grassroot)
cd ..
sudo chown -R 777 'grassroot' # grassroot = project name นะ
sudo chmod -R 777 'grassroot' # 777 คือ ทำได้ทุกอย่างนะ# หลังเสดคำสั่งนี้ ถ้า ls อีกครั้ง grassroot จะเป็นสีเขียวนะ แสดงว่าเรา grant access สำเร็จ เราสามารถเข้าไปจัดการแก้ไขได้ล่ะ
7. ต่อมาเป็นการ install ทั้งหมดที่เราต้องใช้ใน venv ดังนี้
pip install --upgrade pip
pip install django==2.2
pip install requests
pip install pillow
pip install djangorestframework
8. ถัดไป ให้เราเข้าไปที่ path ที่เก็บ settings.py และ configure เพิ่มดังนี้ จากนั้นให้ save ให้เรียบร้อย (Ctrl+x, y, enter).
sudo nano settings.py
STATIC_ROOT = os.path.join(BASE_DIR,'static') #เพิ่มบรรทัดนี้บน STATIC_URL จากนั้น Save ออกมา และเพิ่มอีกบรรทัดนึงนะ
python manage.py collectstatic # จะโชว์ 183 static files copied to...
9. จากนั้นให้ run server ได้เลยนะ
python manage.py runserver 0.0.0.0:8000
โดยเราจะต้องเข้าถึงโดยใช้ ip จาก droplet แล้วตามด้วย port นะ ( ip droplet แทนที่ 0.0.0.0) ถ้าเข้าเว็บไม่ได้ ฟ้องเกี่ยวกับ host ให้เข้าไป Allow host ใน settings.py ก่อนนะคับ โดยแก้ไข ALLOW_HOST = [‘*’]
พบกันตอนถัดไปนะคับ ตอนหน้าจะทำให้สามารถเรียกไปที่ Domain name แทนที่ ip และ port นะคับ