Hướng dẫn triển khai các ứng dụng web Python với Bottle Micro Framework trên CentOS 7

Lượt xem
Home

Python là một ngôn ngữ hoàn hảo để lập trình web do tính linh hoạt và sở hữu khả năng hỗ trợ nhiều chức năng cấp cao. Các framework web giúp việc lập trình các ứng dụng web đơn giản hóa vì chúng kết nối nhiều thành phần cần thiết cho một giao diện web mạnh mẽ. Trong bài viết này, Vietnix sẽ hướng dẫn bạn cách thiết lập và sử dụng Bottle để tạo các ứng dụng web đơn giản trên server CentOS 7.

Yêu cầu để triển khai các ứng dụng web Python với Bottle Micro Framework trên CentOS 7

Để thực hiện hướng dẫn này, cần có:

  • Một server CentOS 7.
  • Biết cách chỉnh sửa file văn bản từ command line.
  • Một user có quyền sudo.

Trường hợp bạn muốn triển khai ứng dụng web Python với Bottle Micro Framework hiệu quả trên VPS, bạn cần chọn VPS với hiệu năng và tài nguyên đáng tin cậy, hỗ trợ cho môi trường và công cụ triển khai của bạn, cung cấp hỗ trợ kỹ thuật và đảm bảo bảo mật.

Ngoài ra, bạn cần nắm rõ những yêu cầu ứng dụng của bạn và lựa chọn nhà cung cấp VPS phù hợp để đảm bảo một triển khai thành công và ổn định.

Hiện tại Vietnix đang cung cấp các gói VPS tốc độ cao, đa dạng cấu hình, tính năng hiện đại, bảo mật cao gồm: VPS NVMe, VPS Giá Rẻ, VPS Cloud Server, VPS Cao Cấp và VPS GPU với nhiều mức giá khác nhau có thể đáp ứng được nhu cầu phát triển ứng dụng web Python với Bottle Micro Framework của bạn.

Nhanh tay liên hệ Vietnix để được tư vấn gói VPS tốc độ cao phù hợp với nhu cầu ngay hôm nay!

Các bước triển khai các ứng dụng web Python với Bottle Micro Framework trên CentOS 7

Bước 1 – Cài đặt Môi trường ảo cho Python

Python không chỉ là ngôn ngữ xây dựng nên Bottle mà còn được cài đặt mặc định trên CentOS. Phần này, Vietnix sẽ hướng dẫn bạn cách cài đặt package python-virtualenv để độc lập project Python khỏi môi trường Python của hệ thống.

Phần mềm virtualenv cho phép tạo một môi trường tách biệt, chứa các project Python để không ảnh hưởng đến toàn bộ hệ điều hành.

Cập nhật danh sách package:

sudo yum update

Cài đặt python-virtualenv từ repository:

sudo yum install python-virtualenv

Tạo một directory projects trong directory chính, sau đó tạo một môi trường ảo trong đó:

mkdir ~/projects
cd ~/projects
virtualenv --no-site-packages venv

Việc này sẽ tạo ra một directory có tên là venv trong directory projects. Ngoài ra, còn cài đặt một số tiện ích Python trong directory này và tạo cấu trúc directory để cài đặt các tool bổ sung.

Bước 2 – Kích hoạt Môi trường ảo cho Python

Để làm việc với project, bạn phải kích hoạt môi trường ảo: 

source venv/bin/activate

Prompt lệnh sẽ thay đổi để phản ánh rằng đang hoạt động trong môi trường ảo.

Nếu cần kết nối lại sau, hãy đảm bảo đã kích hoạt lại môi trường bằng các lệnh sau:

cd ~/projects
source venv/bin/activate

Nếu cần thoát khỏi môi trường ảo, bạn có thể nhập lệnh này bất cứ lúc nào:

deactivate

Lưu ý: Không hủy kích hoạt môi trường ảo vào thời điểm này.

Bước 3 – Cài đặt Bottle

Một trong những tool mà chương trình virtualenv đã cài đặt là pip. Tool này cho phép bạn dễ dàng cài đặt các package Python từ Python package index, một repository online.

Nếu muốn tìm kiếm các package Python cần thiết với Bottle, có thể dùng dòng lệnh sau:

pip search bottle

Bắt đầu bằng cách cài đặt package Bottle:

pip install bottle

Sau khi quá trình hoàn tất, giờ bạn có thể sử dụng framework Bottle trong các ứng dụng của mình.

Bước 4 – Tạo ứng dụng Bottle đầu tiên

Bottle giống như hầu hết các framework khác, đều triển khai một phiên bản của mẫu phần mềm MVC. MVC là viết tắt của model (mô hình), view (chế độ xem) và controller (bộ điều khiển) mô tả quyết định tách biệt các chức năng khác nhau của giao diện người dùng. Trong đó:

  • Model đại diện cho một tập hợp dữ liệu và chịu trách nhiệm lưu trữ, truy vấn và cập nhật dữ liệu.
  • View mô tả cách thông tin sẽ được hiển thị cho người dùng, được sử dụng để định dạng và kiểm soát việc trình bày dữ liệu.
  • Controller là trung tâm xử lý chính của ứng dụng, quyết định cách phản hồi yêu cầu của người dùng.

Các ứng dụng Bottle có thể cực kỳ đơn giản. Ở dạng đơn giản nhất, chúng có thể triển khai tất cả các thành phần này chỉ trong một file. Vietnix sẽ hướng dẫn bạn cách tạo một ứng dụng “hello world” để hiểu cụ thể cụ hơn.

Tạo một ứng dụng Python có tên hello.py bằng text editor:

nano ~/projects/hello.py

Tại đây bạn sẽ được hướng dẫn từng dòng một, bao gồm file hoàn chỉnh ở cuối phần này.

Trong file này, dòng đầu tiên sẽ import thêm một số chức năng từ package Bottle. Điều này sẽ cho phép sử dụng các tool framework trong ứng dụng:

hello.py
from bottle import route, run

Dòng này dùng để cho chương trình biết rằng bạn muốn nhập route và chạy các module từ package Bottle.

  • Module run đang import có thể được sử dụng để chạy ứng dụng trên server phát triển, điều này rất thuận tiện để xem kết quả chương trình một cách nhanh chóng.
  • Module route đang import chịu trách nhiệm cho ứng dụng biết những yêu cầu URL nào được xử lý bởi chức năng Python nào. Các ứng dụng Bottle thực hiện route bằng cách gọi một hàm Python duy nhất cho mỗi URL được yêu cầu. Sau đó trả kết quả của hàm cho người dùng.

Bạn có thể thêm một route ngay bây giờ khớp với mẫu URL /hello. Thêm một dòng mới ở dưới cùng của file:

hello.py
from bottle import route, run

@route('/hello')

Decorator của route này khớp với URL /hello, vì vậy khi đường dẫn đó được yêu cầu trên server, hàm trực tiếp chịu trách nhiệm sẽ được thực thi. Thêm hai dòng nữa vào cuối file:

hello.py
from bottle import route, run

@route('/hello')
def hello():
    return "<h1>Hello World!</h1>"

Đây là một chức năng rất đơn giản, chỉ thực hiện yêu cầu của chức năng route: trả về một giá trị có thể được hiển thị trong trình duyệt web. Trong trường hợp này, giá trị là một chuỗi HTML đơn giản. Có thể xóa các tag tiêu đề h1 và thông tin tương tự sẽ được hiển thị theo kiểu undecorated.

Cuối cùng, chạy ứng dụng của mình bằng development server . Thêm dòng cuối cùng và bây giờ file đã hoàn tất:

hello.py
from bottle import route, run

@route('/hello')
def hello():
    return "<h1>Hello World!</h1>"

run(host='0.0.0.0', port=8080)

Dòng này sẽ chạy server instance.

  • Việc truyền tham số host='0.0.0.0' sẽ cung cấp nội dung cho bất kỳ máy nào mà không chỉ cho máy cục bộ. Điều này rất quan trọng vì ứng dụng đang được lưu trữ từ xa.
  • Tham số port chỉ định cổng mà thông số sẽ sử dụng.

Lưu và đóng file.

Chạy ứng dụng này bằng lệnh:

python ~/projects/hello.py

Bạn có thể truy cập ứng dụng trong trình duyệt web bằng cách truy cập địa chỉ IP của bạn, tiếp theo là cổng đã chọn để chạy (8080), rồi route đã tạo (/hello):

  • http://your_server_ip:8080/hello

Ứng dụng sẽ có hiển thị như sau:

Hello World
Hello World

Bạn có thể dừng server bất cứ lúc nào bằng cách nhập:

CTRL-C

Bước 5 – Tạo Model Bottle

Vậy là bạn đã triển khai ứng dụng đầu tiên nhưng bước đó không thực sự triển khai các nguyên tắc MVC hoặc làm bất cứ điều gì đặc biệt. Ở phần này, Vietnix sẽ hướng dẫn bạn triển khai một ứng dụng phức tạp hơn.

Đầu tiên là model, một phần của chương trình để xử lý việc lưu trữ dữ liệu. Bottle có thể dễ dàng triển khai nhiều loại backend cho dữ liệu thông qua việc sử dụng các plugin.

Sử dụng file cơ sở dữ liệu SQLite cho cơ sở dữ liệu của bạn. Đây là một cơ sở dữ liệu cực kỳ đơn giản được thiết kế cho các tác vụ nhẹ.

SQLite được bao gồm trong image mặc định của CentOS 7, nhưng nếu bạn cần cài đặt lại, chỉ đơn giản bằng cách nhập lệnh:

sudo yum install sqlite

Image mới đã được cài đặt.

Bạn cũng cần tải xuống và cài đặt plugin Bottle. Nhập lệnh sau để cho phép plugin sử dụng các cơ sở dữ liệu này:

pip install bottle-sqlite

Bây giờ đã có đủ các thành phần, bạn sẽ được hướng dẫn cách tạo một file Python mà có khả năng tạo cơ sở dữ liệu SQLite với một số dữ liệu. Dù có thể làm điều này trong trình thông dịch Python, nhưng bạn nên tạo một file mới để thuận tiện hơn:

Tạo file:

nano ~/projects/picnic_data.py

Để tạo ra một cơ sở dữ liệu chứa đầy các giá trị là các vật dụng cần thiết, nhập:

picnic_data.py
import sqlite3
db = sqlite3.connect('picnic.db')
db.execute("CREATE TABLE picnic (id INTEGER PRIMARY KEY, item CHAR(100) NOT NULL, quant INTEGER NOT NULL)")
db.execute("INSERT INTO picnic (item,quant) VALUES ('bread', 4)")
db.execute("INSERT INTO picnic (item,quant) VALUES ('cheese', 2)")
db.execute("INSERT INTO picnic (item,quant) VALUES ('grapes', 30)")
db.execute("INSERT INTO picnic (item,quant) VALUES ('cake', 1)")
db.execute("INSERT INTO picnic (item,quant) VALUES ('soda', 4)")
db.commit()

Trong tập tin này, bạn sẽ cần làm các việc sau:

  • Import package SQLite.
  • Thực hiện lệnh để tạo bảng và chèn dữ liệu.
  • Xác nhận các thay đổi.

Lưu và đóng file.

Thực thi file, file này sẽ tạo file cơ sở dữ liệu có tên là picnic.db trong directory hiện tại:

python ~/projects/picnic_data.py

Nếu muốn, bạn có thể dùng lệnh ls trong directory để xác nhận rằng file cơ sở dữ liệu đã được tạo.

Phần model của chương trình giờ đã tương đối hoàn chỉnh. Có thể thấy rằng model ảnh hưởng một chút cách thức điều khiển sẽ phải hoạt động để tương tác với dữ liệu.

Bước 6 – Tạo Controller cho Bottle

Bây giờ bạn đã có cơ sở dữ liệu để có thể bắt đầu phát triển ứng dụng. Điều này chủ yếu sẽ thực hiện chức năng điều khiển và cũng là file gần giống nhất với ứng dụng đầu tiên.

Tạo một file có tên là picnic.py để lưu trữ ứng dụng chính:

nano ~/projects/picnic.py

Giống như ở phần trước, Vietnix sẽ hướng dẫn bạn từng dòng và hiển thị file đã hoàn thành ở bước cuối.

Trong file này, bạn cần import một số thứ từ package Bottle. Bạn sẽ cần một số module bổ sung mà chưa từng được sử dụng trước đây. Ngoài ra, còn cần phải import chức năng SQLite:

picnic.py
import sqlite3
from bottle import route, run, template

Tiếp theo, xác định một route phù hợp với đường dẫn URL /picnic:

picnic.py
import sqlite3
from bottle import route, run, template

@route('/picnic')

 Triển khai chức năng kết nối với cơ sở dữ liệu, lấy dữ liệu từ bảng và gọi chế độ xem để render trang.

picnic.py
import sqlite3
from bottle import route, run, template

@route('/picnic')
def show_picnic():
    db = sqlite3.connect('picnic.db')
    c = db.cursor()
    c.execute("SELECT item,quant FROM picnic")
    data = c.fetchall()
    c.close()
    output = template('bring_to_picnic', rows=data)
    return output
  • Lệnh dùng để kết nối với cơ sở dữ liệu là db = sqlite3.connect('picnic.db')
  • Truy vấn cơ sở dữ liệu và chọn các tất cả giá trị bằng 4 dòng code tiếp theo.
  • Dòng dùng để gọi chế độ xem cho định dạng dữ liệu là output = template('bring_to_picnic', rows=data). Lệnh này sẽ gọi ra một template (view) có tên bring_to_picnic.tpl để định dạng dữ liệu. Template này sẽ chuyển biến data thành dưới dạng biến mẫu rows.
  • Dòng cuối sẽ trả về output được định dạng cho người dùng.

Cuối cùng, chúng ta cần thêm lệnh run để chạy server thực tế:

picnic.py
import sqlite3
from bottle import route, run, template

@route('/picnic')
def show_picnic():
    db = sqlite3.connect('picnic.db')
    c = db.cursor()
    c.execute("SELECT item,quant FROM picnic")
    data = c.fetchall()
    c.close()
    output = template('bring_to_picnic', rows=data)
    return output

run(host='0.0.0.0', port=8080)

Lưu và đóng tập tin.

Tạo file mẫu bring_to_picnic.tpl này trong phần tiếp theo.

Bước 7 – Tạo View cho Bottle 

Sau khi đã có model và controller, giờ thứ duy nhất còn lại để tạo là view. Điều này có thể được xử lý dễ dàng bằng cách sử dụng tool mẫu tích hợp sẵn của Bottle.

Ứng dụng sẽ tìm kiếm một mẫu khớp với tên được cung cấp trong chức năng mẫu, có kết thúc bằng .tpl. Mẫu này có thể nằm trong directory chính của project hoặc trong một directory có tên là view.

Tạo một file khớp với file mà đã được gọi với hàm mẫu trong output ở script trước:

nano ~/projects/bring_to_picnic.tpl

Trong file này, có thể kết hợp HTML và lập trình. Rất đơn giản, bạn hãy sử dụng một vòng lặp để tạo một bảng để điền dữ liệu model. Thêm các dòng sau vào file:

bring_to_picnic.tpl
<h1>Things to bring to our picnic</h1>

<table>
    <tbody>
        <tr><th>Item</th><th>Quantity</th></tr>
        %for row in rows:
        <tr>
        %for col in row:
            <td>{{col}}</td>
        %end
        </tr>
    %end
    <tbody>
</table>

Các dòng lệnh này sẽ render trang trong HTML.

  • Ngôn ngữ tạo khuôn mẫu ở đây chủ yếu là Python.
  • Biến rows mà đã được chuyển đến mẫu có sẵn để sử dụng khi thiết kế output.
  • Bạn có thể nhập các dòng Python bằng cách đặt trước chúng bằng %.
  • Truy cập các biến trong HTML bằng cách sử dụng cú pháp {{var}}.

Lưu và đóng file.

Bước 8 – Khởi động Ứng dụng Bottle

Ứng dụng hiện đã hoàn tất.

Bạn có thể bắt đầu chương trình bằng cách gọi Python trên file chính:

python ~/projects/picnic.py

Có thể xem ứng dụng vừa hoàn thành bằng cách truy cập địa chỉ IP và cổng bằng route URL mà bạn đã tạo:

  • http://your_server_ip:8080/picnic

Trang web sẽ có hiển thị như sau:

Những đoạn hiển thị trên trang web
Những đoạn hiển thị trên trang web

Nhấn CTRL-C để dừng ứng dụng.

Bước 9 – Tải lên ứng dụng của riêng bạn (Không bắt buộc)

Để tải lên ứng dụng Bottle của riêng bạn, bạn nên sao chép tất cả các file project vào directory này:

~/projects/

Ví dụ:

scp myproject.py sammy@your_server_ip:~/projects/

Tải lên tất cả các file được liên kết với project này bằng cách tương tự như trên. Có thể dùng SFTP để tải file lên, nếu chưa quen với scp.

Bước 10 – Bắt đầu ứng dụng của riêng bạn (Không bắt buộc)

Kích hoạt môi trường ảo (nếu bạn chưa thực hiện).

cd ~/projects/
source venv/bin/activate

Sử dụng lệnh python để khởi động ứng dụng. Bạn có thể bắt đầu bằng tiến trình ở chế độ nền, nghĩa là bạn có thể đóng thiết bị terminal và ứng dụng sẽ tiếp tục chạy:

nohup python ~/projects/myproject.py &

Ở output, bạn sẽ thấy số ID tiến trình và thông báo sau:

Output
[1] 20301
(venv)[sammy@bottle projects]$ nohup: ignoring input and appending output to ‘nohup.out’

Sau khi bạn đã sẵn sàng cho giai đoạn triển khai thực tế, bạn nên lập một kế hoạch chi tiết, tỉ mỉ hơn cho ứng dụng của mình. (Chỉ khởi động trong background có nghĩa là ứng dụng sẽ dừng sau khi khởi động lại server).

Vietnix với hơn 10 năm hoạt động đã đồng hành với hơn 50.000 khách hàng cá nhân và doanh nghiệp. Đến năm 2022 Vietnix vinh dự được nhận giải Thương hiệu Việt Nam xuất sắc. Đồng thời, với tỷ lệ 97% khách hàng sau khi sử dụng dịch vụ tại Vietnix đã giới thiệu đến bạn bè, đồng nghiệp cũng là một minh chứng cho chất lượng dịch vụ luôn đáp ứng được mọi nhu cầu của khách hàng.

Nhanh tay đăng ký Vietnix VPS ngay và trải nghiệm dịch vụ ổn định, tốc độ cao, hỗ trợ nhanh chóng với nhiều ưu đãi hấp dẫn nhất.

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Hotline: 1800 1093.
  • Email: sales@vietnix.com.vn

Lời kết

Vậy là giờ bạn đã có thể xây dựng các ứng dụng phức tạp bằng cách sử dụng một micro-framework cơ bản như Bottle. Mặc dù các ví dụ Vietnix đưa ra rất đơn giản, nhưng giúp bạn có thể dễ dàng hiểu để tận dụng chức năng nâng cao hơn. Cảm ơn bạn đã tham khảo bài viết này của Vietnix, nếu thấy có nhiều thông tin hữu ích, đừng quên chia sẻ cho mọi người nhé.

Chia sẻ lên

Theo dõi trên

Logo Google new

Đánh giá

5/5 - (91 bình chọn)

Hưng Nguyễn

Kết nối với mình qua

Icon Quote
Icon Quote
Đăng ký nhận tin
Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vietnix

Bình luận

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận