Skip to contentSkip to main navigation Skip to footer

Hướng dẫn cài đặt LEMP Stack trên Centos 7

cai dat lemp stack centos 7 copy

Hướng dẫn cài đặt LEMP Stack trên CentOS 7 đơn giản cùng với VINASTAR.

I. Giới thiệu

LEMP là chữ viết tắt thường được dùng để chỉ sự sử dụng các phần mềm Linux, Nginx, MySQL/MariaDB và PHP/PHP-FPM để tạo nên một môi trường máy chủ Web giúp triển khai các website trên môi trường Internet.

Các chức năng cụ thể các bạn có thể hiểu nhanh là LEMP hoạt động từ các phần mềm Linux, với máy chủ web là Nginx, máy chủ cơ sở dữ liệu MariaDB hoặc MySQL và nội dung file động được xử lý bởi PHP.

LEMP là dạng mã nguồn mở với lợi thế miễn phí, nên các năm gần đây LEMP luôn được cộng động tin tưởng sử dụng bởi tính ổn định, dễ dàng cài đặt cũng như dễ dàng vận hành. Nhìn chung LEMP cũng tương tự như LAMP , chỉ khác là webserver sử dụng Nginx thay vì Apache.

Cụ thể cách cài đặt LEMP như thế nào và có gì khác với LAMP, thì mời các bạn xem tiếp phần II.

II. Hướng dẫn cài đặt

Để cài đặt LEMP các bạn có thể thực hiện cài đặt với 5 bước sau.

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

Giống với Apache , máy chủ web Nginx là một trong những máy chủ web phổ biến nhất trên thế giới. Nó đã được ghi chép đầy đủ và được sử dụng rộng rãi trong một thời gian dài, điều này khiến cho Nginx trở thành một lựa chọn mặc định tuyệt vời để lưu trữ một website.

  • Vì NGINX không có sẵn repository của CentOS vì vậy chúng ta phải cài repository EPEL​ với câu lệnh sau: 
yum install epel-release -y
    
Hướng dẫn cài đặt LEMP Stack trên Centos 7
Như hình là ta đã cài đặt thành công Nginx
  • Sau khi cài đặt hoàn tất, các bạn có thể sử dụng các lệnh sau để quản lý Nginx
systemctl start nginx      (Khởi động dịch vụ Nginx)
systemctl stop nginx       (Dừng dịch vụ Nginx)
systemctl reload nginx     (Tải lại dịch vụ Nginx)
systemctl restart nginx    (Khởi động lại  dịch vụ Nginx:)
systemctl enable nginx     (Thiết lập Nginx khởi động cùng hệ thống)
systemctl disable nginx    (Vô hiệu hoá Nginx khởi động cùng hệ thống )
systemctl status nginx     (Xem trạng thái dịch vụ Nginx)
    
lemp1

Mặc định trên Centos 7 sẽ sử dụng tường lửa là Firewalld, nên các bạn cần thực hiện mở Port dịch vụ với Firewalld theo các cách sau:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload      (Reload lại Firewalld) 
    

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

Để cài đặt MariaDB các bạn chạy lệnh sau.

yum install -y mariadb mariadb-server
    

Sau khi cài đặt hoàn tất, các bạn có thể sử dụng các lệnh sau để quản lý MariaDB

systemctl start mariadb      (Khởi động dịch vụ mariadb)
systemctl stop mariadb      (Dừng dịch vụ mariadb)
systemctl restart mariadb    (Khởi động lại  dịch vụ mariadb)
systemctl enable mariadb     (Thiết lập mariadb khởi động cùng hệ thống)
systemctl disable mariadb    (Vô hiệu hoá mariadb khởi động cùng hệ thống )
systemctl status mariadb     (Xem trạng thái dịch vụ mariadb)
    
Hướng dẫn cài đặt LEMP Stack trên Centos 7

Lưu ý: File cấu hình chính của MariaDB là file /etc/my.conf

Thiết lập bảo mật MariaDB Server

[root@template ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

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

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password:    (Nhập password root mysql mới)
Re-enter new password: (Nhập lại password)
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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, MariaDB 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...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Bước 3: Cài đặt PHP-FPM và các Module

Phiên bản PHP có sẵn CentOS 7 là các bản cũ và đã lỗi thời và vì lý do đó, các bạn nên cài đặt kho lưu trữ gói của bên thứ ba để có thể sử dụng các phiên bản PHP mới nhất . Và Remi là kho lưu trữ gói phổ biến cung cấp các bản phát hành PHP mới nhất cho các máy chủ CentOS.

  • Để cài đặt kho Remi các bạn chạy lệnh sau.
yum -y install yum-utils
rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    
  • Sau khi cài đặt gói Remi xong, các bạn cần chọn phiên bản PHP mà mình cần cài đặt và kích hoạt gói chứa phiên bản PHP đó. Ở hướng dẫn này mình sẽ cài đặt PHP 8.0 nên sẽ kích hoạt gói bằng lệnh sau.
yum-config-manager --enable remi-php80
    

Lưu ý: Ở số 80 (tương ứng PHP 8.0), bạn có thể thay thế bằng phiên bản PHP bạn muốn (Ví dụ: 72 – 73 74 tương ứng 7.2 –7.3 – 7.4..)

  • Khi module remi-80 của PHP đã được bật, bạn có thể tiến hành cài đặt PHP và các PHP Extension cần thiết bằng lệnh bên dưới.
yum install -y php php-fpm php-ldap php-zip php-embedded php-cli php-mysql php-common php-gd php-xml php-mbstring php-mcrypt php-pdo php-soap php-json php-simplexml php-process php-curl php-bcmath php-snmp php-pspell php-gmp php-intl php-imap perl-LWP-Protocol-https php-pear-Net-SMTP php-enchant php-pear php-devel php-zlib php-xmlrpc php-tidy php-opcache php-cli php-pecl-zip unzip gcc
    
  • Kiểm tra phiên bản PHP vừa cài đặt bằng lệnh.

Như hiển thị trên thì đã cài đặt thành công PHP 8.0 rồi nhé.

[root@template ~]# php -v
PHP 8.0.1 (cli) (built: Jan  5 2021 13:54:54) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.1, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.1, Copyright (c), by Zend Technologies
[root@template ~]# 

Xem thêm:

  • Mặc định PHP sẽ thực thi file PHP gần nhất nếu không tìm thấy file php được request. Để ngăn chặn việc thực thi PHP không mong muốn các bạn thay đổi cấu hình như sau.

Các bạn tìm và thay thế các dòng sau

cgi.fix_pathinfo=1  =>  cgi.fix_pathinfo=0
  • Tiếp theo ta thực hiện điều chỉnh lại cấu hình mặc định như sau.

Mở và chỉnh sửa file cấu hình /etc/php-fpm.d/www.conf bằng lệnh sau

vi /etc/php-fpm.d/www.conf 
    

Các bạn tìm và thay thế các dòng sau

;listen = 127.0.0.1:9000   => listen = /var/run/php_fpm.sock
;listen.owner = nobody     => listen.owner = nginx
;listen.group = nobody     => listen.group = nginx
user = apache              => user = nginx
group = apache             => group = nginx

Điều chỉnh xong bạn Save lại bằng cách gõ :x

  • Bảo mật php_fpm.sock với câu lệnh sau: 
chmod 666 /var/run/php_fpm.sock
chown nginx:nginx /var/run/php_fpm.sock
    
  • Khởi động PHP-FPM sau khi đã hoàn tất chỉnh sửa cấu hình bằng lệnh.
systemctl start php-fpm
systemctl enable php-fpm
    

Bước 4: Cầu hình NGINX

  • Để cấu hình Nginx xử lý , các bạn cần chỉnh sửa cấu hình file default.conf tại đường dẫn /etc/nginx/conf.d/default.conf bằng lệnh.
vi /etc/nginx/conf.d/default.conf
    
  • Copy và dán đoạn dưới đây vào file default.conf (Bạn nhớ thay server_domain_or_IP bằng IP hoặc Domain của bạn)
server {
    listen  80;
    server_name  server_domain_or_IP;

    root   /var/www/html/;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ .php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php_fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
  • Lưu lại cấu hình (gõ :x) và khởi động lại Nginx

Bước 5: Kiểm tra hoạt động website

Sau khi đã cấu hình hoàn tất Virtual Host và tạo folder website hoàn tất, các bạn kiểm tra nhanh xem website của mình có hoạt động hay không bằng cách tạo thử file index.php bằng lệnh sau

touch /var/www/html/index.html | echo 'Cai dat thanh cong LEMP' >  /var/www/html/index.html
    

Tạo xong file các bạn ra trình duyệt bất kỳ và gõ tên website để kiểm tra, như hiển thị bên dưới là website của mình đã hoạt động.

Hướng dẫn cài đặt LEMP Stack trên Centos 7

Xem thêm: Thiết lập Nginx FastCGI Cache trên NGINX giảm thời gian phản hồi máy chủ

III. Tổng kết

Như vậy, ở bài viết này VINASTAR đã hướng dẫn bạn cách cài đặt LEMP lên máy chủ sử dụng Centos 7 hoàn tất một cách chi tiết nhất. Việc cài đặt LEMP sẽ giúp bạn có một máy chủ để vận hành website một cách ổn định và trơn tru nhất. Do LEMP chỉ cài đặt các dịch vụ cần thiết để sử dụng Website , điều đó có nghĩa là nó sẽ loại bỏ được các dịch vụ không cần thiết để tài nguyên VPS có thể tập trung tối đa cho việc vận hành website. Hy vọng bài viết này sẽ giúp bạn cài đặt thành công.!

Nếu thấy bài viết hữu ích, hãy chia sẻ rộng rãi đến mọi người để cùng biết cách cài đặt nhé. Ngoài ra Các bạn có thể xem qua một số bài viết khác về kiến thức Linux tại link bên dưới

Nếu các bạn cần hỗ trợ các bạn có thể liên hệ bộ phận hỗ trợ theo các cách bên dưới:

Was This Article Helpful?

0
0 Comments

There are no comments yet

Leave a comment

Your email address will not be published. Required fields are marked *