Lưu trữ thẻ: #ubuntu

Hướng dẫn cấu hình Apache MPM

I. Giới thiệu và so sánh sự khác nhau giữa 3 mode chính

Apache MPM là các module muti-processing quyết định cách thức mà Apache sẽ tiếp nhận và xử lý các request từ client. MPM là module của apache nên có thể enable hay disable trong file config của apache. Apache từ version 2.4 trở đi hỗ trợ 3 modules multi-processing : worker, prefork và event (lưu ý : trong một thời điểm chỉ sử dụng được 1 trong 3 modules này).

  1. MPM Perfork
    Sử dụng nhiều tiến trình con (chill process) trong apache và mỗi chill process đó chỉ có 1 luồng (thread) để xử lý một request tại cùng một thời điểm.

    • Ưu điểm: Các process được xử lý hoàn toàn một cách độc lập không liên quan gì đến nhau, cho nên nếu một process chết thì các process còn lại vẫn hoạt động và vẫn hoàn thành công việc của nó. Đây là module mặc định và là module ổn định nhất, tương thích với các phần mềm cũ hơn.
    • Nhược điểm: do xử lý không phân luồng nên tạo ra quá nhiều process sẽ chiếm dụng lượng tài nguyên server lớn.
    • Thông số cần lưu ý:
      • StartServers : số process được tạo ra lúc apache start
      • MinspareServer : số process tối thiểu được chuẩn bị sẵn.
      • MaxSpareServer : số process tối đa được chuẩn bị sẵn
      • ServerLimit : Giá trị lớn nhất của Maxclient trong thời gian chạy apache
      • MaxClient : số process lớn nhất được chạy
      • MaxRequestsPerChild : số lượng request tối đa mà một process có thể phục vụ
      • MaxRequestWorkers : số lượng tiến trình con tối đa có thể tồn tại cùng một lúc
  2. MPM Worker
    Sử dụng nhiều tiến trình con (chill process) trong apache và mỗi chill process sẽ có nhiều luồng (thread) và mỗi luồng sẽ xứ lý một request tại một thời điểm.

    • Ưu điểm: có thể xử lý nhiều tiến trình cùng 1 lúc. Nhanh hơn prefork và có thể xử lý nhiều khách truy cập hơn.
    • Nhược điểm: do xử lý nhiều nên tính ổn định sẽ không cao so với prefork.
    • Thông số cần lưu ý:
      • StartServers : số process được tạo ra lúc apache start
      • MaxClient : tổng số connections đồng thời sẽ được xử lý
      • MinSpareThread : số Thread tối thiểu được chuẩn bị sẵn
      • MaxSpareServer : Số Thread tối đa được chuẩn bị sẵn
      • ThreadsPerChild : số thread có trong một process
      • MaxrequestsPerchild : tổng số connections đồng thời được process xử lý.
      • MaxRequestWorkers : tổng số luồng tối đa có thể hoạt động đồng thời.
  3. MPM Event
    Event MPM dựa trên mô hình Worker MPM để hoạt động. Event MPM sử dụng các tiến trình parent ( tiến trình cha ) chịu trách nhiệm chạy các chill process, mỗi chill process sẽ tạo ra nhiều thread để xứ lý các request.

    • Ưu điểm : là cải tiến từ mpm worker với mục tiểu chỉ sử dụng các luồng cho các kết nối có xử lý tích cực và là module nhanh nhất, sử dụng ít tài nguyên nhất.
    • Nhược điểm : Do xử lý phức tạp và xử lý nhiều tiến trình hơn cho với 2 module trên nên tính ổn định kém nhất.

II. Kiểm tra module MPM đang chạy trên server

Để kiểm tra module mpm nào đang chạy trên server, Quý khách có thể thực hiện lệnh sau:

  • Centos: httpd -V | grep -i mpm
  • Ubuntu: apachectl -V | grep -i mpm

III. Tính toán và thiết lập các thông số để tối ưu phù hợp

  1. Tính toán các thông số:
    • Cài đặt python ps_mem.py
      wget https://raw.githubusercontent.com/pixelb/ps_mem/master/ps_mem.py
      chmod a+x ps_mem.py
      python ps_mem.py


      Như ví dụ trong bài viết này đang có 3 process size apache (httpd) tiêu thụ 4.6MB, vì vậy mỗi apache process đang sử dụng khoảng 1.5MB RAM và mỗi PHP process size sẽ sử dụng khoảng 4.5MB

    • Công thức tính MaxrequestWorkers và ServerLimit:
      MaxRequestWorkers = (Total RAM – Memory used for Linux, DB, etc.) / process size
      MaxRequestWorkers = (3770 – 925) / 1.5 = 1896
    • Công Thức tính php-fpm max-children
      Max-children = (Tổng RAM – Bộ nhớ được sử dụng cho Linux, DB, v.v.) / PHP process zise
      Max-children = (3770 – 925) / 4.5 = 632
  2. Điều chỉnh cấu hình
    • Vào file cấu hình của module MPM đang chạy để chỉnh sửa ví dụ trong bài viết đang chạy MPM Event thì ta vào đường dẫn ” /etc/apache2/mods-enabled/mpm_event.conf ”
    • Lưu ý rằng cài đặt mặc định không chứa “server limit “, vì vậy thêm nó vào đây còn các thông số khác thì để mặc định.
    • Cấu hình thông số php-fpm (8.1 là version trong bài  viết này sử dụng), vào file config của php-fpm “/etc/php/8.1/fpm/pool.d/www.conf”
      pm = dynamic
      pm.max_children =  640
      pm.start_servers = (cpu cores * 4)
      pm.min_spare_servers =  (cpu cores * 2)
      pm.max_spare_servers =  (cpu cores * 4)
      pm.max_requests = 1000
    • Lưu lại và restart service apache để áp dụng cấu hình mới.

Như vậy, Long Vân đã hoàn thành hướng dẫn Quý khách cách cấu hình module mpm trong máy chủ Apache. Chúc Quý khách thành công!

Hướng dẫn cài đặt wordpress trên Ubuntu

I. Tổng quan

WordPress là một CMS (content management system) mã nguồn mở cho phép người dùng xây dựng và quản lý nội dung trên website. WordPress cung cấp cơ sở hạ tầng cơ bản để xây dựng một website, do đó nó phù hợp với hầu hết đối tượng người sử, bao gồm cả đối tượng là người sử dụng có ít kiến thức về lập trình.

Có nhiều cách để cài đặt một website WordPress, trong đó có những cách khá đơn giản đã được tích hợp sẳn trên các công cụ Hosting Control Panel (DirectAdmin, Cpanel,…) . Hướng dẫn dưới đây sẽ cài đặt WordPress thông qua cửa sổ dòng lệnh trên hệ điều hành Linux. Đây là cách cài đặt phức tạp và yêu cầu nhiều bước tiến , nhưng mặt khác cung cấp cho người dùng phương thức quản lý tốt hơn đối với website WordPress và môi trường mà nó chạy trên.

Môi trường cụ thể:

  • Hệ điều hành: Ubuntu 18.04
  • Web Server: Apache 2.4.54 + PHP 7.4
  • SQL Server: MySQL 10.6.9

II. Hướng dẫn cụ thể

  1. Cài đặt APACHE
    • Thực hiện lệnh cài đặt:
      # sudo apt install apache2
    • Start và enable dịch vụ Apache, đảm bảo Apache sẽ chạy cùng hệ điều hành
      sudo systemctl start apache2
      # sudo systemctl enable apache2
    • Tiến hành kiểm tra trạng thái dịch vụ Apache bằng lệnh:
      # sudo systemctl status apache2
  2. Cài đặt MYSQL
    • Trước tiên ta  tiến hành update  trước khi cài đặt một thứ gì đó bằng lệnh:
      # sudo apt update && sudo apt upgrade -y
    • Tiếp đến ta tiến hành cài đặt các  gói mysql-server:
      # sudo apt install mysql-server
    • MySQL chưa được khởi động sau khi install MySQL trên Ubuntu , nên bạn cần khởi động
      # systemctl start mysql
      # systemctl enable mysql
    • Tiến hành tạo 1 database cho website wordpress theo bằng các lệnh sau
      # mysql -u root -p

      Tạo một database trong MariaDB

      > create database wordpress;

      Tiếp đến tạo tạo một User

      > create user 'user1'@'địa chỉ Ip' IDENTIFIED BY 'password';

      Thiết lập quyền cho user để có quyền truy cập vào cơ sở dữ liệu.

      > GRANT ALL PRIVILEGES ON wordpress.* TO 'user1'@'%' IDENTIFIED BY 'password';

      > flush privileges;

  3. Cài đặt PHP-FPM
    • Để cài đặt PHP-FPM ta nên sử dụng ppa:ondrej/php PPA để có thể cài đặt phiên bản PHP-FPM mới nhất
      # sudo add-apt-repository ppa:ondrej/php
    • Tiếp theo các bạn cài đặt PHP bằng lệnh sau.
      # sudo apt -y install php7.4 php7.4-fpm
    • Đầu tiên các bạn backup lại file cấu hình mặc định
      # sudo cp /etc/php/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/www.conf.bak
    • Tiếp theo ta thực hiện lệnh Sed để thay đổi các thông số trong file www.conf
      # sudo sed -i 's/;listen.mode = 0660/listen.mode = 0660/g' /etc/php/7.4/fpm/pool.d/www.conf
      # sudo sed -i 's/;security.limit_extensions = .php .php3 .php4 .php5 .php7/security.limit_extensions = .php .php3 .php4 .php5 .php7/g' /etc/php/7.4/fpm/pool.d/www.conf
    • Cuối cùng tiến hành khởi động PHP-FPM
      # systemctl start php7.4-fpm
      # systemctl enable php7.4-fpm
  4. Cài đặt WORDPRESS
    • Đầu tiên ta cần tạo 1 foder Public_Apache
      # mkdir /home/wordpress/Public_Apache
    • Tiến hành cài download wordpress
      # cd /home/wordpress/
      # wget https://vi.wordpress.org/latest-vi.tar.gz
    • Giải nén file source wordpress bằng lệnh
      # tar -xvf latest-vi.tar.gz
    • Sau khi giải nén, bạn sẽ có file source wordpress như sau:
  5. Cấu hình Virtual Host:
    • Tạo file cấu hình virtual host cho website wordpress như sau :
      # touch /etc/apache2/site-availables/wordpress.conf
      # ln -s /etc/apache2/site-availables/wordpress.conf /etc/apache2/site-enables/
    • Ta truy cập vào file /etc/apache2/site-availables/wordpress.conf và cấu hình như sau:
      <VirtualHost *:80>
              DocumentRoot /home/wordpress/Public_Aphache/wordpress                  
              ServerName httai.tk                  
              ServerAlias www.httai.tk          
              <Directory "/home/wordpress/Public_Aphache/wordpress">
                       DirectoryIndex index.html index.php                          
                       Options FollowSymLinks                            
                       AllowOverride All                           
                       Require all granted          
               </Directory> 
      </VirtualHost>
    • Đến đây ta tiến hành cấp quyền cho thư mục
      # chown -R 755 /home/wordpress/Public_Aphache/wordpress
      # chown -R www-data:www-data /home/wordpress/Public_Aphache/wordpress
    • Truy cập vào wordpress và sử dụng thông tin MySQL đã tạo ở Phần 2 để kết nối đến database.
      Hình ảnh này chưa có thuộc tính alt; tên tệp của nó là image.png
    • Trong trường hợp gặp lỗi trong quá trình kết nối database, bạn có thể cấu hình trực tiếp ở file config trong resouce của WordPress như sau:
      # cd /home/wordpress/Public_Apache
      # mv wp-config-sample.php wp-config.php
      # vi wp-config.php
      Nhập thông tin database theo hướng dẫn ở hình dưới.
    • Tiếp tục thiết lập các thông tin của website WordPress và user quản lý, và cuối cùng nhấn Install WordPress để tiến hành cài đặt WordPress với thông tin đã cấu hình
    • Sau khi cài đặt xong, tiến hành login với tài khoản đã thiết lập ở trên.

Như vậy, Long Vân đã hoàn thành hướng dẫn Quý khách cài đặt WordPress trên server Ubuntu. Chúc Quý khách thành công!

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

I. HestiaCP là gì

HestiaCP là một Web Control Panel mã nguồn mở và hoàn toàn miễn phí, đồng thời là một nhánh của VestaCP. Nó cung cấp một giao diện web đơn giản và sạch sẽ, đồng thời cung cấp khả năng cho quản trị viên quản lý các tính năng cốt lõi của máy chủ web của họ, bao gồm quản lý và triển khai trang web, email, DNS và cơ sở dữ liệu một cách dể dàng.

HestiaCP cũng cung cấp giao diện dòng lệnh, bạn có thể đọc thêm trong tài liệu HestiaCP  Hestia Control Panel (hestiacp.com)

Là một nhánh của VestaCP nên HestiaCP cũng sẽ có giao diện làm việc khá tương đồng. Điều khác biệt cơ bản nhất là Hestia sẽ hỗ trợ Ubuntu và Debian, cụ thể bao gồm các phiên bản OS sau:

  • Debian 9
  • Debian 10
  • Ubuntu 16.04 LTS
  • Ubuntu 18.04 LTS
  • Ubuntu 20.04 LTS

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

Trong hướng dẫn này, Long Vân sẽ sử dụng hệ điều hành Ubuntu 18.04 LTS.

  1. Bước 1 : SSH vào máy chủ :
    Để cài đặt HestiaCP, chúng ta sẽ cần truy cập đến máy chủ bằng console hoặc SSH của với quyền root. bạn có thể tham khảo bài viết hướng dẫn sau để SSH vào server.
    https://longvan.net/cong-dong/huong-dan-su-dung-phan-mem-putty-de-ssh-den-server/
  2. Bước 2: tải file cài đặt bằng lệnh sau:
    # wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh
  3. Bước 3: tiến hành cài đặt với file vừa tải về
    • Chạy lệnh sau
      # bash hst-install.sh

    • Nhấn chọn y để tiếp tục
    • Hestia sẽ yêu cầu nhập các thông tin bao gồm domain chính và địa chỉ email để thiết lập các cài đặt ban đầu
    • Sau khi nhập đầy đủ các thông tin yêu cầu, HestiaCP sẽ tiến hành cài đặt hoàn toàn tự động cho đến khi có thông báo hoàn thành.
  4. Bước 4: truy cập Hestia CP
    • Để đăng nhập vào Web Control bằng thông tin hiển thị ở trên. Bạn sử dụng https://my-ip:8083 đăng nhập nhé. Và đây là giao diện đăng nhập HestiaCP.
    • Sau khi login thành công, giao diện Hestia CP sẽ hiển thị như sau:

Như vậy, Long Vân đã hoàn thành hướng dẫn Quý khách cách cài đặt HestiaCP, chúc Quý khách thành công !

Hướng dẫn cài đặt nhiều phiên bản PHP trên HestiaCP

I. HestiaCP

HestiaCP là một Web Control Panel mã nguồn mở và hoàn toàn miễn phí, đồng thời là một nhánh của VestaCP. Nó cung cấp một giao diện web đơn giản và sạch sẽ, đồng thời cung cấp khả năng cho quản trị viên quản lý các tính năng cốt lõi của máy chủ web của họ, bao gồm quản lý và triển khai trang web, email, DNS và cơ sở dữ liệu một cách dể dàng.

HestiaCP cũng cung cấp giao diện dòng lệnh, bạn có thể đọc thêm trong tài liệu HestiaCP  Hestia Control Panel (hestiacp.com)

Là một nhánh của VestaCP nên HestiaCP cũng sẽ có giao diện làm việc khá tương đồng. Điều khác biệt cơ bản nhất là Hestia sẽ hỗ trợ Ubuntu và Debian, cụ thể bao gồm các phiên bản OS sau:

  • Debian 9
  • Debian 10
  • Ubuntu 16.04 LTS
  • Ubuntu 18.04 LTS
  • Ubuntu 20.04 LTS

II. Hướng dẫn cài đặt nhiều phiên bản PHP trên HestiaCP

  1. Bước 1: SSH vào server HestiaCP.
  2. Bước 2. Thực hiện các lệnh sau:
    # cd /usr/local/hestia/bin
    # ./v-add-web-php 7.4
    • Lưu ý : 7.4 bạn có thế thay thế bằng các version php khác
  3. Bước 3: Thay đổi phiên bản PHP trên website
    • Truy cập vào panel quản trị hestiacp http://[ip-address]:8083
    • Chọn domain mong muốn cấu hình hoặc thay đổi version PHP.
    • Tại mục web ta chọn Edit Web Domain
    • Ở phần Backend Template, chọn version PHP đã thiết lập, ở đây Quý khách sẽ thấy HestiaCP sẽ hiển thị nhiều phiên bản PHP trong tùy chọn.
    • Nhấn OK và kiểm tra lại website đã thiết lập phiên bản PHP.
    • Quý khách có thể tạo một file info.php với nội dung như sau trong source code để kiểm tra chính xác phiên bản php đang chạy.
      <?php
          phpinfo();
      ?>

Như vậy, Long Vân đã hoàn thành hướng dẫn Quý khách chạy nhiều phiên bản php trên HestiaCP. Chúc Quý khách thành công !


Tìm hiểu Apache MPM

I. Giới thiệu và so sánh sự khác nhau giữa 3 mode chính (Prefork, Worker, Event)

Apache MPM là các module muti-processing quyết định cách thức mà apache sẽ tiếp nhận và xử lý các request từ client. MPM là module của apache nên có thể enable hay disable trong file config của apache. Apache từ version 2.4 trở đi hỗ trợ 3 modules multi-processing : worker, prefork và event (lưu ý : chỉ sử dụng được 1 trong 3 modules này).

   1. MPM Perfork
Sử dụng nhiều tiến trình con (chill process) trong apache và mỗi chill process đó chỉ có 1 luồng (thread) để xử lý một request tại cùng một thời điểm.

Ưu điểm: Các process được xử lý hoàn toàn một cách độc lập không liên quan gì đến nhau, cho nên nếu một process chết thì các process còn lại vẫn hoạt động và vẫn hoàn thành công việc của nó. Đây là module mặc định và là module ổn định nhất, tương thích với các phần mềm cũ hơn.

Nhược điểm: do xử lý không phân luồng nên tạo ra quá nhiều process sẽ chiếm dụng lượng tài nguyên server lớn.

Thông số cần lưu ý:

StartServers : số process được tạo ra lúc apache start
MinspareServer : số process tối thiểu được chuẩn bị sẵn.
MaxSpareServer : số process tối đa được chuẩn bị sẵn
ServerLimit : Giá trị lớn nhất của Maxclient trong thời gian chạy apache
MaxClient : số process lớn nhất được chạy
MaxRequestsPerChild : số lượng request tối đa mà một process có thể phục vụ
MaxRequestWorkers : xác định số lượng tiến trình con tối đa có thể tồn tại cùng một lúc.

 2. MPM Worker
Sử dụng nhiều tiến trình con (chill process) trong apache và mỗi chill process sẽ có nhiều luồng (thread) và mỗi luồng sẽ xứ lý một request tại một thời điểm.

Ưu điểm: có thể xử lý nhiều tiến trình cùng 1 lúc. Nhanh hơn prefork và có thể xử lý nhiều khách truy cập hơn.

Nhược điểm: do xử lý nhiều nên tính ổn định sẽ không cao so với prefork.
Thông số cần lưu ý:
StartServers : số process được tạo ra lúc apache start
MaxClient : tổng số connections đồng thời sẽ được xử lý
MinSpareThread : số Thread tối thiểu được chuẩn bị sẵn
MaxSpareServer : Số Thread tối đa được chuẩn bị sẵn
ThreadsPerChild : số thread có trong một process
MaxrequestsPerchild : tổng số connections đồng thời được process xử lý.
MaxRequestWorkers : trong Worker xác định tổng số luồng tối đa có thể hoạt động đồng thời.

   3. MPM Event
Event MPM dựa trên mô hình Worker MPM để hoạt động. Event MPM sử dụng các tiến trình parent ( tiến trình cha ) chịu trách nhiệm chạy các chill process, mỗi chill process sẽ tạo ra nhiều thread để xứ lý các request.

 Ưu điểm : là cải tiến từ mpm worker với mục tiểu chỉ sử dụng các luồng cho các kết nối có xử lý tích cực và là module nhanh nhất, sử dụng ít tài nguyên nhất.

Nhược điểm : Do xử lý phức tạp và xử lý nhiều tiến trình hơn cho với 2 module trên nên tính ổn định kém nhất.

II. Kiểm tra module MPM đang chạy trên server

Centos: httpd -V | grep -i mpm
Ubuntu: apachectl -V | grep -i mpm

III. Thiết lập và tính toán các thông số để tối ưu phù hợp

– Cài đặt python ps_mem.py
wget https://raw.githubusercontent.com/pixelb/ps_mem/master/ps_mem.py
chmod a+x ps_mem.py
python ps_mem.py

Như ví dụ trong bài viết này đang có 3 process size apache (httpd) tiêu thụ 4.6MB, vì vậy mỗi apache process đang sử dụng khoảng 1.5MB RAM và mỗi PHP process size sẽ sử dụng khoảng 4.5MB

– Công thức tính MaxrequestWorkers và ServerLimit:
MaxRequestWorkers = (Total RAM – Memory used for Linux, DB, etc.) / process sizeMaxRequestWorkers = (3770 – 925) / 1.5 = 1896

– Công Thức tính php-fpm max-children
Max-children = (Tổng RAM – Bộ nhớ được sử dụng cho Linux, DB, v.v.) / PHP process zise
Max-children = (3770 – 925) / 4.5 = 632

IV. Chỉnh sửa cấu hình MPM trong apache

Vào file cấu hình của module MPM đang chạy để chỉnh sửa ví dụ trong bài viết đang chạy MPM Event thì ta vào đường dẫn ” /etc/apache2/mods-enabled/mpm_event.conf ”

Lưu ý rằng cài đặt mặc định không chứa “server limit “, vì vậy thêm nó vào đây còn các thông số khác thì để mặc định.
Cấu hình thông số php-fpm (8.1 là version trong bài  viết này sử dụng), vào file config của php-fpm “/etc/php/8.1/fpm/pool.d/www.conf”

pm = dynamic

pm.max_children =  640

pm.start_servers = (cpu cores * 4)

pm.min_spare_servers =  (cpu cores * 2)

pm.max_spare_servers =  (cpu cores * 4)

pm.max_requests = 1000

Hướng dẫn cài đặt OwnCloud với LAMP trên Ubuntu 22.04

Để có thể cài đặt OwnCloud với LAMP trên Ubuntu 22.04, các bạn cần thực hiện các bước sau:

I. Cập nhật hệ thống

sudo apt-get update 
sudo apt-get upgrade

II. Cài đặt các gói cần thiết trước khi cài đặt Owncloud

– Cài đặt Apache

sudo apt-get install apache2 -y
systemctl enable apache2

– Cài đặt MariaDB Server

sudo apt install mariadb-server -y
mysql_secure_installation

*cấu hình MariaDB khởi chạy khi hệ thống hoạt động

systemctl enable mariadb

– Cài đặt PHP 7.4 và các thư viện cần thiết

sudo apt-get install software-properties-common  
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.4 -y
sudo apt-get install php7.4-cli php7.4-fpm php7.4-json php7.4-common php7.4-mysql php7.4-zip php7.4-gd php7.4-mbstring php7.4-curl php7.4-xml php7.4-bcmath php7.4-json php7.4-intl -y
sudo a2enmod php7.4
sudo systemctl restart apache2 

III. Cài đặt Owncloud

– Tải Owncloud từ trang chủ

wget https://download.owncloud.com/server/stable/owncloud-complete-latest.zip 

– Giải nén và phân quyền cho source

unzip owncloud-complete-latest.zip -d /var/www/
chown -R www-data:www-data /var/www/owncloud/ 

– Tạo database và User cho Owncloud

sudo mysql 
create database owncloud;
Grant all privileges on owncloud.* to ownclouduser@localhost identified by 'P@ssw0rd2o24';
Flush privileges;
exit; 

– Tạo virtualhost cho Owncloud.

/etc/apache2/sites-available/owncloud.longvan.lvs.conf 

sudo a2ensite owncloud.longvan.lvs.conf
systemctl restart apache2 

IV. Kiểm tra

Truy cập http://longvan.lvs để tiến hành cài đặt Owncloud trên trình duyệt web

Chú thích:
– Create an admin account
Username: admin ( người dùng tạo mới để đăng nhập )
Password: ********* ( mật khẩu để đăng nhập của người dùng)

– Data folder
/var/www/owncloud/data: đường dẫn mặc định để lưu các dữ liệu mới được up lên owncloud

– Configure the database
Database User: (người dùng đã tạo ở mariadb trước đó)
Database Pasword: (mật khẩu đã khởi ở mariadb trước đó)
Database name: (Tên cơ sở dữ liệu đã khởi tạo ở mariadb trước đó)

Sau khi điền đầy đủ thông tin chọn save set up owncloud sẽ reload lại về trạng thái đăng nhập

Đăng nhập với người dùng đã khởi tạo để đăng nhập vào Owncloud

V. Tổng kết

Như vậy, Long Vân  đã hoàn tất Hướng dẫn cài đặt OwnCloud với LAMP trên Ubuntu 22.04. Chúc Quý khách thành công.

Giới thiệu về Galera Cluster và cách cài đặt MySQL Galera Cluster trên Ubuntu 22.04

Galera Cluster là một giải pháp đồng bộ hóa dữ liệu mạnh mẽ dành cho MySQL, giúp tạo ra một hệ thống MySQL phân tán với tính nhất quán cao giữa các node trong cluster. Galera Cluster được sử dụng phổ biến trong các môi trường yêu cầu tính sẵn sàng cao, cho phép quản lý nhiều node cùng lúc mà vẫn đảm bảo tính toàn vẹn của dữ liệu.
Trong bài viết này Long Vân sẽ giới thiệu và hướng dẫn các bước để cài đặt cấu hình Galera Cluster cho MySQL, bao gồm:

  • Giới thiệu về Galera Cluster.
  • Sự khác nhau giữa Galera Cluster và mô hình Replication thường.
  • Hướng dẫn cài đặt Galera Cluster.
  • Thêm node Slave

I. Giới thiệu MySQL Galera Cluster

MySQL Galera Cluster là một hệ thống Multi-Master mà trên đó tất cả node đều có thể đọc và ghi dữ liệu tại mọi thời điểm. Client có thể kết nối tới mọi node, dữ liệu sẽ được tự động đồng bộ giữa các node, đồng thời sẽ đồng bộ sang node mới khi mới được thêm vào Cluster.

Một cụm Galera cần có ít nhất 3 node và ưu tiên chạy với số lượng node lẻ để đảm bảo tính toàn vẹn khi xảy ra sự cố với một trong các node.

II .Sự khác nhau giữa Galera Cluster với mô hình Mysql Replicate thường.

  1. Sơ đồ minh họa 
  2. Sự khác nhau
    • MySQL Replication (Hình bên trái)
      • Mô hình Master-Slave: Dữ liệu từ máy chủ chính (Master) sẽ được ghi vào một tệp log (Binlog). Sau đó, dữ liệu này được gửi tới máy chủ phụ (Slave) thông qua các luồng sao chép (IO Thread, SQL Thread).
      • Chế độ ghi và đọc:
        • Master: Cho phép thực hiện cả đọc và ghi dữ liệu.
        • Slave: Chỉ cho phép đọc dữ liệu (không ghi).
      • Nhược điểm chính của mô hình này là có độ trễ trong việc sao chép dữ liệu và chỉ có một máy chủ chính (Master) thực hiện các tác vụ ghi. Điều này có thể gây ra hiện tượng nghẽn cổ chai nếu có quá nhiều yêu cầu ghi vào Master.
    • Galera Cluster (Hình bên phải)

      • Mô hình Multi-Master: Mỗi node trong cụm Galera đều có thể thực hiện cả đọc và ghi dữ liệu. Các giao dịch sau khi được thực hiện sẽ được đồng bộ hóa tức thời giữa các node bằng cách sử dụng API wsrep và cơ chế giao tiếp nhóm (group communication).
      • Chế độ ghi và đọc:
        • Tất cả các node đều có khả năng đọc/ghi (read/write).
      • Galera sử dụng phương pháp đồng bộ dữ liệu đồng thời trên tất cả các node, giúp loại bỏ độ trễ và cho phép ghi vào bất kỳ node nào mà không lo xung đột hoặc mất dữ liệu. Mô hình này đảm bảo tính nhất quán cao hơn so với MySQL Replication.
    • Tóm lại
      • MySQL Replication chỉ có một máy chủ chính (Master) thực hiện các tác vụ ghi và có độ trễ khi sao chép dữ liệu sang máy chủ phụ (Slave).
      • Galera Cluster cho phép mọi node đều có thể ghi và dữ liệu được đồng bộ hóa đồng thời, giúp giảm thiểu các vấn đề về xung đột và độ trễ.

III. Hướng dẫn cài đặt Mysql Galera Cluster

  1. Chuẩn bị:
    • Ở bài viết này Long Vân sẽ sử dụng 4 VPS được cài đặt sẵn Os Ubuntu 22.04. Trong đó
      • 1 server làm Controller , cài đặt Galera Manager
        • 192.168.70.188 ( lvsnodecontroller)
      • 3 server để cấu hình Mysql Galera Cluster
        • 192.168.70.156 ( lvsnode1)
        • 192.168.70.159 ( lvsnode2)
        • 192.168.70.168 ( lvsnode3)
  2. Tiến hành cài đặt:
    • Cập nhật lại hệ thống cho cả 4 node
      sudo apt-get update
      sudo apt-get upgrade 
    • Trên Server Controller ( lvsnodecontroller)
      • Cài đặt trình quản lí Galera Manager để quản lí các lvsnode
        wget https://galeracluster.com/galera-manager/gm-installer
        chmod +x gm-installer
        ./gm-installer install 

        • Chọn a để accept cài đặt .
        • Điền thông tin user admin và password (cần đặt password ở bước này sau đó mới đổi password để tránh không login được ).
        • Điền thông tin server làm controller -> nhấn Enter 
        • Chạy lại cập nhật hệ thống để apply Galera-Manager vừa khởi  tạo
          sudo apt-get update
          sudo apt-get upgrade 
        • Truy cập trình duyệt để tạo Galera Cluster với user và password đã tạo ở trước đó 
        • Lúc này, quản trị viên có thể thực hiện các thao tác trên giao diện controller như tạo Cluster hoặc thêm node vào Cluster.
      • Tạo Cluster:
        • Trong giao diện Galera Controller, chọn ADD CLUSTER -> Deloy cluster on user-provided hosts
        • Nhập thêm thông tin tên Cluster và chọn cơ sở dữ liệu muốn sử dụng ở đây Long Vân sẽ chạy với mysql8.0. Chọn host system là hệ điều hành đang chạy.
        • Click chọn I have added public key to /root/.ssh/authorized_keys file on all nodes
        • Copy đoạn key trên và thêm vào cấu hình /root/.ssh/authorized_keys của các node còn lại ( lvsnode1, lvsnode2, lvsnode3 ).
        • Trên trình duyệt Galena Controller tiếp tục chọn ADD NODE. Thêm thông Node cần thêm –>CHECK ACCESS –> DEPLOY ( ở đây thêm lvsnode1 node đầu tiên vào).

        • Thêm tiếp các node còn lại lvsnode2 và lvsnode3 tương tự như làm ở lvsnode1.
        • Quá trình thêm node hoàn tất.
    • Kiểm tra quá trình đồng bộ giữa các lvsnode trên Cluster
      • Kiểm tra hoạt động của LongVan_Cluster vừa tạo giữa các lvsnode
      • Kiểm tra tính đồng bộ dữ liệu trên database
      • Tiến hành tạo database có tên lvsdemo ở lvsnode1 và kiểm tra đồng bộ ở lvsnode2 và lvsnode3 (như hình trên).

IV. Thêm node Slave vào trong Galera Cluster.

  1. Trong Galera Cluster, bạn có thể kết nối một node không đồng bộ (async slave) vào cụm. Điều này hữu ích vì vài lý do:

    • Chuyển tải truy vấn : Nếu cụm của bạn phải xử lý các truy vấn  hoặc phân tích dài và nặng, nó có thể làm chậm cả hệ thống. Bằng cách gửi các truy vấn này đến một máy chủ async slave riêng, bạn ngăn không cho tải này ảnh hưởng đến Galera Cluster.

    • Sao lưu trực tiếp: Async slave cũng có thể được sử dụng như một sao lưu từ xa, giúp tạo một bản sao dữ liệu trực tiếp để khôi phục khi gặp sự cố.

  2. Các bước thêm node Async
    • Thêm 1 Server  cho quá trình thêm Node Async ( Slave )
      • 192.168.70.180 ( lvsnode4 )
    • Trên node lvsnode4
      • Cài đặt galera-4 mysql-wsrep-8.0
        • Trước tiên, cần đảm bảo rằng khóa Galera Cluster GPG đã được cài đặt:

          apt-key adv --keyserver keyserver.ubuntu.com --recv 8DA84635 

        • Thêm thư viện souce list
          vi /etc/apt/sources.list.d/galera.list 
          deb https://releases.galeracluster.com/galera-4.20/ubuntu jammy main
          deb https://releases.galeracluster.com/mysql-wsrep-8.0.39-26.20/ubuntu jammy main 
        • Thêm kho lưu trữ
          vi /etc/apt/preferences.d/galera.pref 
          Package: *
          Pin: origin releases.galeracluster.com
          Pin-Priority: 1001 
        • Chạy lại update để cập nhật thư viện và kho lưu trữ vừa thêm
          sudo apt-get update 

        • Cài đặt galera-4 mysql-wsrep-8.0
          sudo apt-get install galera-4 mysql-wsrep-8.0 
        • Thêm cấu hình vào file conf mysql vừa đặt
          vi /etc/mysql/mysql.conf.d/mysqld.cnf 
          gtid_mode=ON
          log_bin=binlog
          log_slave_updates=1
          enforce_gtid_consistency
          expire_logs_days=7
          server_id=4
          binlog_format=ROW
          slave_net_timeout=60 
        • Khởi động lại Mysql để lưu lại cấu hình
          systemctl restart mysql 
    • Trên node lvsnode1
      • Thêm cấu hình vào file conf mysql
        vi /etc/mysql/mysql.conf.d/mysqld.cnf 
        gtid_mode=ON
        log_bin=binlog
        log_slave_updates=1
        enforce_gtid_consistency
        expire_logs_days=7
        server_id=1
        binlog_format=ROW 
      • Khởi động lại Mysql để lưu lại cấu hình
        systemctl restart mysql 
      • Tạo user replica cho node lvsnode4
        mysql
        CREATE USER 'replica'@'192.168.70.180' IDENTIFIED WITH 'mysql_native_password' BY 'P@ssw0rd321';
        GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.70.180';
        FLUSH PRIVILEGES;
        exit 

      • Trên node lvsnode4
        • Cấu hình replicate với user vừa tạo ở node lvsnode1
          mysql
          CHANGE MASTER TO MASTER_HOST = '192.168.70.156', MASTER_PORT = 3306, MASTER_USER = 'replica', MASTER_PASSWORD = 'P@ssw0rd321', MASTER_AUTO_POSITION = 1;
          START SLAVE;
          SHOW SLAVE STATUSG; 

      • Kiểm tra đồng bộ giữa server Master ( lvsnode1) và server Slave ( lvsnode4 ).
        • Đứng từ server Master (lvsnode1) tạo database với tên lvsdemo1  để xem quá trình đồng bộ từ Master (lvsnode1) xuống Slave (lvsnode4).
        • Ngược lại từ server Slave (lvsnode4) tạo database với tên lvsdemo2  để xem quá trình có đồng bộ ngược từ Slave ( lvsnode4 ) về Master ( lvsnode1).
        • Kết quả cho thấy dữ liệu phát sinh trên server Slave sẽ không đồng bộ ngược lại.

 

Như vậy qua bài viết này Long Vân đã giúp các bạn tìm hiểu sơ lược về Galera Cluster cũng như cách cài đặt Mysql Galera Cluster với cấu hình 3 node trên Galera-Manager là như thế nào. Chúc các bạn thành công .


Hướng dẫn cài đặt cấu hình UFW trên Ubuntu

I. Hướng dẫn cài đăt:

Thông thường ufw sẽ được cài đặt mặc định trên hệ điều hành Ubuntu. Thực hiện lệnh sau để kiểm tra:

# ufw version

Trong một số trường hợp, nếu chưa có ufw, Quý khách có thể thực hiện theo các thao tác dưới đây.

  1. Bước 1: Truy cập đến server và cập nhật hệ thống và kiểm tra cài đặt
    # sudo apt update
    # sudo apt upgrade
  2. Bước 2: Cài đặt ufw
    • Chạy lệnh cài đăt ufw
      # sudo apt-get install ufw
      

  3. Bước 3: Kiểm tra hoạt động
    • Nếu kết quả kiểm tra ok thì quá trình cài đặt ufw đã hoàn thành.

II. Hướng dẫn kích hoạt UFW trên server:

  • Kích hoạt UFW sau khi cài đặt
    # sudo ufw enable
  • Kiểm tra khi kích hoạt UFW
    # sudo ufw status
  • Khôi phục firewall UFW về cấu hình mặc định
    # sudo ufw reset

III. Hướng dẫn cấu hình UFW:

  1. Cấu hình rule mặc định:
    • Sử dụng lệnh sudo ufw status verbose để kiểm tra cấu hình firewall mặc định. Bao gồm:
      • Chặn toàn bộ kết nối đến : deny (incoming)
      • Cho phép truy cập ra bên ngoài : allow (outgoing)
      • Chặn cấu hình routed: disable (routed)
    • Để điều chỉnh cấu hình cấu hình mặc định, thực hiện lệnh sau:
      # sudo ufw default [policy] [chain]

      Ví dụ: để cho phép truy cập từ bên ngoài

      # sudo ufw default allow incoming
  2. Cho phép các port cần truy cập vào server
    • Mặc định firewall ufw sẽ chặn toàn bộ kết nối đến server.
    • Để thực hiện mở một port (cổng) bất kỳ bạn có thể thực hiện cú pháp lệnh như sau:
      # sudo ufw allow [port]/[protocol]

      Ví dụ : mở các port 80, 443, 3306 và 8080

  3. Chặn truy cập đến một port.
    • Các port không được allow sẽ tự động chặn kết nối từ bên ngoài.
    • Ngoài ra, để chặn một port cụ thể có thể sử dụng cú pháp với tùy chọn deny như sau:
      # sudo ufw deny [port]/[protocol]

      Ví dụ : mình sẽ đóng port 80, 443

  4. Ngoài ra ufw cho phép thực hiện lệnh allow và deny với loại service cụ thể. Ví dụ: sử dụng mysql thay vì mởi port 3306, sử dụng http hay https thay vì các port 80, 443, cụ thể:

    # sudo ufw deny mysql
    # sudo ufw allow http
    # sudo ufw allow https

  5. Cho phép môt IP hoặc một range IP truy cập đến server.
    • Cho phép một truy cập
      # sudo ufw allow from $Your_IP

      Ví dụ:  cho phép, mở IP 172.20.1.125 trên ufw như sau.

      # sudo ufw allow from 172.20.1.125

    • Chặn truy cập từ một IP
      sudo ufw deny from $Your_IP

      Ví dụ:  chặn truy cập từ IP 172.20.1.126 như sau.

      sudo ufw deny from 172.20.1.126

  6. Cho phép IP kèm port nhất định vào server

    • Lệnh cho phép một IP hoặc một range IP truy cập đến một Port cụ thể trên server:
    • Cú pháp:
      sudo ufw allow from [ip/range-ip] to any port [port-number]
    • Ví dụ: câu lệnh cho phép IP 192.168.72.1 truy cập đến port 22 và 3306
      sudo ufw allow from 192.168.72.1 to any port 22
      sudo ufw allow from 192.168.72.1 to any port 3306

  7. Xóa bỏ rule firewall cấu hình trước đó.
    • Kiểm tra các rule hiện có với số định danh. Lệnh:
      sudo ufw status numbered

    • Xác định chính xác rule muốn xóa với số định danh tương ứng
    • Thực hiện lệnh xóa rule với lệnh:
      sudo ufw delele [number]

      Ví dụ: thực hiện xóa rule cho phép truy cập đến port SSH (22) với lệnh

      sudo ufw delete 7

  8. Bật hoặc tắt ipv6 trên firewal UFW

    • Trong trường hợp server sử dụng IPv6, cần đảm bảo rằng IPv6 được bật trong UFW. 
    • Mở file cấu hình UFW ở /etc/default/ufw và tiến hành điều chỉnh.

      Nếu dòng IPV6=no bạn hãy chuyển sang YES để kích hoạt và ngược lại nếu muốn tắt thì chọn no.

    • Sau cùng sử dụng lệnh sau để reload lại cấu hình
      # sudo ufw reload

Như vậy, Long Vân đã hoàn thành hướng dẫn Quý khách cách cài đặt và cấu hình firewall UFW, chúc Quý khách thành công !

Hướng dẫn cài đặt và sử dụng RCLONE để kết nối đến S3 trên Ubuntu 22.04

I. Tổng quan

Rclone là một chương trình dòng lệnh, mã nguồn mở, đa luồng để quản lí lưu trữ trên cloud hoặc các phương thức lưu trữ có độ trễ cao khác. Nó đi kèm với các chức năng như rsync, truyền tệp, mã hóa, lưu cache, union mount, mount. Theo trang web chính thứ, Rclone hiện hỗ trợ đến 50 backends bao gồm cả Amazone và Google Drive.

Rclone thường được biết với 2 câu lệnh thường dùng là rclone sync và rclone mount , cho phép người dùng tương tác trực tiếp với dữ liệu trên bộ nhớ đám mây như chính trên máy của họ bằng các công cụ có sẵn trên máy. Việc truyền dữ liệu thông qua rclone được tối ưu hóa để có thể truyền tốt hơn qua các kết nối với độ trễ cao.

Trong nội dung bài viết này, Long Vân sẽ hướng dẫn bạn cách cài đặt và sử dụng Rcloud để kết nối đến S3 Cloud Storage của Long Vân, môi trường thực hiện trên trên điều hành Ubuntu 22.04.

II. Cài đặt Rclone trên Ubuntu 22.04

Việc cài đặt Rlone tương đối dể dang với hai bước sau:

  1. Bước 1: Update hệ điều hành với hai lệnh sau
    # apt-get update
    # apt-get upgrade 
  2. Bước 2: Chạy lệnh sau để cài đặt Rclone :
    # curl https://rclone.org/install.sh | sudo bash

III. Cấu hình Rclone sau khi cài đặt xong

  1. Thực hiện lênh sau để tiến hành cài đặt
    # rclone config 
  2. Chọn n “New remote ” để tạo một kết nối mới.
  3. Sau đó khai báo name> s3 ( ở đây s3 là tên mình đặt có thể dùng tên khác theo ý muốn).
  4. Chọn kiểu storage kết nối là “Amazon S3 Compliant …” tương ứng với tùy chọn số 5
  5. Tiếp tục chọn đơn vị cung cấp S3 Storage là “Any other S3 compatible provider“, tùy phiên bản rclone mà các tùy chọn này có thể có số thứ tự khác nhau.
  6. Nhấn 1 để chọn cách nhập thông tin xác thực, sau đó tiếp tục nhập access_key và secret_access_key đã được cung cấp.

  7. Ở tùy chọn region, nhấn chọn 1. Sau đó tiếp tục nhập endpoint tương ứng của dịch vụ S3 Cloud Storage: s3-hcm-r1.longvan.net

  8. Ở tùy chọn location_constraint, có thể nhập thông tin địa điểm hoặc bỏ qua.
  9. Trong tùy chọn acl (phân quyền truy cập), chọn 1 – FULL CONTROLL (private)

  10. Sau đó, rclone sẽ hỏi bạn về việc tùy chỉnh các cấu hình nâng cao hơn. Trong trường hợp cần cấu hình chi tiết, bạn có thể chọn y để tiến tục, hoặc nhấn n để hoàn thành phần cấu hình.
  11. Cuối cùng Rclone sẽ show lại các thông tin đã cấu hình. Nhấn Enter, hoặc y để hoàn thành.
    •  

Như vậy, trong bài viết này Long Vân đã hoàn thành hướng dẫn các bạn cài đặt cài rclone và sử dụng nó để kết nối đến S3 Cloud Storage của Long Vân. Chúc các bạn thành công.

 

Hướng dẫn cài đặt OpenVPN trên Ubuntu 20.04

I. OpenVPN là gì?

OpenVPN được biết tới là chương trình mã nguồn mở VPN hoàn toàn miễn phí. OpenVPN cũng được xem là giải pháp tốt nhất cho những người muốn có 1 kết nối an toàn và bảo mật giữa 2 hệ thống mạng với nhau.

Với OpenVPN cho phép các kết nối point to point an toàn trong các cấu hình được định tuyến hoặc bắc cầu và các phương tiện truy cập từ xa. Nó sử dụng giao thức bảo mật tùy chỉnh dựa trên SSL/TLS để thiết lập kết nối được mã hóa trên Internet.

II. Cài đặt OpenVPN

Yêu cầu:

  • Máy chủ Linux (Ở bài viết này mình sẽ cài đặt tren Ubuntu bản 20.04)
  • IP Public

Các bước thực hiện:

  1. Bước 1: Cập nhật hệ thống
    Chạy lệnh update để cập nhật mới hệ thống.
    root@root:~# sudo apt update

    Tiếp theo chạy lênh upgrade để cập nhật phiên bản mới nhất

    root@root:~# sudo apt upgrade
  2. Bước 2: Tải và cài đặt OpenVPN từ Script
    Đảm bảo server đã có sẳn wget, hoặc Quý khách có thể cài đặt bằng lệnh sau.
    root@root:~# apt install wget

    Tiến hành tải file cài file cài đặt.

    root@root:~# wget https://git.io/vpn -O openvpn-ubuntu-install.sh

  3. Bước 3: Tiến hành cài đặt
    • Cấp quyền run cho file cài đặt vừa download về
      root@root:~# chmod +x openvpn-ubuntu-install.sh
    • Thực hiện cài đặt với lệnh
      root@root:~# bash openvpn-ubuntu-install.sh
    • Nhập các tùy chọn theo hướng dẫn
  4. Quá trình cài đặt hoàn thành.

III. Quản lý User trong Open VPN server

  1. Tạo thêm User
    • Để tạo thêm User VPN, tiếp tục chạy lệnh
      root@root:~# bash openvpn-ubuntu-install.sh
    • Trong giao diện quản lý Open VPN, chọn tùy chọn 1) Add a new client.
    • Sau đó nhập tên của User cần tạo
    • Chờ quá trình tạo user hoàn thành.
  2. Trong giao diện quản lý Open VPN ở trên cũng có thể thực hiện việc xóa những user không còn sử dụng.

III. Cài đặt VPN Client

  1. Bước 1: Download và cài đặt ứng dụng VPN Client từ https://openvpn.net/downloads/openvpn-connect-v3-windows.msi 
  2. Bước 2: Download file OVPN, có thể thực hiện bằng hai cách:
    1. Cách 1: Sử dụng WinSCP hoặc một ứng dụng SSH có hỗ trợ download file, để download file OVPN trong folder /root/
    2. Cách 2: mở truy cập và download thông qua giao diện web.
      Lưu ý: việc mở truy cập để download file OVPN thông qua giao diện web sẽ không an toàn. Do đó, cần thiết phải giới hạn truy cập (cho phép 1 IP truy cập vào port 8000) trên firewall trước khi tiến hành.
      • Thực hiện cho phép truy cập trên firewall đối với port 8000
        root@root:~# sudo ufw allow from [IP_address] to any port 8000  

        Với [IP_address] là IP bạn đang sử dụng.

      • Bật HTTP với Open VPN bằng lệnh
        root@root:~#  cd /root && python3 -m http.server
      • Lúc này ta sẽ truy cập web bằng server-ip:8000 và tải về máy file OVPN.
  3. Bước 3: Di chuyển file OVPN vào bên trong folder C:Program FilesOpenVPN Connect trên máy client.
  4. Bước 4: Import file config bằng cách chọn File > Browse, chọn file .opvn vừa rồi, sau đó nhấn Open

  5. Bước 5: Trong cửa sổ làm việc, nhấn nhấn CONNECT để kết nối VPN.

Như vậy, Long Vân đã hoàn thành hướng dẫn cài đặt và cấu hình Open VPN trên server Ubuntu 22.04. Chúc Quý khách thành công!