0

Hướng dẫn cài đặt LEMP stack trên Ubuntu 14.04

Giới thiệu

Trong bài viết này tôi xin hướng dẫn cách cài đặt trọn bộ Nginx, MySQL, PHP trên Ubungu 14.04 để chạy các ứng dụng web hay blog trên VPS hay server riêng của bạn. LEMP viết tắt bởi: L: Hệ điều hành Linux E: Web server Nginx M: MySQL P: PHP

1. Cài đặt Nginx Web Server

Để cài đặt Nginx, bước đầu tiên ta cần cập nhật local package index, sau đó sẽ cài nginx:

sudo apt-get update
sudo apt-get install nginx

Sau khi cài xong, nginx đã được cấu hình trên Ubuntu và sẵn sàng chạy Để kiểm tra nginx đã chạy chưa, nhập tên domain name server hoặc địa chỉ IP server của bạn trên trình duyệt để kiểm tra: http://server_domain_name_or_IP Kết qủa sẽ trả về trang mặc định sau: Nếu bạn nhìn thấy trang trên, bạn đã cài đặt thành công Nginx

2. Cài đặt MySQL

Giờ ta đã có một web server, ta cần cài đặt MySQL để lưu trữ và quản lý dữ liệu cho trang web Cài đặt MySQL bằng câu lệnh sau:

sudo apt-get install mysql-server

Trong qúa trình cài đặt, MySQL sẽ yêu cầu bạn nhập mật khẩu cho tài khoản mặc định root, đây là mật khẩu để kết nối tới MySQL Và giờ ta chỉ chờ cho qúa trình cài đặt MySQL cài đặt kết thúc MySQL đã được cài đặt, tiếp theo chạy lệnh sau để MySQL tạo cấu trúc thư mục cần thiết để lưu trữ dữ liệu:

sudo mysql_install_db

Tiếp theo chạy đoạn mã security script sau:

sudo mysql_secure_installation

Bạn cần nhập mật khẩu tài khoản root trong quá trình cài đặt này

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Tiếp theo, cài đặt sẽ hỏi bạn có muốn thay đổi mật khẩu tài khoản root không?, nếu không gõ "N" và nhấn "Enter". Sau đó bạn sẽ được hỏi có muốn xóa các tài khoản test users và database không. Bạn nên nhấn "y" (yes) để xóa các cài đặt mặc định không bảo mật này

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y                                            
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

Quá trình cài đặt MySQL hoàn tất

3. Cài đặt PHP

Ta đã có web server nginx và MySQL, ta cần PHP để kết nối 2 phần này Vì Nginx không hỗ trợ code PHP như các web server khác, ta cần cài đặt php-fpm, viết tắt của fastCGI process manager để nginx có thể hiểu được các request gửi từ PHP. Ta sẽ cài đặt module này cùng với package hỗ trợ PHP kết nối tới database:

sudo apt-get install php5-fpm php5-mysql

Cấu hình PHP Processor

Ta cần cấu hình một chút để tăng tính bảo mật cho PHP Mở php5-fpm với quyền của root user:

sudo nano /etc/php5/fpm/php.ini

Tìm tới dòng cgi.fix_pathinfo=1

; cgi.fix_pathinfo=1

Bỏ comment bằng cách xóa dấu chấm phẩy (😉 phía trước và sửa gía trị 1 thành 0 như dưới đây:

cgi.fix_pathinfo=0

Cài đặt mặc định cgi.fix_pathinfo=1 rất kém bảo mật. Nó cho phép PHP thực thi file ở gần nhất mà nó có thể tìm thấy khi không tìm được một file PHP không phù hợp với request. Điều này cho phép user thực thi các đoạn mã script mà đáng lẽ ra không được phép. Lưu (Ctrl + O, Enter) và thoát file cấu hình (Ctrl + X) Ta cần khởi động lại php-fpm để cập nhật thay đổi trong file cấu hình ta sửa lúc trước:

sudo service php5-fpm restart

4. Cấu hình Nginx sử dụng PHP

Mọi thứ đã được cài đặt, giờ ta sẽ cấu hình để nginx có thể sử dụng được PHP Mở file cấu hình server mặc định của Nginx:

sudo nano /etc/nginx/sites-available/default

Đây là file cấu hình server mặc định:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }
}

Ta sẽ thay đổi một chút thành file dưới đây:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;
    
    //nhập tên server hoặc địa chỉ IP server của bạn vào server_name
    server_name serverdomainnameorIP;

    location / {
        try_files $uri $uri/ =404;
    }

    errorpage 404 /404.html;
    errorpage 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        tryfiles $uri =404;
        fastcgisplitpathinfo ^(.+\.php)(/.+)$;
        fastcgipass unix:/var/run/php5-fpm.sock;
        fastcgiindex index.php;
        fastcgiparam SCRIPTFILENAME $documentroot$fastcgiscriptname;
        include fastcgiparams;
    }
}

Lưu và đóng file cấu hình lại. Restart Nginx để cập nhật thay đổi:

sudo service nginx restart

5. Tạo một file PHP để kiểm tra cấu hình

LEMP stack đã được cài đặt thành công. Giờ ta sẽ kiểm tra liệu nginx có thể xử lý file .php thông qua PHP processor hay không Tạo một file tên info.php trong root document:

sudo nano /usr/share/nginx/html/info.php

Với nội dung như sau:

<?php
phpinfo();
?>

Lưu và đóng file Mở trình duyệt nhập tên domain name server hoặc địa chỉ IP server của bạn:

http://server_domain_name_or_IP/info.php

Bạn sẽ thấy một trang hiển thị thông tin về server của bạn Nếu bạn thấy trang này điều đó có nghĩa bạn đã cài đặt thành công LEMP Sau khi test, ta sẽ xóa file index.php đi bằng lệnh sau:

sudo rm /usr/share/nginx/html/info.php

Kết luận

Bạn đã cài đặt thành công LEMP stack trên hệ điều hành Ubuntu 14.04 của mình. Giờ bạn hoàn toàn có thể chạy các ứng dụng web cũng như blog của mình trên server mà bạn vừa cài đặt. Trong các bài tiếp theo, tôi xin giới thiệu cách cấu hình Nginx phục vụ nhiều trang web trên cùng một 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í