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é ^_^
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é.
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é.
Ở bài viết này mình sẽ hướng dẫn bạn bắt đầu xây dựng một ứng dụng HMVC với Laravel, và tận dụng sức mạnh của Composer khi quản lí modules.

Mục lục

Related posts

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

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
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é.
Cách bỏ qua câu lệnh --set-upstream quen thuộc cho các con lười
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.
Mình sẽ giới thiệu 2 cách để xóa một property trong Javascript Object. Một cách sử dụng mutable - toán tử delete, một cách còn lại là immutable - tính năng Object Restructuring.
Đây là một khái niệm rất quan trọng trong Functional Programming. Ở đây mình sẽ cho ví dụ dựa trên Javascript, cụ thể là TypeScript, do đó mình hi vọng các bạn đã có một số kiến thức nhất định về JS trước. Điều này sẽ giúp bạn nắm bắt nội dung bài viết dễ dàng hơn.
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.
NestJS - Providers
1210
Providers là thành phần cơ bản và cực kỳ quan trọng trong Nest để thực hiện Dependency Injection.
Một số design patterns chính đang được sử dụng bởi NestJS mà bạn cần nắm rõ để làm việc với NestJS hiệu quả hơn.
Một số design patterns chính đang được sử dụng bởi NestJS mà bạn cần nắm rõ để làm việc với NestJS hiệu quả hơn.
NestJS - Controllers
1477
Trách nhiệm chính của controllers là xử lý các requests và phản hồi lại cho phía client.
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.