Trang chủ / Code / Cài đặt LEMP NGINX, PHP-FPM, MariaDB trên Unbuntu / Debian 8
cài đặt vps server lemp nginx php-fpm mariadb trên debian / ubuntu

Cài đặt LEMP NGINX, PHP-FPM, MariaDB trên Unbuntu / Debian 8

Trong bài viết này, mình sẽ hướng dẫn cách cài đặt VPS server LEMP STACK bao gồm NGINX, PHP-FPM, MariaDB cho hệ điều hành Unbuntu 14.04 và Debian 8. Mình thì thích dùng Debian hơn là Unbuntu và hiện này đang dùng Debian 8, bởi bản thân Unbuntu cũng là một nhánh tách ra từ Debian.

Có rất nhiều các script tự động cài đặt cho VPS, cài 1 cái là xong nhưng bản thân mình tích cài đặt từng cái một  để kiểm soát và dễ tối ưu nên nếu bạn cũng thích như mình thì bài này là dành cho bạn, mình sẽ cài đặt một webserver hoàn chỉnh gồm NGINX, PHP, MariaDB cũng như tối ưu hiệu năng tốc độ không thua kém gì các script như Easy Engine :D

Cài đặt NGINX

NGINX thì quá phổ biến rồi, một webserver có hiệu suất hoạt động cao hơn Apache và đang là webserver thay thế Apache già cỗi, hiện nay rất nhiều website lớn chuyển sang dùng NGINX như Digital Ocean, Dropbox,…

Bắt đầu nhé, bạn  cần có 1 con  VPS mới, chưa cài đặt gì để sử dụng trong bài viết này, mình sẽ sử dụng VPS tại Digital Ocean làm ví dụ, 1GB RAM, mình sẽ hướng dẫn cài trên 2 hệ điều hành là Unbuntu 14.04 và Debian 8, phần nào mình chia làm 2 phần dành cho Unbuntu và dành cho Debian thì bạn làm theo hệ điều hành mà bạn đang sử dụng còn mình không nói gì là áp dụng chung cho cả Debian và Unbuntu.

Đảm bảo mọi thành phần của vps được update phiên bản mới nhất

apt-get update && apt-get upgrade

Mình sẽ sử dụng Nano để chỉnh sửa các file cấu hình, bạn cài nano vào để dùng nhé

apt-get install nano

Giờ bắt đầu cài đặt NGINX, mình sẽ cài NGINX bản mainline mới nhất 1.9.6, mặc định trong Debian / Unbuntu mới có 1.6

Với Debian 8

wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
echo 'deb http://nginx.org/packages/mainline/debian/ jessie nginx' >> /etc/apt/sources.list
echo 'deb-src http://nginx.org/packages/mainline/debian/ jessie nginx' >> /etc/apt/sources.list
apt-get update && apt-get install nginx

Với Unbuntu 14.04

wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
echo 'deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx' >> /etc/apt/sources.list
echo 'deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx' >> /etc/apt/sources.list
apt-get update && apt-get install nginx

Cấu hình NGINX

Cài đặt xong NGINX rồi, chúng ta cần cấu hình qua cho NGINX hoạt động nhanh hơn, tối ưu hơn, bạn không cấu hình thì cũng chả sao, phần này mình có viết thành một  bài rồi, bạn xem ở đây nhé: Cấu hình tăng tốc NGINX toàn tập

Tạo Virtualhost

Đây là phần tạo file cấu hình domain cho NGINX để website của bạn có thể chạy được, bạn trỏ DNS tên miền ( A Record) về IP của VPS, Sau đó tạo file cấu hình như sau:

// Chạy lệnh sau
nano /etc/nginx/conf.d/abc.xyz // Thay abc.xyz thành tên bạn muốn
// Sau đó copy đoạn sau bỏ vào
server {
    listen 80;

    root /duong/dan/toi/thu/muc/code;
    index index.php index.html index.htm;

    server_name your-domain.com www.your-domain.com;

    location / {
            try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
    }
}

Bonus: Script tự động thêm domain cho NGINX, nếu bạn chạy nhiều website mà cảm thấy việc thêm nhiều domain quá mệt mỏi thì hãy sử dụng script mình tự viết để thêm domain cho NGINX nhanh chóng, 2s là xong, như thế bạn không  phải làm bước tạo virtualhost ở trên, xem tại đây nhé: Script thêm domain cho NGINX tự động

Như vậy là đã cài đặt xong và cấu hình tên miền cho NGINX, tiếp theo sẽ cài đặt PHP

Cài đặt PHP-FPM

PHP-FPM là một trình xử lí PHP rất nhanh, bắt buộc phải dùng khi cài NGINX vì NGINX không hỗ trợ sẵn module PHP như Apache. Khi website  hoạt động, PHP sẽ gửi truy vấn cho NGINX và NGINX sẽ gửi lại cho PHP-FPM xử lí.

Cài đặt PHP-FPM bằng lệnh sau:

apt-get install php5-fpm php5-mysqlnd

Lưu ý: Tuỳ thuộc vào mã nguồn website bạn đang sử dụng mà bạn sẽ phải cài thêm một số module, thường là 2 module sau php5-gd và php5-mcrypt bắt buộc phải cài

apt-get install php5-gd php5-mcrypt

Bạn có cài thêm các module khác bằng lệnh

apt-get install php5-tênmodule

Như vậy bạn đã cài xong PHP, giờ cấu hình cho PHP một chút, thao tác trong file php.ini

cd /etc/php5/fpm
nano php.ini

Tìm đến các dòng sau  và sửa lại thành như bên  dưới

upload_max_filesize = 20M
allow_url_fopen = Off
post_max_size = 12M
date.timezone = Asia/Ho_Chi_Minh

Nhấn Ctrl + O để lưu, enter để xác nhận, Ctrl + X để thoát.

Mẹo: Bạn có thể  mở file này bằng trình file Manager như WinSCP để làm sẽ dễ hơn là thao tác trên dòng lệnh

Cài đặt MariaDB

Thế giới thì đang chuyển dần sang NoSQL hay MongoDB, tuy nhiên tiếp xúc với NoSQL sẽ khó hơn và đa phần các mã nguồn hiện nay đều sử dụng MySQL, tuy nhiên chúng ta sẽ không cài MySQL mà sẽ cài MariaDB, một sự thay thế hoàn hảo cho MySQL với hiệu năng cao hơn nhưng câu lệnh vẫn giữ nguyên như MySQL

apt-get install mariadb-server

Debian: Sau đó nó sẽ hỏi bạn đặt root password của mysql, bạn nhập password mà bạn muốn đặt vào, nhập lại để xác nhận

Unbuntu: Riêng Unbuntu nó không hỏi bạn đặt root password mysql mà nó mặc định đặt không có mật khẩu, như thế sẽ không bảo mật, chạy xong bạn set password cho nó như sau, chạy lần lượt các lệnh, cái này còn áp dụng cho bạn nào quên pass mysql sau này thì cũng làm theo như dưới đây để đặt lại password cho mysql.

service mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root //khi này bạn có thể login vào mysql mà không cần pass
use mysql;
update user set password=PASSWORD("password_moi") where User='root'; //thay password_moi bằng password mà bạn muốn đặt
flush privileges;
exit; 
service mysql restart

Sau khi cài đặt xong MariaDB, các bạn cần chỉnh sửa lại một chút cấu hình cho mysql,  mở file my.cnf tại /etc/mysql và tìm đến dòng “bind-address = 127.0.0.1” xoá đi thay bằng

#bind-address = 127.0.0.1
skip-networking

Tiếp tục chạy lệnh, nó sẽ hỏi bạn một loạt câu hỏi, cứ nhấn Y rồi enter

mysql_secure_installation

Ok xong rồi, các bạn đã hoàn tất cài đặt một vps để chạy web, giờ restart các dịch vụ để có hiệu lực

systemctl restart nginx.service
systemctl restart php5-fpm.service
systemctl restart mysql.service

Như vậy là các bạn đã cài đặt xong một lemp server! Chúc các bạn thành công!

Có khó khăn gì comment bên dưới cho mình biết nhé, hoặc gửi mail về contact@crazytut.com để mình cài đặt vps giúp nhé, tối ưu tôc độ luôn! :D

Nếu bạn thấy có ích, hãy subcribe blog của tôi để nhận thêm nhiều tút hay qua email nữa nhé!