oracle cloud homepage

Thiết lập Linux server chạy Python tự động sử dụng Oracle Cloud (Always Free)

Xin chào các bạn! Hôm nay Thịnh sẽ hướng dẫn các bạn thiết lập 1 máy ảo Ubuntu trên nền tảng Oracle Cloud để sử dụng cho việc lên lịch thực thi tự động các tác vụ với Python. Như các bạn đã biết, trong 1 bài chia sẻ của về chủ đề Phân tích dữ liệu với Python, tôi đã đầu tư 1 chiếc máy tính nhúng Raspberry Pi để sử dụng như 1 server giúp lên lịch thực thi Python script ví dụ như tự động refresh dữ liệu báo cáo, web scraping hay gửi tin nhắn cập nhật thông tin tự động thông qua Telegram bot. Tuy rằng cấu hình 1 chiếc Raspberry Pi 4B là quá ổn và đủ mạnh để dùng làm server thực thi Python, nhưng cũng có nhiều điểm bất cập chưa thể giải quyết triệt để điển hình là tuổi thọ của máy và phụ kiện khi phải hoạt động liên tục trong thời gian dài. Tiêu hao năng lượng cũng là 1 vấn đề nữa với Raspberry Pi tuy không lớn vì công suất tiêu thụ chỉ ở mức 15W/h. Dù sao nếu có 1 giải pháp thay thế để có 1 server chạy Python script 24/7 và không phải lo về chi phí thì thực sự quá tuyệt vời.

Không để các bạn phải đợi lâu, giải pháp tôi đang muốn giới thiệu tới các bạn chính là tạo 1 máy ảo Linux (đặc biệt là Ubuntu trong hướng dẫn này) trên dịch vụ Oracle Cloud sử dụng tài nguyên ưu đãi miễn phí từ Oracle Cloud Free Tier. Rốt cuộc Oracle Cloud Free Tier là gì mà hay ho đến vậy?

Oracle Cloud Free Tier gồm 2 gói ưu đãi là Always Free cloud services30-day Free Trial (với credit là $300 sử dụng trong 30 ngày). Trong đó gói Always Free cloud services cho phép bạn sử dụng một số tài nguyên hệ thống nhất định nhưng không giới hạn về thời gian.

always free resource oracle

Nào hãy cùng tôi bắt tay vào việc bằng cách theo dõi từng bước và thực hiện bạn nhé.

I. Tạo tài khoản Oracle Cloud

Để có thể thực hiện tạo tài khoản Oracle Cloud, bạn hãy truy cập trang web Tại đây và chọn Start for free như trong hình.

oracle cloud homepage
Truy cập trang chủ Oracle Cloud để tiến hành đăng ký tài khoản

Ở màn hình tiếp theo, bạn cần điền 1 số thông tin cơ bản bao gồm Quốc gia, Tên bạn và địa chỉ email để Oracle Cloud gửi thông tin xác thực tài khoản. Sau khi điền thông tin, bạn chọn Verify my email như hình dưới đây.

oracle account information
Cung cấp thông tin cơ bản để tạo tài khoản Oracle Cloud

Sau khi gửi thông tin cho hệ thống, bạn sẽ nhận được 1 email từ Oracle Cloud vào địa chỉ email bạn đã đăng ký kèm đường link cho phép bạn xác thực việc tạo tài khoản của mình.

oracle email verification
Xác thực tài khoản thông qua email

Sau khi mở đường link với nút Click here trong email như trên, bạn sẽ được yêu cầu tạo Password cho tài khoản, cung cấp thông tin Công ty, đặt tên cho tài khoản Cloud và chọn khu vực đặt máy chủ.

oracle cloud complete your profile
Hoàn thiện thông tin tạo tài khoản Oracle Cloud

Sau khi điền đầy đủ thông tin cần thiết, chọn Continue để chuyển đến bước điền thông tin địa chỉ của bạn.

oracle cloud profile address

Sau khi điền đầy đủ thông tin, bạn chọn Continue để tiếp tục chuyển đến bước thêm thông tin thẻ dùng làm phương thức thanh toán.

oracle add payment method
Thêm phương thức thanh toán

Tại bước thêm thông tin thẻ, các loại thẻ hợp lệ là Visa, Mastercard và Amex. Sau khi điền đầy đủ thông tin thẻ, bạn chọn Finish. Đến đây, hệ thống sẽ xác thực thẻ của bạn còn hiệu lực hay không bằng cách trừ số tiền khoảng 23 ngàn tương ứng với 1USD sau đó hoàn lại tiền cho bạn ngay lập tức.

oracle add card info
Thêm thông tin thẻ thanh toán

Sau khi hoàn tất bước này, bạn sẽ nhận được 1 email thông báo rằng yêu cầu tạo tài khoản của bạn đang được xem xét.

oracle cloud creation being review
Thông báo qua email: Yêu cầu đăng ký tài khoản Oracle Cloud đang được xem xét.

Thời gian để bạn nhận được phản hồi về việc yêu cầu được phê duyệt thông thường sẽ trong vòng 24h. Email thông báo tạo tài khoản Oracle Cloud thành công như dưới đây kèm thông tin tài khoản và đường link đăng nhập hệ thống.

oracle cloud get started
Thông tin đăng nhập Oracle Cloud được gửi qua email sau khi gửi yêu cầu tạo tài khoản (trong vòng 24h)

Bạn click vào Sign in to Oracle Cloud sẽ mở ra trang Dashboard như phần nội dung dưới đây. Như vậy ở phần I, bạn đã biết cách tạo cho mình 1 tài khoản Oracle Cloud để tận dụng các tài nguyên miễn phí Always Free cloud services rồi đấy.

II. Tạo máy ảo sử dụng hệ điều hành Ubuntu trên Cloud

Sau khi mở đường link trong email ở bước trên để truy cập Oracle Cloud dashboard, bạn sẽ được đưa tới giao diện làm việc như dưới đây. Chọn Create a VM instance để bắt đầu quá trình tạo máy ảo.

oracle cloud dashboard
Trang tổng quan quản lý các tài nguyên trên Oracle Cloud

Ở bước tiếp theo, bạn được yêu cầu đặt tên cho máy ảo của mình, ở đây mình đặt tên là ubuntu_demo như hình dưới. Có 2 điều cực kỳ quan trọng bạn cần làm ở bước này đó là:

  1. Chọn Change Image để lựa chọn cấu hình máy ảo sử dụng hệ điều hành Ubuntu (phiên bản hiện tại được hỗ trợ là Ubuntu 20.04 Minimal). Mặc định, hệ điều hành được chọn sẵn sẽ là Oracle Autonomous Linux sử dụng CentOS. Ubuntu là bản phân phối Linux phổ biến nhất và cũng khá dễ sử dụng vì vậy tôi cũng khuyên các bạn sử dụng lựa chọn này, cũng để thuận tiện trong các bước hướng dẫn tiếp theo.
  2. Chọn Save Private Key để lưu trữ khóa bảo mật cho phép bạn truy cập đến máy ảo được tạo thông qua kết nối bảo mật ssh.

Sau khi hoàn tất các thông tin và cài đặt như hình bên dưới, chọn nút Create để tạo máy ảo.

oracle create vmware instance

Hệ thống sẽ thực hiện tạo máy ảo theo thông tin bạn thiết lập và sẵn sàng sử dụng trong khoảng 5 phút. Tới đây 1 việc quan trọng bạn cần làm là copy địa chỉ Public IP Address như trong hình vào Notepad hoặc Google Keep để dùng cho việc thiết lập câu lệnh kết nối tới máy ảo thông qua Command Prompt trên Windows hoặc Terminal trên MacOS.

oracle ubuntu instance
Thông tin cấu hình máy ảo Ubuntu được tạo với Oracle Cloud

Câu lệnh này có dạng ssh –i <private_key_file> <username>@<public-ip-address>. Trong đó:

  • <private_key_file> là đường dẫn đến file Private Key bạn đã download và lưu ở bước thiết lập máy ảo ở trên. Ví dụ trong trường hợp của tôi sử dụng máy tính Windows và lưu trữ file tại địa chỉ C:\Users\mr-thinh\.ssh\ssh-demo-ubuntu.key

  • <username> mặc định là ubuntu

  • <public-ip-address> đã copy trong bước thiết lập instance

Câu lệnh tôi có được trong trường hợp này là:

Bây giờ hãy mở ứng dụng Command Prompt trên Windows (sử dụng phím Windows và nhập cụm từ tìm kiếm Cmd) hoặc Terminal trên MacOS (sử dụng tổ hợp phím Command + Space và nhập Terminal). Copy câu lệnh chúng ta vừa tạo ra ở trên sau đó paste vào Command Prompt/Terminal. Ở lần đầu tiên chạy câu lệnh này, bạn có thể sẽ được hỏi Are you sure you want to continue connecting (yes/no/[fingerprint])? –> Hãy nhập yes và nhấn Enter để tiếp tục.

oracle instance connect windows terminal

III. Thiết lập môi trường Python cho máy ảo Ubuntu

3.1. Cài đặt bản phân phối Anaconda cho Python

Giới thiệu cơ bản cho bạn nào chưa quen thuộc với Anaconda theo Wikipedia.

Anaconda là một bản phân phối các ngôn ngữ lập trình Python và R cho tính toán khoa học, nhằm mục đích đơn giản hóa việc triển khai và quản lý gói. Bản phân phối bao gồm các gói khoa học dữ liệu phù hợp với Windows, Linux và macOS

Để thực hiện cài đặt Anaconda, các bạn cần nhập các câu lệnh theo từng bước dưới đây vào Command Prompt/Terminal sau khi đã kết nối đến máy ảo.

  1. Chuyển đổi thư mục làm việc đến thư mục /tmp với câu lệnh cd /tmp
  2. Tải bản phân phối Anaconda cho Ubuntu với câu lệnh wget 'https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh'
    Ở đây, bản Anaconda được tải là bản Anaconda3-2021.05-Linux-x86_64, được thiết kế cho Python3.8.8
  3. Sau khi quá trình download hoàn tất, bạn cần mở file cài đặt Anaconda với câu lệnh bash Anaconda3-2021.05-Linux-x86_64.sh
  4. Bấm phím Enter để tiếp tục và enter tiếp không nghỉ cho đến khi các nội dung điều khoản & điều kiện được hiện ra hết. Tiếp theo màn hình Command Prompt sẽ hiện ra câu hỏi Do you accept the license terms? [yes|no] –> bạn cần nhập yes để chấp nhận điều khoản và tiến hành cài đặt Anaconda.
    Địa chỉ cài đặt mặc định của Anaconda sẽ là /home/ubuntu/anaconda3 -> Enter để tiếp tục nếu bạn không muốn thay đổi địa chỉ thư mục –> Enter tiếp để đồng ý và ngồi chờ cài đặt là xong.
oracle ubuntu instance anaconda
Tải Anaconda với wget trong ứng dụng Command Prompt (Windows)

Sau khi quá trình cài đặt hoàn tất, bạn cần đóng Command Prompt và mở lại sau đó kết nối tới Ubuntu instance để thấy sự thay đổi khi Anaconda đã được cài đặt thành công.

3.2. Tạo thư mục làm việc với Python

Để tạo 1 thư mục làm việc với Python và lưu trữ tất cả dữ liệu cho project của bạn có tên là python_workspace, hãy sử dụng câu lệnh mkdir python_workspace trong Command Prompt/Terminal (máy ảo đang được kết nối).

3.3 Kết nối SSH đến máy ảo Ubuntu thông qua Visual Studio Code

3.3.1. Cài đặt Open SSH trên Windows

SSH là một giao thức mạng dùng để thiết lập kết nối mạng một cách bảo mật. SSH là tính năng có sẵn trên máy tính Linux và MacOS. Tuy nhiên với Windows, để sử dụng SSH bạn cần cài đặt thêm phần mềm Putty hoặc cài đặt phần mở rộng của Windows để bật tính năng Open SSH.

Để bật tính năng Open SSH bạn bấm phím Windows sau đó tìm kiếm Apps & Feature để mở mục cài đặt như dưới đây.

windows optional features

Mở mục Optional features và tìm kiếm Open SSH, tick chọn tính năng và chọn mục Install như hình.

windows find openssh

Vậy là bạn đã bật thành công Open SSH trên Windows rồi đó.

3.3.2. Cài đặt Visual Studio Code (nếu chưa có)

Visual Studio Code (VSC) là 1 IDE mạnh mẽ sử dụng trong việc lập trình nhiều loại ngôn ngữ rất tiện dụng. Mình dùng VSC là công cụ chính để làm việc với Python. Trong bước này, mình hướng dẫn các bạn cài VSC, 1 số plugin để làm việc với máy ảo trên Oracle Cloud để tiện trong việc lập trình, upload và download file với máy ảo và máy local của bạn.

  1. Để cài đặt VSC, truy cập Tại đây và chọn phiên bản phù hợp với máy tính của bạn.
  2. Sau khi cài đặt xong VSC hoặc bạn đang sử dụng VSC, hãy chuyển đến mục Plugin và chắc các plugin sau phải được cài đặt: 
    • Remote – SSH
    • Oracle Developer Tools for VS Code
visual studio code plugin
Các plugin của VSC cần thiết sử dụng cho Tutorial này.

3.3.3. Kết nối đến máy ảo Ubuntu thông qua VSC

Trong khi mở VSC, sử dụng tổ hợp phím Ctrl + Shift + P (với Windows) hoặc Command + Shift + P và nhập add new để tìm kiếm lệnh Remote-SSH: Add new Host –> Sử dụng phím mũi tên để di chuyển và Nhấn Enter để chọn.

vsc add new host

Tiếp theo, nhập câu lệnh ssh như bạn đã sử dụng để kết nối với máy ảo thông qua Command Prompt và bấm Enter: ssh -i C:\Users\mr-thinh\.ssh\ssh-demo-ubuntu.key ubuntu@152.97.512.273

ssh connect vsc

Tiếp theo bạn sẽ được hỏi chọn nơi lưu cấu hình ssh, hãy chọn lựa chọn đầu tiên như mục được highlight màu xanh ở hình dưới đây:

ssh config vsc

Các mục cài đặt cơ bản cho VSC để lập trình trên máy ảo Ubuntu đến đây gần như đã xong. Tiếp theo bạn sẽ kết nối đến máy ảo và mở thư mục cần sử dụng để lập trình (như đã tạo ở phần trước).

Trong khi mở VSC, sử dụng tổ hợp phím Ctrl + Shift + P (với Windows) hoặc Command + Shift + P và nhập connect để tìm kiếm lệnh Remote-SSH: Connect to Host –> Sử dụng phím mũi tên để di chuyển, chọn địa chỉ IP của máy ảo bạn mới thêm để kết nối, Nhấn Enter để tiếp tục.

vsc connect remote ssh

Sau khi kết nối được thiết lập, VSC sẽ hiện cho bạn tùy chọn Open Folder ở máy ảo như hình bên dưới. Chọn Open Folder để tiếp tục. Sau đó chọn thư mục /home/ubuntu/ để xem trọn thư mục của máy ảo Ubuntu.

vsc open folder linux home

Giờ đây không gian làm việc của bạn với VSC để lập trình cho máy ảo Ubuntu trên Oracle Cloud sẽ như dưới đây. Bạn chỉ cần tạo 1 file .py bất kỳ trong thư mục python_workspace để bắt đầu lập trình. Các thao tác upload, download file trao đổi giữa máy ảo và máy local được thực hiện đơn giản bằng cách kéo thả hoặc lệnh chuột phải. Bạn hãy thử khám phá nhé.

vsc remote ssh workspace 1
Không gian lập trình Python trên máy ảo Ubuntu thông qua ứng dụng Visual Studio Code

Nếu có vướng mắc gì thêm, bạn cũng có thể tham khảo bài hướng dẫn chính thức của Visual Studio Code để kết nối đến Remote Machine Tại đây.

3.3.4. Cài đặt các thư viện Python cần thiết

Bạn có thể đăng nhập máy ảo thông qua Command Prompt/Terminal và sử dụng câu lệnh pip quen thuộc pip install your-package ví dụ như khi muốn cài đặt thư viện gspread, tôi sử dụng câu lệnh pip install gspread . Ngoài ra bạn có thể kéo cửa sổ Terminal tích hợp sẵn trong VSC từ cạnh dưới của phần mềm.

vsc terminal pip install

3.4. Lên lịch chạy Python (Schedule Python Script) với Crontab

3.4.1. Cài đặt Cron package trên Ubuntu

Cài đặt crontab trên máy ảo Ubuntu sử dụng lần lượt các câu lệnh sau trong Command Prompt/Terminal (đã kết nối máy ảo):

  • sudo apt-get update && apt-get upgrade
  • sudo apt-get install cron

3.4.2. Cài đặt Vim dùng làm Text editor

Để sử dụng ứng dụng cron, bạn buộc phải có 1 ứng dụng Text editor (chỉnh sửa văn bản) trên máy ảo, Vim là lựa chọn hoàn hảo nếu bạn cần 1 text editor gọn nhẹ, mạnh mẽ trên Linux.

Sử dụng câu lệnh apt-get install vim để cài đặt Vim.

3.4.3. Schedule Python Script với Cron

  • Để mở Cron và thêm/chỉnh các cron job, sử dụng câu lệnh crontab -e, để xem các cron job đã được cài đặt sử dụng câu lệnh crontab -l
  • Khi sử dụng crontab -e, tiếp theo bấm phím i để chọn Insert mode với Vim editor (cho phép chỉnh sửa nội dung văn bản) –> Khi chỉnh sửa xong, sử dụng phím Esc để thoát chế độ chỉnh sửa, gõ tổ hợp phím :x sau đó Enter để đóng Vim editor và thoát ứng dụng Cron.

Cấu trúc của 1 câu lệnh trong Cron khá đơn giản, mỗi 1 dấu * thể hiện cho 1 giá trị tương ứng với phút, giờ, ngày, tháng, ngày trong tuần như hình minh họa dưới đây.

crontab cheatsheet

Dưới đây là 1 số Cron job mình đã cài đặt và lên lịch chạy. Giải thích 1 chút với 1 ví dụ để các bạn dễ hiểu nhé:
57 8,15 * * * /home/ubuntu/anaconda3/bin/python '/home/ubuntu/python_notebook/script/news_scraping_v2.py' > /home/ubuntu/python_notebook/logs/news_scraping_bot_v2.log 2>&1

Câu lệnh này nói rằng, job được lên lịch chạy vào lúc 8:57 và 15:57 hàng ngày, đường dẫn thư mục của python trên máy là /home/ubuntu/anaconda3/bin/python , đường dẫn đến file Python Script là/home/ubuntu/python_notebook/script/news_scraping_v2.py, khi Python Sript được thực thi, file log sẽ được ghi vào đường dẫn thư mục là /home/ubuntu/python_notebook/logs/news_scraping_bot_v2.log và phiên bản log mới hơn sẽ ghi đè phiên bản cũ. Để tìm hiểu thêm về Cron job, các bạn có thể tham khảo bài viết Tại đây

crontab explain real example

Okay, vậy là tutorial dài thiệt dài này cuối cùng cũng có thể kết thúc, hy vọng với những hướng dẫn khá chi tiết như trên đây, bạn có thể tự mình thực hiện thiết lập cho mình môi trường thực thi Python lý tưởng trên Oracle Cloud Server và ứng dụng vào các dự án tự động hóa của mình. Nếu bài viết hữu ích, bạn hãy chia sẻ đến nhiều người nếu có thể nhé. Thịnh cũng rất vui nếu bạn để lại bình luận và cho biết bài viết giúp ích gì cho bạn. Xin chào và hẹn gặp lại trong những bài viết tiếp theo.

google sheet python
Đọc và xuất dữ liệu Google Sheets với Python & Jupyter Notebook
May 27, 2021
Tôi đã đến với Python như thế nào? Câu chuyện về trải nghiệm các “Tool” phân tích dữ liệu
March 28, 2021
Apache Airflow trên Raspberry Pi Terminal
Phân tích dữ liệu với Python | Bắt đầu với Jupyter Notebook, Google Colaboratory và Rasberry Pi
February 15, 2021

Leave a Reply

Your email address will not be published. Required fields are marked *