Cách chạy Python Scripts với Apache và mod_wsgi trên Ubuntu 22.04

theanh

Administrator
Nhân viên
Mô-đun Apache mod_wsgi cung cấp giao diện để lưu trữ các ứng dụng web dựa trên Python. Đây là lựa chọn tốt cho các hệ thống lưu trữ chuyên nghiệp vì nó cung cấp giải pháp hiệu suất cao, nhưng cũng hoạt động tốt cho các trang web nhỏ. Việc triển khai các ứng dụng được viết bằng các khung Python như Django, Web.py, Werkzug, Chery.py, TurboGears và Flask trở nên dễ dàng với mod_wsgi.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt và cấu hình mod_wsgi bằng máy chủ web Apache trên Ubuntu 22.04 LTS. Hướng dẫn này là phiên bản cập nhật của hướng dẫn Apache WSGI cho Ubuntu 20.04 từ Hitesh Jethva.

Điều kiện tiên quyết​

  • Máy chủ hoặc máy tính để bàn Ubuntu 22.04
  • Bạn phải là quản trị viên hệ thống và có quyền root hoặc sudo để cài đặt và cấu hình phần mềm này.

Bắt đầu​

Trước khi bắt đầu, bạn nên cập nhật hệ thống của mình lên phiên bản mới nhất. Bạn có thể cập nhật hệ thống của mình bằng lệnh sau:
Mã:
sudo apt update -y
sudo apt upgrade -y
Sau khi cập nhật hệ thống, hãy khởi động lại hệ thống để triển khai các thay đổi.

Cài đặt ngôn ngữ lập trình Python​

Theo mặc định, Python được cài đặt sẵn trên Ubuntu 22.04. trong trường hợp Python chưa được cài đặt, thì bạn có thể cài đặt bằng lệnh này:
Mã:
sudo apt install python3 libexpat1 -y
Ảnh chụp màn hình bên dưới hiển thị đầu ra của lệnh khi python đã được cài đặt.



Bây giờ hãy tiến hành bước tiếp theo.

Cài đặt máy chủ web Apache và mô-đun mod_wsgi​

Trong bước này, chúng ta sẽ cài đặt máy chủ web Apache và mô-đun Python mod_wsgi. Thực hiện lệnh sau để cài đặt cả hai ứng dụng. Các gói phần mềm phụ thuộc sẽ được cài đặt tự động.
Mã:
sudo apt install apache2 apache2-utils ssl-cert libapache2-mod-wsgi-py3 -y


Sau khi tất cả các gói được cài đặt, bạn có thể tiến hành bước tiếp theo.

Cấu hình mô-đun WSGI trong Apache​

Tiếp theo, bạn cần tạo một tập lệnh Python mới bên trong thư mục gốc web mặc định của Apache để phục vụ nó thông qua mô-đun WSGI Apache. Chúng tôi sẽ sử dụng một tập lệnh 'Hello World' nhỏ ở đây cho mục đích trình diễn.

Bạn có thể tạo tập lệnh python bằng lệnh sau:
Mã:
sudo nano /var/www/html/wsgitest.py
Thêm các dòng sau:
Mã:
def application(environ, start_response):
 status = '200 OK'
 output = b'Hello Howtoforge!\n'
 response_headers = [('Content-type', 'text/plain'),
 ('Content-Length', str(len(output)))]
 start_response(status, response_headers)
 return [output]
Lưu và đóng tệp. Sau đó, thay đổi quyền sở hữu tệp thành www-data bằng lệnh sau:
Mã:
sudo chown www-data:www-data /var/www/html/wsgitest.py
sudo chmod 775 /var/www/html/wsgitest.py
Tiếp theo, chỉnh sửa tệp cấu hình máy chủ ảo Apache để phục vụ tệp này qua giao thức HTTP.
Mã:
sudo nano /etc/apache2/sites-enabled/000-default.conf
Thêm nội dung sau dòng:
Mã:
WSGIScriptAlias /wsgi /var/www/html/wsgitest.py
ngay trước dòng
Mã:
Toàn bộ tệp máy chủ ảo trông như thế này:
Mã:
 # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf WSGIScriptAlias /wsgi /var/www/html/wsgitest.py# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Lưu các thay đổi trong trình soạn thảo văn bản và đóng trình soạn thảo. Bước tiếp theo là khởi động lại máy chủ web Apache để áp dụng các thay đổi.
Mã:
systemctl restart apache2

Kiểm tra tập lệnh WSGI Python 3​

Bây giờ máy chủ Apache HTTP đã được cấu hình để phục vụ tệp Python của chúng tôi qua giao thức HTTP.

Mở trình duyệt web và nhập URL http://your-server-ip/wsgi. thay thế your-server-ip bằng địa chỉ IP của máy chủ. Bạn sẽ nhận được một trang trắng với dòng chữ "Xin chào Howtoforge!".

Vậy là xong, giờ bạn đã có một máy chủ web Apache được cấu hình đúng để chạy các ứng dụng Python bằng mod_wsgi. Bước tiếp theo là triển khai ứng dụng web python của bạn vào thư mục /var/www/html/ và thay đổi dòng WSGIScriptAlias trong tệp /etc/apache2/sites-enabled/000-default.conf để khớp với tập lệnh bắt đầu của ứng dụng. Sau đó, khởi động lại Apache một lần nữa để áp dụng thay đổi cấu hình.

Tải xuống dưới dạng máy ảo​

Thiết lập này có sẵn dưới dạng tải xuống máy ảo ở định dạng ova/ovf (tương thích với VMWare và Virtualbox) dành cho những người đăng ký howtoforge.

Chi tiết đăng nhập cho VM​

  • Mật khẩu của người dùng 'admininstrator' là: 'howtoforge'. Người dùng quản trị có quyền sudo.
Vui lòng thay đổi tất cả mật khẩu khi đăng nhập lần đầu.
  • Địa chỉ IP của VM là 192.168.0.100
 
Back
Bên trên