Thứ tư, 29/04/2015 | 00:00 GMT+7

Cách thiết lập server Apache, MySQL và Python (LAMP) mà không cần khung trên Ubuntu 14.04

Bài viết này sẽ hướng dẫn bạn cách cài đặt một server với Python 3, MySQL và Apache2 mà không cần đến sự trợ giúp của một khuôn khổ. Đến cuối hướng dẫn này, bạn sẽ có đầy đủ khả năng chạy hệ thống đầu tiên vào production .

Django thường là điểm dừng duy nhất cho mọi thứ Python; nó tương thích với gần như tất cả các version Python, được đóng gói sẵn với một server tùy chỉnh và thậm chí có database cài đặt bằng một cú nhấp chuột. Việc cài đặt một hệ thống vani mà không có công cụ mạnh mẽ này có thể rất khó khăn, nhưng giúp bạn có được cái nhìn sâu sắc vô giá về cấu trúc server ngay từ đầu.

Hướng dẫn này chỉ sử dụng trình cài đặt gói, cụ thể là apt-get và Pip. Trình cài đặt gói chỉ đơn giản là các chương trình nhỏ giúp việc cài đặt mã trở nên thuận tiện và dễ quản lý hơn nhiều. Nếu không có chúng, việc duy trì thư viện, module và các bit mã khác có thể trở thành một công việc cực kỳ lộn xộn.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

  • Một server Ubuntu 14.04.
  • Một user không phải root có quyền sudo , bạn có thể cài đặt theo hướng dẫn này .

Bước 1 - Đặt Python 3 làm mặc định

Trong bước này, ta sẽ đặt Python 3 làm mặc định cho lệnh python của ta .

Trước tiên, hãy kiểm tra version Python hiện tại của bạn.

  • python --version

Trên server Ubuntu 14.04 mới, điều này sẽ xuất ra:

Python 2.7.6 

Ta muốn python chạy Python 3. Vì vậy, trước tiên, hãy xóa file binary 2.7 cũ.

  • sudo rm /usr/bin/python

Tiếp theo, tạo một softlink đến hệ binary Python 3 ở vị trí của nó.

  • sudo ln -s /usr/bin/python3 /usr/bin/python

Nếu bạn chạy lại python --version , bây giờ bạn sẽ thấy Python 3.4.0 .

Bước 2 - Cài đặt Pip

Trong phần này, ta sẽ cài đặt Pip, trình cài đặt gói được khuyến khích cho Python.

Đầu tiên, hãy cập nhật index gói của hệ thống. Điều này sẽ đảm bảo các gói cũ hoặc lỗi thời không can thiệp vào quá trình cài đặt.

  • sudo apt-get update

Pip cho phép ta dễ dàng quản lý bất kỳ gói Python 3 nào mà ta muốn có. Để cài đặt nó, chỉ cần chạy như sau:

  • sudo apt-get install python3-pip

Để có cái nhìn tổng quan về Pip, bạn có thể đọc hướng dẫn này .

Bước 3 - Cài đặt MySQL

Trong phần này, ta sẽ cài đặt và cấu hình MySQL.

Cài đặt SQL rất đơn giản:

  • sudo apt-get install mysql-server

Nhập password mạnh cho user root MySQL khi được yêu cầu và ghi nhớ password đó, vì ta cần nó sau này.

Server MySQL sẽ bắt đầu sau khi cài đặt hoàn tất. Sau khi cài đặt, hãy chạy:

  • mysql_secure_installation

Cài đặt này sẽ đưa bạn qua một loạt các bước tự giải thích. Đầu tiên, bạn cần nhập password root mà bạn đã chọn cách đây một lúc. Câu hỏi đầu tiên sẽ hỏi bạn có muốn thay đổi password root không, nhưng vì bạn vừa đặt nên nhập n . Đối với tất cả các câu hỏi khác, hãy nhấn ENTER để chấp nhận câu trả lời mặc định.

Tuy nhiên, Python 3 yêu cầu một cách kết nối với MySQL. Có một số tùy chọn, như MySQLclient, nhưng để đơn giản hóa module , hướng dẫn này sẽ sử dụng pymysql . Cài đặt nó bằng Pip:

  • sudo pip3 install pymysql

Bước 4 - Cài đặt Apache 2

Trong phần này, ta sẽ cài đặt Apache 2 và đảm bảo nó nhận ra các file Python là file thực thi.

Cài đặt Apache bằng apt-get:

  • sudo apt-get install apache2

Giống như MySQL, server Apache sẽ bắt đầu sau khi quá trình cài đặt hoàn tất.

Lưu ý : Sau khi cài đặt, một số cổng được mở vào internet. Đảm bảo xem phần kết luận của hướng dẫn này để biết các tài nguyên về bảo mật.

Ta muốn đặt folder root của trang web của ta ở một vị trí an toàn. Server theo mặc định tại /var/www/html . Để giữ quy ước, ta sẽ tạo một folder mới cho mục đích thử nghiệm, được gọi là test , ở cùng một vị trí.

  • sudo mkdir /var/www/test

Cuối cùng, ta phải đăng ký Python với Apache. Để bắt đầu, ta tắt các quy trình đa stream .

  • sudo a2dismod mpm_event

Sau đó, ta cấp cho Apache quyền rõ ràng để chạy các tập lệnh.

  • sudo a2enmod mpm_prefork cgi

Tiếp theo, ta sửa đổi cấu hình Apache thực tế, để khai báo rõ ràng các file Python là file có thể chạy và cho phép các file thực thi như vậy. Mở file cấu hình bằng nano hoặc editor yêu thích của bạn.

  • sudo nano /etc/apache2/sites-enabled/000-default.conf

Thêm nội dung sau ngay sau dòng đầu tiên, có nội dung <VirtualHost *:80\> .

<Directory /var/www/test>     Options +ExecCGI     DirectoryIndex index.py </Directory> AddHandler cgi-script .py 

Đảm bảo rằng khối <Directory> của bạn được lồng vào bên trong khối <VirtualHost> , giống như vậy. Đảm bảo bạn cũng thụt lề chính xác với các tab.

/etc/apache2/sites-enabled/000-default.conf
 <VirtualHost *:80>     <Directory /var/www/test>         Options +ExecCGI         DirectoryIndex index.py     </Directory>     AddHandler cgi-script .py      ... 

Khối Thư mục này cho phép ta chỉ định cách Apache xử lý folder đó. Nó cho Apache biết rằng folder /var/www/test chứa các file thực thi, coi index.py là file mặc định, sau đó xác định các file thực thi.

Ta cũng muốn cho phép các file thực thi trong folder trang web của bạn , vì vậy ta cũng cần thay đổi đường dẫn cho DocumentRoot . Tìm dòng có nội dung DocumentRoot /var/www/html , một vài dòng bên dưới comment dài ở đầu file và sửa đổi thành đọc /var/www/test thay thế.

DocumentRoot /var/www/test 

Tệp của bạn bây giờ sẽ giống như sau.

/etc/apache2/sites-enabled/000-default.conf
 <VirtualHost *:80>         <Directory /var/www/test>                 Options +ExecCGI                 DirectoryIndex index.py         </Directory>         AddHandler cgi-script .py          ...          DocumentRoot /var/www/test          ... 

Lưu và thoát khỏi file . Để những thay đổi này có hiệu lực, hãy khởi động lại Apache.

  • sudo service apache2 restart

Lưu ý : Apache 2 có thể đưa ra một cảnh báo nói về domain đủ điều kiện của server ; điều này có thể được bỏ qua vì chỉ thị ServerName có ít ứng dụng vào thời điểm này. Cuối cùng, chúng được sử dụng để xác định domain phụ lưu trữ, sau khi các bản ghi cần thiết được tạo.

Nếu dòng cuối cùng của kết quả ghi [ OK ] , Apache đã khởi động lại thành công.

Bước 5 - Kiểm tra sản phẩm cuối cùng

Trong phần này, ta sẽ xác nhận các thành phần riêng lẻ (Python, MySQL và Apache) có thể tương tác với nhau bằng cách tạo một trang web và database mẫu.

Đầu tiên, hãy tạo một database . Đăng nhập vào MySQL. Bạn cần nhập password root MySQL mà bạn đã đặt trước đó.

  • mysql -u root -p

Thêm một database ví dụ được gọi là ví dụ .

  • CREATE DATABASE example;

Chuyển sang database mới.

  • USE example;

Thêm một bảng cho một số dữ liệu mẫu mà ta sẽ thêm ứng dụng Python.

  • CREATE TABLE numbers (num INT, word VARCHAR(20));

Nhấn CTRL + D để thoát. Để biết thêm thông tin cơ bản về SQL, bạn có thể đọc hướng dẫn MySQL này.

Bây giờ, hãy tạo một file mới cho ứng dụng Python đơn giản của ta .

  • sudo nano /var/www/test/index.py

Copy paste đoạn mã sau vào. Các comment bên trong mô tả chức năng của mỗi đoạn mã. Đảm bảo thay thế giá trị passwd bằng password MySQL root mà bạn đã chọn trước đó.

#!/usr/bin/python  # Turn on debug mode. import cgitb cgitb.enable()  # Print necessary headers. print("Content-Type: text/html") print()  # Connect to the database. import pymysql conn = pymysql.connect(     db='example',     user='root',     passwd='your_root_mysql_password',     host='localhost') c = conn.cursor()  # Insert some example data. c.execute("INSERT INTO numbers VALUES (1, 'One!')") c.execute("INSERT INTO numbers VALUES (2, 'Two!')") c.execute("INSERT INTO numbers VALUES (3, 'Three!')") conn.commit()  # Print the contents of the database. c.execute("SELECT * FROM numbers") print([(r[0], r[1]) for r in c.fetchall()])  

Lưu và thoát.

Tiếp theo, sửa quyền trên file mới tạo. Để biết thêm thông tin về mã quyền gồm ba chữ số, hãy xem hướng dẫn về quyền của Linux .

  • sudo chmod 755 /var/www/test/index.py

Bây giờ, hãy truy cập server của bạn bằng cách truy cập http:// your_server_ip bằng trình duyệt yêu thích của bạn. Bạn sẽ thấy như sau:

your_server_ip '> http: // your_server_ip
[(1, 'One!'), (2, 'Two!'), (3, 'Three!')] 

Xin chúc mừng! Server của bạn hiện đang trực tuyến.

Kết luận

Đến đây bạn có một server đang hoạt động có thể chạy Python 3 với database SQL mạnh mẽ. Server hiện cũng đã được cấu hình để bảo trì dễ dàng, thông qua các trình cài đặt gói được ghi chép và cài đặt tốt.

Tuy nhiên, ở trạng thái hiện tại, server rất dễ bị người ngoài xâm nhập. Trong khi các yếu tố như mã hóa SSL không cần thiết cho chức năng server của bạn, chúng là tài nguyên không thể thiếu cho một server an toàn, tin cậy . Tìm hiểu thêm bằng cách đọc về cách cấu hình Apache , cách tạo certificate SSL Apachecách bảo mật server Linux của bạn .


Tags:

Các tin liên quan

Cách cấu hình bộ đệm nội dung Apache trên CentOS 7
2015-04-13
Cách cấu hình bộ đệm nội dung Apache trên Ubuntu 14.04
2015-04-10
Cách cài đặt database Apache Accumulo NoSQL thân thiện với dữ liệu lớn trên Ubuntu 14.04
2015-03-19
Cách cung cấp các ứng dụng Django với Apache và mod_wsgi trên CentOS 7
2015-03-19
Cách cung cấp các ứng dụng Django với Apache và mod_wsgi trên Ubuntu 14.04
2015-03-18
Cách cấu hình Apache bằng Ansible trên Ubuntu 14.04
2015-02-18
Apache vs Nginx: Cân nhắc thực tế
2015-01-28
Cách cài đặt một Apache, MySQL và PHP (FAMP) trên FreeBSD 10.1
2015-01-14
Cách cài đặt WordPress với Apache trên FreeBSD 10.1
2015-01-14
Cách triển khai ứng dụng Rails với Passenger và Apache trên Ubuntu 14.04
2014-11-21