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.
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).
Ở đây mình chọn Cloud Compute, location ở Singapore. Ở Việt Nam thì location Singapore là tốc độ tốt nhất rồi.
Ở 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 :)))
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.
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.
Truy cập bằng địa chỉ IP trên trình duyệt
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
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
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
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
Ok cài xong Nginx rồi nè.
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
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
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
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
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
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
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
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 nginx và php-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();
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...