Cài đặt LEMP stacks trên CentOS 8

Bài hướng dẫn này sẽ hướng dẫn các bạn cài đặt LEMP stack (Linux - Nginx - MySQL - PHP) trên CentOS 8.
Cài đặt LEMP stacks trên CentOS 8
Cài đặt LEMP stacks trên CentOS 8

LEMP là gì

LEMP stack là một bộ phần mềm được cài đặt phía server để xử lý các websites được xây dựng trên nền PHP. Bộ phần mềm này bao gồm:

  • L - Linux - hệ điều hành của server. Ở đây L đại diện cho CentOS.
  • E - Nginx - web server
  • M - MySQL
  • P - PHP

 

Vultr

Vultr là một trong những nhà cung cấp dịch vụ Cloud VPS tốt nhất hiện nay. Chi phí sử dụng được tính theo thời gian sử dụng thực tế của bạn. Nhờ có các data center đặt ở châu Á nên tốc độ truy cập ở Việt Nam cũng cực kỳ tốt.

Bạn có thể đăng ký tài khoản Vultr ở đây Sign up - Vultr.com.

Lưu ý: Để đăng ký hoàn tất, bạn cần phải có thẻ thanh toán quốc tế như Visa/Master Card nhé.

 

Khởi tạo một Cloud Instance mới

Sau khi login vào Vultr, bạn truy cập link sau để deploy một instance mới. (Bạn có thể hiểu nôm na instance là một cloud server của bạn).

Deploy Servers - Vultr.com

Ở đây mình chọn Cloud Compute, location ở Singapore. Ở Việt Nam thì location Singapore là tốc độ tốt nhất rồi.

lemp-centos-8-1.png

Ở phần Server Type các bạn nhớ chọn CentOS 8 nhé, còn Server Size bạn chọn cái nào phù hợp với nhu cầu. Ở đây mình chọn cái rẻ nhất để demo :)))

lemp-centos-8-2.png

Tới đây thì chỉ cần bấm Deploy Now, sau đó chờ tầm 2 phút thôi.

Sau khi deploy xong, bạn chọn Cloud Instance vừa khởi tạo.

demo-centos-lemp-1-1-2048x1088.png

Thử ssh vào bằng terminal xem sao nhé.

# Bạn cần thay địa chỉ IP server của bạn vào nhé.
ssh [email protected]
# Khi nó hỏi password thì paste cái password phía trên vào.
screen-shot-2021-10-22-at-215722-1024x665.png

Truy cập bằng địa chỉ IP trên trình duyệt

screen-shot-2021-10-23-at-074458-1024x464.png

Ok ngon rồi nha :D

 

Cài đặt NGINX web server

 

Từ cửa sổ terminal trước đó, các bạn sử dụng các lệnh sau:

# Cập nhật các packages hiện tại trên CentOS 8
# Khi nó hỏi [Is this ok [y/N] thì bạn bấm Y rồi enter nha.
sudo dnf update

Cài NGINX web server bằng câu lệnh:

# Khi nó hỏi [Is this ok [y/N] thì bạn bấm Y rồi enter nha.
sudo dnf install nginx
screen-shot-2021-10-22-at-221255-1024x667.png

Sau khi cài đặt xong, chúng ta sẽ cấu hình để NGINX tự động khởi chạy khi start server.

sudo systemctl enable nginx
sudo systemctl start nginx

Để kiểm tra phiên bản NGINX đã được cài đặt, bạn sử dụng câu lệnh sau:

nginx -v
screen-shot-2021-10-22-at-221530-1024x665.png

Mình đã cài phiên bản mới nhất là 1.14.1 nhé.

Bạn tò mò và muốn biết nhiều thông tin hơn về Nginx cũng như các thông số của nó ư? Ok boss, chạy cái lệnh này đi.

rpm -qi nginx
screen-shot-2021-10-22-at-221841-1024x662.png

Tiếp theo bạn cần cấu hình để Nginx xử lý các kết nối HTTP (mặc định nó chạy port 80 nha).

# Cho phép xử lý các HTTP requests
sudo firewall-cmd --permanent --add-service=http
# Lệnh này chỉ để xem các services đã được đăng ký trên firewalld thôi.
sudo firewall-cmd --permanent --list-all
# Khởi động lại firewalld service.
sudo firewall-cmd --reload
screen-shot-2021-10-22-at-222836-1024x665.png

Ok cài xong Nginx rồi nè.

amazing-good-job.jpg

 

Cài đặt MySQL (MariaDB)

 

Tại sao lại là MariaDB?

MariaDB đơn giản là một phiên bản hoàn toàn miễn phí, được xây dựng và bảo trì từ những người xây dừng MySQL ban đầu sau khi MySQL bị mua lại bởi Oracle. Thực ra thì MariaDB cũng có bản thương mại, nhưng bạn chỉ cần quan tâm bản miễn phí của nó :D

MariaDB cũng hoàn toàn tương thích với MySQL. Nó cũng có nhiều tính năng mới hay ho hơn MySQL, nhưng mà thôi, mình sẽ giới thiệu tỏ tường hơn trong bài viết khác.

Việc cài đặt MariaDB cũng khá đơn giản. Từ cửa sổ terminal, bạn sử dụng câu lệnh sau:

# Khi nó hỏi [Is this ok [y/N] thì bạn bấm Y rồi enter nha.
sudo dnf install mariadb-server mariadb
screen-shot-2021-10-22-at-223749-1024x667.png

Giờ thì active nó lên.

sudo systemctl enable mariadb
sudo systemctl start mariadb

Mặc định thì ai cũng có thể login vào MariaDB. Điều này khá là tệ, nên mình sẽ thêm một bước thiết lập mật khẩu cho MariaDB.

sudo mysql_secure_installation

Trong quá trình cấu hình thì nó sẽ hỏi bạn một số tùy chọn. Mình chọn Y (Yes) hết cho nó max an toàn :D

screen-shot-2021-10-22-at-224501-1024x667.png

Sau khi hoàn thành tất cả các bước, bạn có thể truy cập vào MariaDB và kiểm tra thông tin (cần cung cấp mật khẩu bạn đã chỉ định ở bước trên).

mysql -u root -p
qua-tuyet-voi.jpeg

 

Cài đặt PHP

Cuối cùng thì chúng ta cũng đến phần cài cuối cùng trong bộ LEMP stack - PHP.

Dành cho ai chưa biết PHP là gì - thì nó đơn giản chỉ là một ngôn ngữ lập trình giúp xử lý các trang web. Bản thân blog này cũng viết bằng PHP luôn.

Mình sẽ cài đặt PHP bằng cách sử dụng Remi repository. Remi repository là kho lưu trữ miễn phí cung cấp các phiên bản phần mềm mới nhất không có sẵn trên CentOS theo mặc định. Bạn có thể tham khảo thêm ở Remi repository.

Đầu tiên mình cần cài EPEL repository trước.

# Khi nó hỏi [Is this ok [y/N] thì bạn bấm Y rồi enter nha.
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Sau đó mình sẽ cài đặt yum-utils và kích hoạt remi-repository bằng câu lệnh sau:

# Khi nó hỏi [Is this ok [y/N] thì bạn bấm Y rồi enter nha.
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Bạn có thể xem thêm về yum-utilsđây.

Có rất nhiều phiên bản PHP trên Remi từ cũ đến mới. Để chắc cú, mình sẽ kiểm tra các phiên bản PHP đang có sẵn trên Remi bằng câu lệnh sau:

sudo dnf module list php
demo-centos-lemp-2-1024x725.png

Bạn chú ý ở cột Stream tô đỏ phía trên có ghi 7.2 [d]. Như vậy, phiên bản PHP đã được cài mặc định trên CentOs 8 là PHP 7.2.

Giờ mình sẽ cài luôn bản PHP 8.1 luôn cho nó máu :D

Đầu tiên mình sẽ sử dụng câu lệnh sau để reset PHP.

sudo dnf module reset php
screen-shot-2021-10-25-at-153624-1024x725.png

Sau đó, cài phiên bản PHP 8.1 bằng câu lệnh:

# Khi nó hỏi [Is this ok [y/N] thì bạn bấm Y rồi enter nha.
sudo dnf module enable php:remi-8.1
screen-shot-2021-10-25-at-153719-1024x725.png

Sau khi kích hoạt PHP module, chúng ta sẽ tiến hành cài đặt php, php-fpm (FastCGI Process Manager) và một số modules PHP liên quan khác.

# Khi nó hỏi [Is this ok [y/N] thì bạn bấm Y rồi enter nha.
# Lần này nó hỏi hơi nhiều á :D
sudo dnf install php php-opcache php-gd php-curl php-mysqlnd

Ok cài xong rồi :D Giờ thử kiểm tra version PHP nha.

php -v
screen-shot-2021-10-25-at-154402-1024x725.png

Ok, bạn đã cài thành công phiên bản PHP 8.1.0RC4 :D

Tiếp theo chúng ta sẽ kích hoạt php-fpm.

sudo systemctl enable php-fpm
sudo systemctl start php-fpm

Còn một điều quan trọng khác. Theo mặc định, PHP sẽ được chạy dưới quyền user apache, nhưng web server của chúng ta lại là nginx. Chúng ta sẽ cần phải sửa lại một chút.

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

Bạn cần mở tập tin này lên và tìm đoạn code sau:

user = apache
group = apache

Sau đó chúng ta sửa lại thành:

user = nginx
group = nginx

 

Dành cho các bạn chưa biết xài Nano


Để lưu file, các bạn bấm Control X , bấm Y rồi Enter nha.


Sau đó, chúng ta sẽ restart nginxphp-fpm.

sudo systemctl restart nginx
sudo systemctl restart php-fpm

 

Tạo file phpinfo để kiểm tra phiên bản PHP

Nginx sẽ load trang web mặc định của chúng ta từ file index.html hoặc index.php ở /usr/share/nginx/html.

cd /usr/share/nginx/html
nano index.php

Sau đó copy đoạn code này vào rồi lưu lại:

<?php phpinfo();
screen-shot-2021-10-25-at-160404-1024x1024.png

Ok sang xịn mịn rồi đó :D

 

Kết

 

Vậy là mình đã hướng dẫn các bạn cài đặt một LEMP stack từ đầu trên CentOS 8.

Bài tiếp theo mình sẽ hướng dẫn các bạn cài đặt một số thứ hay ho khác như https, git, imagick PHP, mở port kết nối MySQL...

Comments

Bài viết nổi bật

Dạo gần đây đi đâu cũng nghe nói về microservices, người người nhà nhà rục rịch chuyển dịch hệ thống sang microservices. Trước khi đưa ra sự so sánh, mình sẽ khái quát một chút về Monolith Application và MicroServices một chút cho các bạn chưa biết nắm rõ hơn nhé.
PHP là ngôn ngữ được sử dụng rộng rãi nhất trên thế giới trong lập trình web. Nó cũng bị ghét nhất. Nhưng tại sao nhiều developer lại ghét nó đến vậy? Hôm nay chúng ta hãy cùng tìm hiểu lý do xem chúng có thuyết phục không nhé ^_^
Lúc trước mình hay sử dụng cách này trên laptop phụ của mình, giờ mua license luôn rồi. Hôm nay mình xin chia sẻ cho bạn nào cần nhé.
JWT Tokens là một cách thức lưu trữ thông tin xác thực hiệu quả, nhưng làm cách nào để chúng ta có thể giúp chúng an toàn hơn? Có 2 cách thường dùng để lưu trữ JWT Tokens là LocalStorage và Cookies. Bây giờ chúng ta sẽ bắt đầu "mổ xẻ" các ưu - nhược điểm của mỗi loại nhé.
Có khá nhiều bạn đã yêu cầu mình một bài viết về Repository Design Pattern. Vậy mục đích của nó là gì? Nó có thực sự cần thiết cho ứng dụng của bạn hay không? Những điểm mạnh, điểm yếu của nó là gì? Chúng ta cùng đi sâu tìm hiểu qua bài viết này nhé.

Mục lục

Related posts

Trong phần này, chúng ta sẽ tìm hiểu một số khái niệm cơ bản nhất về AWS là gì và một số lợi ích khi sử dụng AWS.
Bài viết này sẽ hướng dẫn các bạn cài đặt LEMP stack trên CentOS Stream 9 mới nhất trên Vultr Cloud VPS.

Tin mới nhất

Triển khai Saga Pattern trong microservices với NodeJS và Choreography-Based Saga
Mô hình Saga đưa ra một giải pháp có cấu trúc để giải quyết thách thức này. Nó cung cấp một phương pháp có hệ thống để quản lý transaction qua nhiều microservices. Điều này giải quyết những phức tạp của các transaction phân tán và hoàn toàn tương thích với các nguyên tắc của kiến trúc microservices, được đặc trưng bởi sự kết nối lỏng lẻo và khả năng triển khai độc lập của các service.
Một API cho phép giao tiếp hai chiều giữa các ứng dụng phần mềm thông qua các requests. Một Webhook là một API nhẹ, hỗ trợ chia sẻ dữ liệu một chiều được kích hoạt bởi các events.
Một trong những câu hỏi được đặt thường xuyên nhất về TypeScript là liệu chúng ta nên sử dụng interface hay type. Câu trả lời cho câu hỏi này, giống như nhiều câu hỏi lập trình khác, là nó phụ thuộc vào tình hình cụ thể. Trong một số trường hợp, một cái có lợi thế rõ rệt hơn cái kia, nhưng trong nhiều trường hợp, chúng có thể thay thế cho nhau.
Trong phần này, chúng ta sẽ tìm hiểu một số khái niệm cơ bản nhất về AWS là gì và một số lợi ích khi sử dụng AWS.
Trở thành một software developer hiệu suất cao không phải là điều dễ dàng. Điều này đòi hỏi bạn phải có kỹ năng và kiến thức về lập trình, cũng như cách tiếp cận và giải quyết các vấn đề phức tạp. Tuy nhiên, nếu bạn có chút kiên nhẫn và sự nỗ lực, bạn hoàn toàn có thể trở thành một developer tài năng và thành công.
Đây là các types cơ bản nhưng cũng phổ biến nhất trong Typescript. Một số types khác phức tạp hơn cũng được xây dựng dựa trên những types cơ bản này.
Trong thế giới lập trình, trách nhiệm lớn nhất của chúng ta không phải chỉ làm cho code chạy được, mà còn phải đảm bảo rằng các đoạn code mà chúng ta viết có thể dễ dàng kiểm tra và bảo trì trong một khoảng thời gian dài.
Thông tin được định nghĩa dưới dạng dữ liệu, kiến thức về thông tin, và trí tuệ về tri thức.
Phân trang - một thành phần không thể thiếu trong các ứng dụng có lượng dữ liệu lớn. Tuy nhiên, bạn hiểu được bao nhiêu về nó?
Javascript là một thành phần không thể thiếu đối với frontend developers. Tuy nhiên, ngay từ lúc ra đời, nó đã tồn tại khá nhiều vấn đề cần khắc phục. Đó là lý do tại sao từ 2015 (ES6) tới 2021 (ES12) ra đời nhằm giúp Javascript trở nên tốt hơn.
Dạo này mình làm việc với mấy bạn trên github, thấy hay xài mấy từ viết tắt mà mình không hiểu lắm. Thôi thì tổng hợp lại một list các từ viết tắt hay dùng trong github luôn cho ai cần :D
Trong phần này, chúng ta sẽ tìm hiểu một số khái niệm cơ bản nhất về AWS là gì và một số lợi ích khi sử dụng AWS.
Bài viết này sẽ hướng dẫn các bạn cài đặt LEMP stack trên CentOS Stream 9 mới nhất trên Vultr Cloud VPS.
Bài hướng dẫn này sẽ hướng dẫn các bạn cài đặt LEMP stack (Linux - Nginx - MySQL - PHP) trên CentOS 8.