+1

5 bước cài đặt LEMP stack trên Ubuntu 16.04

Giới thiệu

LEMP stack là một nhóm các phần mềm được sử dụng để tạo nên một web server xử lý ngôn ngữ PHP. Nhóm phần mềm này gồm hệ điều hành Linux, phần mềm chạy dịch vụ web server là Nginx. Cơ sở dữ liệu được lưu trữ trên MySQL và ngôn ngữ động PHP. Trong bài hướng dẫn này mình sẽ hướng dẫn các bạn 5 bước cài đặt LEMP stack trên Ubuntu 16.04. Các bạn có thể cài Ubuntu trên máy ảo hoặc xem hướng dẫn khởi tạo server Ubuntu ở Vultr.

Chuẩn bị cài đặt Lemp stack

Trước khi tiến hành cài đặt, bạn phải chắc chắn rằng bạn có tài khoản root hoặc tài khoản thông thường với quyền sudo. Nếu bạn tạo server ở Vultr, bạn sẽ được cung cấp tài khoản root, bạn có thể kết nối SSH hoặc sử dụng terminal của Vultr. Hãy đăng nhập với quyền như trên vào server. Đầu tiên chúng ta sẽ update server của chúng ta bằng lệnh update: sudo apt-get update Việc này sẽ cập nhật lại danh mục các gói cài đặt nội bộ trên server. Trước khi bắt đầu cài đặt bạn nên chạy lệnh update 1 lần lúc đăng nhập vào server. Bây giờ chúng ta hãy bắt đầu cài đặt LEMP Stack!

Cài đặt

Bước 1: Cài đặt Nginx web server

Web server là nơi xử lý các yêu cầu từ trình duyệt. Nginx là một web server hiện đại và có hiệu năng xử lý cao. Hiện nay rất nhiều hãng tên tuổi cũng sử dụng Nginx cho web server của họ. Hãy chắc chắn rằng bạn đã chạy lệnh update trước khi cài Nginx. Lệnh sau sẽ tự động cài đặt Nginx vào hệ thống. sudo apt-get -y install nginx Sau khi cài đặt xong, hãy thử mở trình duyệt và truy cập vào server của bạn để xem kết quả. Nếu bạn chưa có tên miền trỏ về server, bạn có thể thử truy cập bằng IP public của server. curl -4 icanhazip.com Khi đã biết được địa chỉ IP của server, hãy mở trình duyệt và gõ địa chỉ vào kiểm thử. Trong đó ip_address là IP của server tìm được ở trên. http://ip_address Bạn nhìn thấy Welcome to nginx có nghĩa là bạn đã cài đặt thành công nginx.

Bước 2: Cài đặt MySQL

Bước tiếp theo khi cài đặt lemp stack là cài đặt MySQL để lưu trữ và quản lý dữ liệu. MySQL là một hệ quản trị cơ sở dữ liệu sử dụng ngôn ngữ SQL. Bạn có thể cài đặt MySQL bằng lệnh sudo apt-get -y install mysql-server Bạn sẽ được yêu cầu nhập mật khẩu cho tài khoản root để sử dụng trong hệ thống MySQL. Sau khi cài đặt xong MySQL, chúng ta vẫn chưa sử dụng được vì MySQL cần được cấu hình trước khi sử dụng. Chúng ta sẽ cấu hình một cách bảo mật bằng lệnh sudo mysql_secure_installation Bạn sẽ được yêu cầu nhập mật khẩu root mà bạn đã đặt ở bước trên. Tiếp theo bạn sẽ được hỏi có muốn cấu hình VALIDATE PASSWORD PLUGIN không.

Lưu ý: VALIDATE PASSWORD PLUGIN là một tính năng kiểm tra mật khẩu có thỏa mãn các tiêu chí đặt ra hay không. Bạn có thể sử dụng hoặc không sử dụng tính năng này. Tuy nhiên hãy luôn sử dụng mật khẩu phức tạp. Nhập y để cấu hình VALIDATE PASSWORD PLUGIN hoặc bất kì kí tự khác để bỏ qua tính năng này.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
 
Press y|Y for Yes, any other key for No:

Nếu bạn bật tính năng này, bạn sẽ được yêu cầu chọn cấp độ của việc xác định mật khẩu bằng cách gõ vào số tương ứng. Có 3 cấp độ: 0 = LOW, 1 = MEDIUM và 2 = STRONG.

There are three levels of password validation policy:
 
LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file
 
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Trong đó

    1. LOW: chiều dài >= 8
    1. MEDIUM: chiều dài >= 8, gồm số, chữ hoa, chữ thường và kí tự đặc biệt
    1. STRONG: chiều dài >= 8, gồm số, chữ hoa, chữ thường, kí tự đặc biệt và dựa trên từ điển từ thông dụng. Nếu bạn bật tính năng này, bạn sẽ thấy độ mạnh của mật khẩu root hiện tại và bạn sẽ được hỏi có muốn thay đôi mật khẩu hay không. Nhập n nếu bạn đã thỏa mãn với mật khẩu hiện tại và không muốn thay đổi.
Using existing password for root.
 
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

Phần còn lại sau câu hỏi này, bạn hãy bấm Y và bấm Enter cho tất cả các câu hỏi còn lại. Việc này sẽ xóa bỏ các tài khoản vô danh, các test database, khóa chức năng đăng nhập từ xa cho tài khoản root và tải một số quy định mới. Như vậy MySQL sẽ ngay lập tức áp dụng các thay đổi mà chúng ta vừa cài đặt. Bây giờ hệ thống database của bạn đã được cài đặt hoàn tất và chúng ta sẽ tiếp tục với việc cài đặt PHP.

Bước 3: Cài đặt PHP

Chúng ta đã cài đặt Nginx để làm web server và MySQL để lưu trữ dữ liệu. Tiếp theo của việc cài đặt lemp stack đó là cài đặt PHP để xử lý các trang web động. Một điều lưu ý là Nginx không hỗ trợ xử lý PHP thuần như những web servers khác (Apache, Httpd, v.v…). Chúng ta sẽ cài đặt php-fpm (FastCGI process manager) và cấu hình cho Nginx để truyền các yêu cầu PHP sang FPM xử lý. Chúng ta có thể vừa cài module này và một vài helper package (gói trợ giúp) giúp PHP có thể giao tiếp với cơ sở dữ liệu. Chúng ta dùng lệnh sau sudo apt-get -y install php-fpm php-mysql Bây giờ chúng ta cần thực hiện cấu hình để server được bảo mật hơn. Hãy mở file cấu hình của php-fpm với quyền root sudo vi /etc/php/7.0/fpm/php.ini Hãy tìm đến thông số cgi.fix_pathinfo, mặc định nó đang được comment bằng dấu hai chấm (😉 và gán giá trị mặc định “1”. Chúng ta sẽ thay đổi bằng cách xóa dấu hai chấm và gán giá trị bằng 0 như sau cgi.fix_pathinfo=0 Lưu file và đóng lại sau khi bạn chỉnh sửa xong. Điều tiếp theo cần làm đó là khởi động lại PHP bằng cách sudo service php7.0-fpm restart

Bước 4: Cấu hình Nginx và PHP

Chúng ta đã có tất cả các thành phần cần thiết gồm Nginx, MySQL và PHP. Điều cuối cùng chúng ta cần cấu hình đó là giúp Nginx sử dụng PHP cho các trang web động. Chúng ta sẽ cấu hình trên khối server (server block) của Nginx (các block này tương tự tạo host ảo trên Apache). Hãy mở block mặc định của Nginx bằng cách: sudo vi /etc/nginx/sites-available/default Bạn sẽ thấy nội dung tương tự như thế này (các dòng comment đã được mình bỏ qua)

server {
    listen 80 default_server;
    listen [::]:80 default_server;
 
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;
 
    server_name _;
 
    location / {
        try_files $uri $uri/ =404;
    }
}

Chúng ta cần thay đổi như sau:

  • Đầu tiên chúng ta cần thêm index.php vào giá trị đầu tiên của mục index. Việc này giúp file index.php sẽ được gọi lên khi xử lý một yêu cầu đến thư mục.
  • Chúng ta có thể thay đổi mục server_name để trỏ đến tên miền hoặc địa chỉ IP public.
  • Chúng ta cần bỏ các dấu comment của phần PHP để Nginx biết cách xử lý các yêu cầu đến file PHP như thế nào. Đây là phần location ~.php$.
  • Chúng ta cũng có thể cấu hình chặn các yêu cầu đến file .htaccess. Nginx không hỗ trợ các file này nhưng bạn cũng nên chặn người dùng truy cập đến các file này. Sau khi thay đổi, file cấu hình của chúng ta sẽ có nội dung như sau
server {
    listen 80 default_server;
    listen [::]:80 default_server;
 
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
 
    server_name server_domain_or_IP;
 
    location / {
        try_files $uri $uri/ =404;
    }
 
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
 
    location ~ /\.ht {
        deny all;
    }
}

Sau khi chỉnh sửa xong hãy lưu và đóng file lại. Bây giờ hãy kiểm thử xem cấu hình của chúng ta có hợp lệ hay không trước khi chúng ta chạy lại nginx bằng lệnh sudo nginx -t Nếu có lỗi, hãy quay lại và kiểm tra file cấu hình. Bạn hãy đảm bảo rằng không có bất kì lỗi nào ở file cấu hình trước khi chúng ta khởi động lại nginx. Để khởi động lại nginx chúng ta dùng lệnh sudo service nginx reload

Bước 5: Tạo file PHP kiểm tra

Chúc mừng bạn đã cài đặt xong LEMP Stack, việc cuối cùng mà chúng ta cần làm đó là tạo một file PHP kiểm thử xem cấu hình đã đúng hết chưa. Bây giờ hãy tạo mới file info.php ở thư mục web gốc bằng cách sudo vi /var/www/html/info.php Nội dung của file info.php như sau

<?php
phpinfo();

Lưu và đóng file lại. Bây giờ bạn hãy thử dùng trình duyệt truy cập vào địa chỉ đến file này để kiểm tra thử http://server_name/info.php hoặc http://ip_address/info.php Nếu bạn nhìn thấy thông tin dưới đây thì xin chúc mừng bạn đã cài đặt hoàn tất.

Kết luận

Bây giờ bạn đã hoàn thành cài đặt Lemp stack trên Ubuntu 16.04. Bạn đã có thể cài đặt website của bạn lên server.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí