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:
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ênbring_to_picnic.tpl
để định dạng dữ liệu. Template này sẽ chuyển biếndata
thành dưới dạng biến mẫurows
. - 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ấ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é.