Hướng dẫn cài đặt LEMP (NGINX-PHP-MYSQL) và tạo Server Blocks trên Debian 8

LEMP là một nhóm các phần mềm mã nguồn mở , LEMP là viết tắt của linux, nginx, php, mysql

Debian là một hệ điều hành máy tính, là bản phân phối miễn phí được phát triển từ sự cộng tác của các tình nguyện viên trên khắp thế giới. Debian được xây dựng dựa trên nền tảng linux với nhiều công cụ cơ bản của hệ điều hành

Bài viết sau đây sẽ hướng dẫn các bạn làm thế nào có thể cài đạt mô hình LEMP trên Debian 8

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

Tiến hành cập nhật gói phần mềm của Debian lên phiên bản mới nhất với lệnh:

# apt-get update -y

Lệnh để cài đặt nginx là:

# apt-get install nginx -y

Để khởi động nginx, ta chạy lệnh sau

# systemctl status nginx

Cho nginx khởi động cùng hệ thống

# systemctl enable nginx

Ta truy cập vào http://<địa chỉ ip> nếu có hình như sau là thành công

Bước 2: Cài đặt php-fpm và cấu hình php-fpm

Để cài đặt các modue, ta chạy lệnh sau

# apt-get install php5-fpm php5-mysql -y

Mở file cấu hình của php-fpm, để thiết lập nó an toàn hơn

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

Sau khi mở file php.ini, ta tìm dòng sau

;cgi.fix_pathinfo=1

Sau đó ta bỏ dấu ; đi và thay số 1 thành số 0 như dưới đây

cgi.fix_pathinfo=0

Sau khi sửa file xong, ta chạy lệnh khởi động lại php-fpm 

# systemctl restart php5-fpm 

Bước 3: Cấu hình nginx để làm việc với php-fpm

Mở file cấu hình mặc định của nginx lên 

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

Các bạn sẽ lấy file nội dung như sau 

server {         
listen 80 default_server;        
listen [::]:80 default_server;        
# SSL configuration        
#        
# listen 443 ssl default_server;        
# listen [::]:443 ssl default_server;        
#        
# Self signed certs generated by the ssl-cert package        
# Don’t use them in a production server!        
#        
# include snippets/snakeoil.conf;        
root /var/www/html;       
# Add index.php to the list if you are using PHP        
index index.html index.htm index.nginx-debian.html;        
server_name _;        
location / {                
# First attempt to serve request as file, then                
# as directory, then fall back to displaying a 404.                
try_files $uri $uri/ =404;        
}        
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000       
#        
#location ~ \.php$ {        
#       include snippets/fastcgi-php.conf;        
#        
#      
# With php5-cgi alone:        
#       fastcgi_pass 127.0.0.1:9000;        
#       # With php5-fpm:        
#       fastcgi_pass unix:/var/run/php5-fpm.sock;        
#}        
# deny access to .htaccess files, if Apache’s document root        
# concurs with nginx’s one        
#         #location ~ /\.ht {        
#       deny all;        
#}
}

Chúng ta sẽ rút gọn và chỉnh sửa tập tin như sau 

Chúng ta sẽ thêm index.php để nginx làm việc, thêm địa chỉ vps của bạn, bỏ ghi chú ở location ~ \.php$ và  location ~ /\.ht

Lưu ý ở đây chúng ta sẽ chạy php qua php5-fpm.sock nên bỏ ghi chú ở dòng dưới 

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 <địa chỉ ip hoặc domain>;    
location / {        
try_files $uri $uri/ =404;
     }    
location ~ \.php$ {        
include snippets/fastcgi-php.conf;        
# With php5-cgi alone:        
#       fastcgi_pass 127.0.0.1:9000;        
# With php5-fpm:        
fastcgi_pass unix:/var/run/php5-fpm.sock;
     }    
location ~ /\.ht {        
deny all;    
}
}

Sau khi thiết lập xong các bạn restart lại nginx

# systemctl restart nginx

Bây giờ chúng ta sẽ kiểm tra xem nginx và php-fpm đã làm việc với nhau chưa, bằng cách tạo 1 file 

# nano /var/www/html/info.php

với nội dung

<?php   phpinfo(); ?>

Ta truy cập vào trình duyệt với đường dẫn như sau http://<địa chỉ ip>/info.php để kiểm tra kết quả

Kiểm tra xong chúng ta nên xóa file này đi để bảo mật cho vps

# rm -rf /var/www/html/info.php

Bước 4: Cài đặt Mysql

MySQL là một hệ thống quản lý cơ sở dữ liệu rộng rãi triển khai sử dụng cho các tổ chức và lấy dữ liệu.

Để cài đặt Mysql, ta gõ lệnh sau

# apt-get install mysql-server -y

Trong khi cài đặt, MySQL sẽ yêu cầu bạn thiết lập một mật khẩu chủ. Nếu bạn bỏ lỡ cơ hội để thiết lập mật khẩu trong khi các chương trình được cài đặt, nó là rất dễ dàng để thiết lập mật khẩu sau đó từ bên trong MySQL.

Nhập lại mật khẩu 

Cuối cùng chạy lệnh thiết lập bảo vệ cho Mysql 

# mysql_secure_installation

Nó sẽ hiện ra danh sách sau

Enter current password for root (enter for none):  <-- ấn enter 
Set root password? [Y/n]                           <-- Ấn "y" để nhập mật khẩu Mariadb  
New password:                                      <-- nhập mật khẩu Mariadb mới 
Re-enter new password:                             <-- nhập lại  mật khẩu Mariadb mới 
Remove anonymous users? [Y/n]                      <-- Ấn "y"
Disallow root login remotely? [Y/n]                <-- Ấn "y"
Reload privilege tables now? [Y/n]                 <-- Ấn "y"

Đăng nhập vào MySQL

# mysql -u root -p

Bước 5: Tạo Server Blocks

Tạo 1 thư mục để chứa các code web 

# mkdir -p /home/nginx/maxserver.com

Phân quyền cho thư mục   

# chown -R www-data:www-data /home/nginx/maxserver.com # chmod -R 755 /home/nginx/maxserver.com

Sao chép file cấu hình mặc định 

# cp /etc/nginx/sites-available/default /etc/nginx/sites-available/maxserver.com

Rồi chỉnh sửa file cấu hình vừa được sao chép

# nano /etc/nginx/sites-available/maxserver.com

Chỉnh sửa với nội dung như sau :

Ta sửa đường dẫn root và khai báo server name vào

server {     
listen 80 default_server;    
listen [::]:80 default_server;    
root /home/nginx/maxserver.com;    
index index.php index.html index.htm index.nginx-debian.html;    
server_name www.maxserver.com maxserver.com;    
location / {        
try_files $uri $uri/ =404;    
}    
location ~ \.php$ {        
include snippets/fastcgi-php.conf;        
# With php5-cgi alone:        
#       fastcgi_pass 127.0.0.1:9000;        
# With php5-fpm:        
fastcgi_pass unix:/var/run/php5-fpm.sock;    
}    
location ~ /\.ht {        
deny all;    
}
}

Kích hoạt file cấu hình /etc/nginx/sites-available/maxserver.com

# ln -s /etc/nginx/sites-available/maxserver.com /etc/nginx/sites-enabled/

Chúng ta phải xóa mẫu kích hoạt sẵn đi nếu không nó sẽ gây xung đột

# rm /etc/nginx/sites-enabled/default

Chỉnh sửa lại file nginx.conf một chút

# nano /etc/nginx/nginx.conf

Tìm dòng sau và xóa dấu # đi 

server_names_hash_bucket_size 64;

Khởi động lại nginx

# systemctl restart nginx

Tạo 1 file index để thử

# nano /home/nginx/maxserver.com/index.html

Với nội dung như sau

<html>     
<head>        
<title>Welcome </title>    
</head>    
<body>        
<h1>Chuc ban thanh cong!</h1>    
</body>
</html>

Và cuối cùng chúng ta kiểm tra bằng cách vào trình duyệt trên máy bạn và gõ theo đường dẫn sau

http://<địa chỉ ip hoặc domain của bạn>

Đến đã kết thúc bài cài đặt LEMP và tạo Server Blocks trên Debian 8. Chúc các bạn thành công