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 services và 30-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.
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é.
Nội dung chính
- I. Tạo tài khoản Oracle Cloud
- II. Tạo máy ảo sử dụng hệ điều hành Ubuntu trên Cloud
- III. Thiết lập môi trường Python cho máy ảo Ubuntu
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.
Ở 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.
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.
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ủ.
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.
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.
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.
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.
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.
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.
Ở 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à:
- 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.
- 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.
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.
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à:
ssh -i C:\Users\mr-thinh.ssh\ssh-demo-ubuntu.key ubuntu@152.97.512.273
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.
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.
- Chuyển đổi thư mục làm việc đến thư mục
/tmp
với câu lệnhcd /tmp
- 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 - 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
- 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ậpyes
để chấp nhận điều khoản và tiến hành cài đặt Anaconda./home/ubuntu/anaconda3
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.
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.
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.
- Để 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.
- 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
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.
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
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:
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.
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.
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é.
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.
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ệnhcrontab -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ímEsc
để 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.
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
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.