hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Ubuntu
Hướng dẫn cài đặt thủ công LEMP Stack (Linux,Nginx,MariaDB,PHP) trên Ubuntu

Hướng dẫn cài đặt thủ công LEMP Stack (Linux,Nginx,MariaDB,PHP) trên Ubuntu

  • 21-08-2024
  • Toanngo92
  • 0 Comments

Mục lục

  • Giới thiệu khái niệm LEMP Stack
  • Hướng dẫn cài đặt LEMP Stack
    • Bước 1: đăng nhập máy chủ thông qua SSH:
    • Bước 2: kiểm tra apt package và cập nhật phiên bản mới nhất:
    • Bước 3: tiến hành cài đặt NGINX
    • Bước 4: tiến hành cài đặt MariaDB
    • Bước 5: cài đặt PHP-FPM package cho NGINX
    • Bước 6: cài đặt một số extension cho PHP (tùy chọn)
  • Hướng dẫn thêm website PHP vào server và cấu hình NGINX, MariaDB:
    • Bước 1: Tạo thư mục gốc của website
    • Bước 2: Cấu hình tệp nginx.conf để khớp định tuyế của người dùng truy cập vào tên miền với thư mục mã nguồn tương ứng
  • Bước 3: tạo và cấu hình cơ sở dữ liệu cho website
  • Bước 4: Cài đặt certbot Let’s EnCrypt
  • Một số vấn đề thường gặp khi sử dụng php-fpm với nginx

Giới thiệu khái niệm LEMP Stack

Linux: Linux là một hệ điều hành miễn phí và mã nguồn mở, ban đầu được phát triển dựa trên UNIX. Ubuntu là một trong nhiều phiên bản khác nhau của Linux, được gọi là “bản phân phối” (distributions). Một số bản phân phối phổ biến khác bao gồm Debian, Red Hat và Arch. Mỗi bản phân phối của Linux đều có thư viện phần mềm riêng, dùng để cài đặt các ứng dụng khác. Tất cả các thành phần của LEMP stack đều có sẵn trong thư viện tiêu chuẩn của Ubuntu.

Máy chủ NGINX: NGINX là một trong những máy chủ web mã nguồn mở phổ biến nhất. NGINX được phát âm là “Engine-x” (đây là lý do tại sao chữ E được sử dụng trong từ viết tắt LEMP). NGINX sử dụng kiến trúc dựa trên sự kiện (event-driven) thay vì kiến trúc dựa trên quy trình/luồng (process/thread) của Apache. NGINX nhanh hơn và hiệu quả hơn Apache, nhưng không cho phép cấu hình từng trang web riêng biệt. Nó không được triển khai rộng rãi như Apache.

MariaDB: MariaDB là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS), được phát triển từ ứng dụng MySQL. Đây là một phần mềm mã nguồn mở do Quỹ MariaDB phát triển và được cung cấp miễn phí. Không giống như MySQL thuộc sở hữu của Oracle, MariaDB tuân theo triết lý mã nguồn mở một cách chặt chẽ hơn. MariaDB tương tự như MySQL và sử dụng các lệnh SQL và truy vấn giống nhau. Tuy nhiên, MariaDB có nhiều tính năng mới hơn và được coi là vượt trội hơn MySQL về hiệu suất và tính tiện dụng.

PHP: Ngôn ngữ PHP được sử dụng trong stack này để lập trình và kịch bản phía máy chủ. PHP thường được sử dụng để xây dựng các trang web vì mã PHP có thể dễ dàng nhúng vào trong các tệp HTML. Ubuntu sẽ diễn giải mã PHP bằng một bộ xử lý PHP. Người dùng có thể cài đặt và sử dụng phần mềm PHP miễn phí theo giấy phép PHP. Thay vì PHP, các nhà phát triển có thể chọn sử dụng Perl hoặc Python. Cả ba ngôn ngữ này đều hoạt động tốt với phần còn lại của LEMP stack. Tuy nhiên, hướng dẫn này chỉ tập trung vào PHP.

Hướng dẫn cài đặt LEMP Stack

Bài viết hướng dẫn này mô phỏng việc cài đặt NGINX, MariaDB, PHP trên ubuntu

Bước 1: đăng nhập máy chủ thông qua SSH:

ssh root@{IP} -p {port}

Bước 2: kiểm tra apt package và cập nhật phiên bản mới nhất:

sudo apt update && sudo apt upgrade

Bước 3: tiến hành cài đặt NGINX

sudo apt install nginx
#kiem tra version nginx sau khi cai dat thanh cong
nginx -v
# xác thực trạng thái dịch vụ nginx có đang chạy không
sudo systemctl status nginx

Sau bước này, nếu cài đặt đúng, bạn có thể truy cập được IP public của Server.

Để xem danh sách các lệnh trong nginx, có thể sử dụng lệnh:

nginx -h

Output:

nginx version: nginx/1.18.0 (Ubuntu)
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/share/nginx/)
  -c filename   : set configuration file (default: /etc/nginx/nginx.conf)
  -g directives : set global directives out of configuration file

Để cấu hình nginx, các bạn quan tâm tới path này: /etc/nginx/nginx.conf (đây là tệp cấu hình mặc định cảu nginx, trong này sẽ tiến hành gọi tiếp các tệp cấu hình khác)

Để kiểm tra lại cấu hình xem thành công chưa, sử dụng lệnh:

nginx -t

Bước 4: tiến hành cài đặt MariaDB

sudo apt install mariadb-server
# Kiểm tra xem cài đặt thành công chưa, nếu truy cập được vào CSDL là thành công
mariadb
show database;
exit
# hoặc có thể dùng lệnh
mysql

Bước 5: cài đặt PHP-FPM package cho NGINX

Lưu ý: không sử dụng package php, vì package này tối ưu cho apache, server chúng ta sử dụng nginx nên cài đặt php-fpm kèm php là hợp lý

# mặc định sẽ cài 7.4
sudo apt install php php-fpm
# Nếu muốn cài một phiên bản nhất định, sử dụng lệnh dưới
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php #them ppa
sudo apt install php8.2 php8.2-fpm

Bước 6: cài đặt một số extension cho PHP (tùy chọn)

sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc

Đến công đoạn này, cơ bản chúng ta đã có thể bắt đầu thêm website vào Server.

Hướng dẫn thêm website PHP vào server và cấu hình NGINX, MariaDB:

Bước 1: Tạo thư mục gốc của website

sudo mkdir -p /var/www/html/example.com/public_html

Bước 2: Cấu hình tệp nginx.conf để khớp định tuyế của người dùng truy cập vào tên miền với thư mục mã nguồn tương ứng

sudo cp /etc/nginx/sites-enabled/default /etc/nginx/sites-available/example.com.conf

Cấu hình tệp example.com.conf vừa tạo:

  1. Xóa cấu hình máy chủ hiện có: Xóa tất cả cấu hình máy chủ hiện tại (không có dòng chú thích) cho đến dòng “Virtual Host configuration for example.com”. Thay đổi tên của dòng chú thích này để phản ánh đúng tên miền của bạn. Bỏ chú thích các dòng còn lại. Tất cả các thay đổi tiếp theo sẽ xảy ra bên trong khối mã bắt đầu bằng server.
  2. Giữ nguyên cấu hình listen: Những dòng này cho NGINX biết phải lắng nghe các kết nối đến trên cổng 80.
  3. Thay đổi giá trị server_name: Đặt giá trị server_name thành tên miền của bạn. Nhập tên miền với cả dạng có và không có tiền tố www, để khách truy cập có thể sử dụng cả hai cách.
  4. Đặt root thành tên của thư mục gốc mới được tạo cho miền: Ví dụ, với example.com, thư mục gốc là /var/www/html/example.com/public_html.
  5. Đặt giá trị của index: Với hầu hết các trang web, giá trị của index nên là index.html. Tuy nhiên, với WordPress và các trang web khác sử dụng PHP, nó phải được thay đổi thành index.php.
  6. Giữ nguyên khối location /: Cấu hình try_files yêu cầu NGINX kiểm tra xem tệp được yêu cầu có thực sự tồn tại trước khi xử lý yêu cầu hay không. Nếu tệp không tồn tại, NGINX sẽ trả về lỗi 404.
  7. Thêm một khối mã cho location ~* \.php$: NGINX áp dụng cấu hình này cho tất cả các tệp có phần mở rộng .php trong miền. Ký hiệu * cho biết tên tệp PHP không phân biệt chữ hoa chữ thường.
  8. Thay đổi tên của fastcgi_pass: Đặt tên của fastcgi_pass để chỉ ra socket mà PHP sẽ lắng nghe các yêu cầu mới. Socket này được tìm thấy tại unix:/run/php/php<release_num>-fpm.sock, trong đó release_num là số phiên bản PHP. Ví dụ: nếu phiên bản PHP là 8.1, fastcgi_pass sẽ là unix:/run/php/php8.1-fpm.sock. Để xác định phiên bản PHP, bạn có thể sử dụng lệnh php -v.
  9. Đặt chỉ thị include thành snippets/fastcgi-php.conf: Đây là tên của tệp cấu hình xử lý việc xử lý PHP.
  10. Thêm một khối location cho ~ /\.ht: Điều này cho NGINX biết không phục vụ bất kỳ tệp .htaccess nào.

Ví dụ:

server {
    listen 80;
    listen [::]:80;

    server_name example.com www.example.com;
    root /var/www/html/example.com/public_html;
    index index.html;

    location / {
        # cau hinh wordpress
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;  # Adjust the PHP version if necessary
        include snippets/fastcgi-php.conf; 
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }
}

Để cho phép tên miền này trong cấu hình NGINX, tiến hành liên kết với thư mục sites-enabled thông qua lệnh:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

Để gia tăng bảo mật, có thể unlink site mặc định (tùy chọn):

sudo unlink /etc/nginx/sites-enabled/default

Bước 3: tạo và cấu hình cơ sở dữ liệu cho website

Truy cập MARIADB:

mariadb -u root

Output:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.7-MariaDB-2ubuntu1 Ubuntu 22.04
...
MariaDB [(none)]

Tạo CSDL:

CREATE DATABASE your_db;

Tạo user mariadb sử dụng để tương tác với CSDL:

CREATE USER 'your_username' IDENTIFIED BY 'your_password';

Gán quyền làm việc với bảng cho user vừa tạo:

GRANT ALL ON your_db.* TO 'your_username';

Thoát MARIADB:

quit

Ngoài ra, các bạn có thể cài đặt thêm mysql_secure_installation (tiện ích dựng sẵn) để cấu hình bảo mật cho mysql

Xem thêm: mysql_secure_installation – MariaDB Knowledge Base

mysql_secure_installation
Enter current password for root (enter for none):
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] n
 ... skipping.

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!

Bước 4: Cài đặt certbot Let’s EnCrypt

Cài đặt Cerbot:

sudo apt update
sudo apt install certbot python3-certbot-nginx

Đảm bảo Filewall cho phép các traffic https:

sudo ufw status # optional
sudo ufw allow 'Nginx HTTPS'  # optional
sudo ufw deny 'Nginx HTTP'  # optional
sudo ufw allow 'Nginx Full'  # optional

Đăng ký SSL cho tên miền mới với certbot

sudo certbot --nginx -d example.com -d www.example.com

Test certbot gia hạn hoạt động có ổn định không:

/usr/bin/certbot renew --dry-run

Tạo cronjob để certbot tự động gia hạn khi tên miền hết hạn:

crontab -e
0 5 * * * /usr/bin/certbot renew --quiet

Một số vấn đề thường gặp khi sử dụng php-fpm với nginx

Giá trị max_excution_time, max_input_vars … không cập nhật mặc dù đã thay đổi trong php.ini:

Cập nhật tệp /etc/php/8.3/fpm/pool.d/www.conf thêm line sau:

php_admin_value[max_execution_time] = 600
php_value[max_input_vars] = 10000

Bài viết liên quan:

Làm việc với tệp tin (file) trong Linux
Hướng dẫn mount (gắn kết) ổ cứng trong ubuntu
Giới thiệu cấu trúc thư mục và bắt đầu phiên làm việc với Linux
Fix lỗi initramfs (fsck) khi khởi động ubuntu: BusyBox v1.22.1 (Ubuntu 1:1.30.0-4ubuntu6.4)
Hướng dẫn sử dụng Rclone backup VPS lên google drive

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

KHÁI NIỆM QUẢN LÝ DỰ ÁN CÔNG NGHỆ THÔNG TIN (IT PROJECT MANAGEMENT)

Cấu trúc lập trình và Mảng

Bắt đầu với C#

1. GIỚI THIỆU KHÁI NIỆM CHUẨN MỰC – ĐẠO ĐỨC VÀ VẤN ĐỀ NGHỀ NGHIỆP TRONG CNTT

2. ÁP DỤNG CÁC CHUẨN MỰC VÀ VẤN ĐỀ NGHỀ NGHIỆP TRONG CNTT

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×