Lưu trữ danh mục: Kiến Thức Về Website

Hướng dẫn cấu hình MySQL Master-Master Replication

I. Giới thiệu giải pháp

Lưu ý: thiết lập này mang lại một số vấn đề tiềm ẩn khi thay đổi dữ liệu đang xảy ra trên cả hai nodes. Nó có thể gặp vấn đề nếu có table với các trường auto_increment. Nếu cả hai máy chủ đang chèn hoặc cập nhật trong cùng một table, việc sao chép sẽ bị hỏng trên một máy chủ do lỗi “duplicate entry“. Để giải quyết vấn đề này, bạn cần thiết lập “auto_increment_increment” và “auto_increment_offset”.

Trong trường hợp này sẽ sử dụng thiếp lập master-master làm bản sao chủ độngthụ động. Nếu đã biết chỉ có một nodes đang thực hiện sửa đổi dữ liệu, bạn có thể tránh được nhiều vấn đề có thể xảy ra. Trong trường hợp dữ liệu chuyển đổi dự phòng, “slave” có thể dễ dàng được đưa lên làm dữ liệu chính(master). Sửa đổi dữ liệu được tự động sao chép sang nodes không thành công khi nó sao lưu.

Mô hình

II. Chuẩn bị

Ở đây ta cần có hai máy chủ đã cài đặt sẵn MySQL có cùng phiên bản để cấu hình. Trong bài hướng dẫn này, Long Vân sử dụng 2 máy chủ MySQL được thiết lập như sau:

  • Hệ điều hành: Ubuntu 22.04
  • Cơ sở dữ liệu: MySQL 8.0.36

III. Cấu hình

Cài đặt MySQL (trên 2 máy chủ)

$ wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
$ sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
$ apt-cache search mysql-server
$ sudo apt install mysql-server-8.0 -y 

Dừng MySQL trên cả hai máy chủ:

sudo systemctl stop mysql.service 

MASTER1 – (Bước 1. Cấu hình trên máy chủ đầu tiên)

Chỉnh sửa tệp cấu hình /etc/mysql/mysql.conf.d/mysqld.cnf

#bind-address           = 127.0.0.1
server-id = 200
report_host = master1
log_bin = /var/log/mysql/mariadb-bin
log_bin_index = /var/log/mysql/mariadb-bin.index
relay_log = /var/log/mysql/relay-bin
relay_log_index = /var/log/mysql/relay-bin.index
#replicate-do-db = test_db
auto_increment_increment = 5
auto_increment_offset = 1 

#bind-address = 127.0.0.1
Theo mặc định, MySQL chỉ cho phép các kết nối từ máy chủ cục bộ. Chúng ta cần xóa hoặc # dòng này lại để cho phép kết nối từ các máy chủ khác. Mục này rất quan trọng để mở rộng kết nối để hoạt động.

server-id = 200
report_host = master1

Thiết lập ID duy nhất cho máy chủ. Ở hướng dẫn này sẽ thiết lập sử dụng chữ số cuối của địa chỉ IP. Tùy chọn, ta có thể thiết lập tham số report_host cho các máy chủ có thể giao tiếp lẫn nhau thông qua hostnames đã thiết đặt.

log_bin = /var/log/mysql/mariadb-bin
log_bin_index = /var/log/mysql/mariadb-bin.index

Cho phép ghi nhật ký nhị phân (Enable binary logging).

relay_log = /var/log/mysql/relay-bin
relay_log_index = /var/log/mysql/relay-bin.index

Cho phép tạo tệp relay_log. Các Events trong các nhật ký nhị phân(master’s binary log) sẽ được ghi vào slave relay log.

replicate-do-db = testdb
Với tùy chỉnh này, ta có thể thiết lập với MySQL cơ sở dữ liệu nào cần sao chép. Tham số này là tùy chọn.

Tiếp đến ta cần khởi động máy chủ MySQL

sudo systemctl start mysql.service  

Đăng nhập vào root và tạo người dùng được sử dụng để sao chép dữ liệu giữa các máy chủ. Cấp quyền thích hợp cho người dùng.

$ sudo mysql -u root -p
mysql> create user 'replusr'@'%' identified by 'replusr';
mysql> grant replication slave on *.* to 'replusr'@'%'; 

Bước cuối cùng, kiểm tra thông tin trạng thái tệp binary log vì chúng ta sẽ sử dụng thông tin này để bắt đầu sao chép(replication) trên một máy chủ(node) khác.

mysql> show master status;
+--------------------+----------+--------------+------------------+-------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+--------------------+----------+--------------+------------------+-------------------+
| mariadb-bin.000017 |      611 |              |                  |                   |
+--------------------+----------+--------------+------------------+-------------------+ 

MASTER2 (Bước 2. Cấu hình trên máy chủ thứ hai)

Chỉnh sửa tệp cấu hình /etc/mysql/mysql.conf.d/mysqld.cnf

#bind-address           = 127.0.0.1
server-id = 201
report_host = master2
log_bin = /var/log/mysql/mariadb-bin
log_bin_index = /var/log/mysql/mariadb-bin.index
relay_log = /var/log/mysql/relay-bin
relay_log_index = /var/log/mysql/relay-bin.index
#replicate-do-db = test_db
auto_increment_increment = 5
auto_increment_offset = 1 

Khởi động máy chủ MySQL

sudo systemctl start mysql.service  

tạo người dùng được sử dụng để sao chép dữ liệu và cấp quyền thích hợp cho người dùng.

$ sudo mysql -u root -p
mysql> create user 'replusr'@'%' identified by 'replusr';
mysql> grant replication slave on *.* to 'replusr'@'%'; 

Để bắt đầu sao chép, nhập lệnh phía bên dưới

mysql> STOP SLAVE;
mysql> CHANGE MASTER TO MASTER_HOST='master1', MASTER_USER='replusr', MASTER_PASSWORD='replusr', MASTER_LOG_FILE='mariadb-bin.000017', MASTER_LOG_POS=611;
mysql> START SLAVE; 

Đối với MASTER_LOG_FILE và MASTER_LOG_POS. Đã sử dụng thông tin từ “show master status” ở đầu tiên.

Kiểm tra thông tin trạng thái của Slave

mysql> SHOW SLAVE STATUSG
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: master1
                  Master_User: replusr
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mariadb-bin.000017
          Read_Master_Log_Pos: 611
               Relay_Log_File: relay-bin.000028
                Relay_Log_Pos: 831
        Relay_Master_Log_File: mariadb-bin.000017
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 611
              Relay_Log_Space: 1206
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 200
                  Master_UUID: c7f19e4d-0605-11ef-8f6e-005056a5dd4e
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set:
            Executed_Gtid_Set:
                Auto_Position: 0
         Replicate_Rewrite_DB:
                 Channel_Name:
           Master_TLS_Version:
       Master_public_key_path:
        Get_master_public_key: 0
            Network_Namespace:  

Lưu ý Read_Master_Log_Pos và Exec_Master_Log_Pos được đồng bộ hóa, đây là dấu hiệu tốt cho cơ sở dữ liệu của chúng ta đang đồng bộ hóa

Kiểm tra thông tin trạng thái về tệp binary logs của máy chủ MASTER2. Chúng ta sẽ cần thông tin này để bắt đầu sao chép trên máy chủ MASTER1.

mysql> show master status;
+--------------------+----------+--------------+------------------+-------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+--------------------+----------+--------------+------------------+-------------------+
| mariadb-bin.000016 |     1498 |              |                  |                   |
+--------------------+----------+--------------+------------------+-------------------+

MASTER1 – (Bước 3. Sao chép dữ liệu từ MASTER2 sang MASTER1)

Bắt đầu replication dữ liệu từ MASTER2 sang MASTER1

mysql> STOP SLAVE;
mysql> CHANGE MASTER TO MASTER_HOST='master2', MASTER_USER='replusr', MASTER_PASSWORD='replusr', MASTER_LOG_FILE='mariadb-bin.000016', MASTER_LOG_POS=1498;
mysql> START SLAVE; 
mysql> SHOW SLAVE STATUSG
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: master2
                  Master_User: replusr
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mariadb-bin.000016
          Read_Master_Log_Pos: 1498
               Relay_Log_File: relay-bin.000030
                Relay_Log_Pos: 328
        Relay_Master_Log_File: mariadb-bin.000016
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: test_db
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 1498
              Relay_Log_Space: 883
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 201
                  Master_UUID: c0db3da1-0605-11ef-8335-005056a5e4fe
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set:
            Executed_Gtid_Set:
                Auto_Position: 0
         Replicate_Rewrite_DB:
                 Channel_Name:
           Master_TLS_Version:
       Master_public_key_path:
        Get_master_public_key: 0
            Network_Namespace: 

Mọi thứ hoạt động tốt.
Hãy thử nghiệm tạo bảng và chèn một số hàng để kiểm tra bản sao.

Ở thử nghiệm này mình sẽ có thí dụ đơn giản ở server MASTER1 sẽ triển khai một trang cơ bản wordpress và thay đổi home, siteurl trong bảng wp_options

MASTER1 – (Bước 4. Kiểm tra thử thay đổi dữ liệu trên máy chủ MASTER1)

mysql> use test_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');
+-------------+-----------------+
| option_name | option_value    |
+-------------+-----------------+
| home        | http://test.com |
| siteurl     | http://test.com |
+-------------+-----------------+
2 rows in set (0.00 sec)

mysql> UPDATE wp_options SET option_value = 'http://test123.com' WHERE option_name IN ('siteurl', 'home');
Query OK, 2 rows affected (0.01 sec)
Rows matched: 2  Changed: 2  Warnings: 0 

MASTER2 – (Bước 5. Kiểm tra dữ liệu trên cơ sở dữ liệu của MASTER2)

mysql> use test_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');
+-------------+--------------------+
| option_name | option_value       |
+-------------+--------------------+
| home        | http://test123.com |
| siteurl     | http://test123.com |
+-------------+--------------------+
2 rows in set (0.00 sec) 

Ta có thể thấy nội dung bảng đã được sao chép thành công.

Nếu có sự cố ở MASTER1, trong khi đó MASTER2 vẫn hoạt động và ghi dữ liệu bình thường sẽ có thông báo lỗi Last_IO_Error trong lúc MASTER1 không hoạt động.

Sau đó khởi động lại MASTER1. Máy chủ MySQL và replication MySQL sẽ tự động kích hoạt và đồng bộ dữ liệu MASTER1 theo kịp với MASTER2.

Như vậy Long Vân đã hoàn thành hướng dẫn cấu hình MySQL Master-Master Replication, chúc Quý Khách thành công!

Hướng dẫn kiểm tra dung lượng ổ đĩa trong Linux

I. Giới thiệu

Kiểm tra dung lượng ổ đĩa trong Linux là điều cần thiết để duy trì sự ổn định của hệ thống.
Nó ngăn ngừa các vấn đề về hiệu suất, lỗi ứng dụng và khả năng mất dữ liệu do dung lượng ổ đĩa thấp
Bài viết này sẽ trình bày chi tiết về các cách để kiểm tra dung lượng ổ đĩa trong Linux
Ở bài này thực hiện trên hệ điều hành ubuntu 22.04, đối với hệ điều hành centos tương tự.

II. Kiểm tra dung lượng ổ đĩa trong Linux

Cách 1: kiểm tra thông qua lệnh df
1
. Lệnh df không có đối số nào

df

2. Chi tiết mức đã sử dụng dưới dạng human-readable

df -h

lệnh df -h, thông tin về không gian đĩa sẽ được hiển thị dưới dạng human-readable
là sử dụng đơn vị dung lượng dễ đọc như Kbytes, Mbytes, Gbytes, thay vì hiển thị dưới dạng số lượng khối 1K (kilobyte)

  • Filesystem: tên của hệ thống tệp hoặc tên thiết bị
  • 1K-blocks: kích thước của hệ thống tệp trong 1K khối
  • Size: tổng kích thước của không gian đĩa/phân vùng
  • Used: dung lượng đã sử dụng hoặc không gian đã sử dụng trong 1K khối
  • Avail: dung lượng còn trống hoặc không gian còn trống trong 1K khối
  • Use%: Phần trăm dung lượng đã sử dụng
  • Mounted on: đường dẫn thư mục nơi mà hệ thống tệp được gắn

3. Hiển thị một hệ thống tập tin cụ thể
Lệnh df cũng có thể hiển thị một hệ thống tập tin cụ thể.
Ví dụ: ta có thể thêm đường dẫn “/” sau lệnh, để hiển thị mức sử dụng trên ổ cứng chính:

df -h /

4. Hiển thị hệ thống tập tin theo định dạng
Các loại hệ thống tệp xác định cách tổ chức, lưu trữ và truy cập dữ liệu trên thiết bị lưu trữ.
Có nhiều loại hệ thống tập tin, mỗi loại được thiết kế cho một mục đích cụ thể.
Ví dụ: để liệt kê danh sách các hệ thống tệp có định dạng ext4, hãy sử dụng lệnh:

df -h ext4

Lệnh df chỉ nhắm tới hệ thống tập tin đầy đủ. Ngay cả khi bạn chỉ định một thư mục riêng lẻ, df sẽ đọc dung lượng của toàn bộ ổ đĩa.

Cách 2: Kiểm tra dung lượng ổ đĩa thông qua lệnh du

1. Lệnh du hiển thị mức sử dụng của ổ đĩa cho từng thư mục trong Linux
Sử dụng nó để hiển thị lượng không gian được sử dụng bởi thư mục bạn đang truy cập hiện tại

du 

2. Tương tự lệnh df với lệnh du ta có thể sử dụng du -h để hiển thị dưới dạng human-readable giúp chúng ta dễ đọc hơn:

du -h

Nó sẽ hiện nội dung thư mục hiện tại và dung lượng chúng đang sử dụng tính bằng kilobyte , megabyte gigabyte.
3.
Kiểm tra chi tiết từng thư mục, file bằng cách dùng lệnh du -sh *
Truy cập vào thư mục cần kiểm tra sử dụng ở đây. Ví dụ: truy cập đến /var/log chạy lệnh “cd /var/log”
Sau đó dùng lệnh du -sh * để liệt kê chi tiết:

df -sh *

Như vậy chúng ta có thể xem chi tiết dung lượng các mục đang có trong /var/log/

Cách 3: Kiểm tra dung lượng ổ đĩa thông qua lệnh lsblk và fdisk -l
1.
Lệnh lsblk hiển thị thông tin về các thiết bị lưu trữ
Tiện ích này được sử dụng để xác định tên thiết bị chính xác được truyền cho lệnh tiếp theo.
Để kiểm tra công cụ, hãy chạy như sau:

lsblk

Lệnh ‘lsblk’ liệt kê tất cả các thiết bị khối (đĩa và phân vùng của chúng) theo định dạng.
Nó hiển thị tên, số thiết bị chính và phụ, kích thước, loại thiết bị và điểm gắn kết…

2. Lệnh fdisk là một tiện ích được sử dụng để quản lý các phân vùng đĩa
Sử dụng fdisk, bạn có thể liệt kê các phân vùng đĩa, tạo một phân vùng mới, xóa một phân vùng đĩa hiện có và xem kích thước của phân vùng đó.

fdisk -l

Hình trên sau khi chạy lệnh hiển thị chi tiết từng phân vùng và kích thước của ổ đĩa

Như vậy, Long Vân đã hoàn thành hướng dẫn kiểm tra dung lượng ổ đĩa trong Linux. Chúc Quý khách thành công.

Hướng dẫn sử dụng MobaXterm để kết nối SSH tới VPS Linux

1. Giới thiệu

MobaXterm cung cấp những tính năng ưu việt hơn so với việc sử dụng Putty, giúp người dùng dễ dàng điều khiển các máy chủ Linux gồm:

  • Mở nhiều cửa sổ để làm việc
  • Tích hợp việc FTP hoặc SFTP để truyền file từ máy người dùng lên máy chủ
  • Thao tác zoom màn hình CLI hoặc thay đổi màu sắc bắt mắt hơn
  • Phương thức kết nối như FTP, Telnet, RDP (Remote Desktop với các máy là Windows)
  • Công cụ dùng để scan port, scan network
  • Lưu phiên đăng nhập sau lần đầu truy cập vào SSH hoặc các giao thức khác.

2. Cài đặt Mobaxterm

MobaXterm có hai phiên bản: miễn phí và trả phí, đối với người dùng mong muốn trải nghiệm thử có thể tải xuống phiên bản miễn phí là đủ
Để tải xuống bản Home Edition miễn phí, truy cập vào trang chủ MobaXterm để tải xuống

3. Sử dụng MobaXterm để truy cập SSH

Sau khi tải về giải nén và mở giao diện Mobaxterm

  1. Session > New Session (hoặc thao tác nhấn tổ hợp phím Ctrl + Shift + N)
  2. Cửa sổ mới hiện lên sau khi thao tác trên tương tư như hình bên dưới => chọn SSH.
  3. Tại cửa sổ này, tiến hành nhập địa chỉ IPport của máy chủ,theo mặc định giá trị port SSH sẽ là 22 nếu như bạn không có thay đổi gì.
  4. Sau khi nhập thông tin hoàn tất, chọn OK
  5. Sau khi hoàn tất bước trên sẽ chuyển qua giao diện để nhập người dùng và mật khẩu của máy chủ
    Tùy thuộc vào thông tin người dùng bạn sỡ hữu, ở hướng dẫn này sẽ sử dụng người dùng root.

Lưu ý: khi nhập mật khẩu sẽ không hiển chú thích dấu * như các ứng dụng khác, bạn có thể sao chép mật khẩu ra notepad và dán lại ở màn hình trên
Ta chọn YES để mỗi lần đăng nhập lại ta không cần khai báo lại mật khẩu

6. Sau khi chọn YES hoặc NO ta sẽ có màn hình dưới

Tới đây bạn đã truy cập SSH thành công!

Như vậy, Long Vân đã hướng dẫn Quý khách sử dụng MobaXterm để kết nối SSH đến server linux. Chúc Quý Khách thành công!

Hướng dẫn sử dụng lệnh wget trong linux

I. Khái niệm Wget là gì?

Wget là một công cụ duy trì tải xuống tệp trong các trường hợp kết nối mạng không ổn định và chậm, không gây gián đoạn. Wget là lệnh rất linh hoạt và hoạt động trong các thiết bị đầu cuối, tập lệnh và công việc cron. Người dùng không cần phải hoạt động hoặc đăng nhập trong quá trình tải xuống

II. Lợi ích của wget

  • Hỗ trợ khả năng tiếp tục tải xuống bị gián đoạn, tính năng này hữu ích cho các tệp lớn hoặc kết nối không ổn định.
  • Wget cho phép người dùng hạn chế sử dụng băng thông trong quá trình tải xuống, cho phép quản lý tốt hơn các tài nguyên mạng.
  • Tính linh hoạt, công cụ này xử lý các giao thức như HTTP, HTTPS và FTP làm cho nó linh hoạt để tải xuống nội dung từ các nguồn khác nhau.

III. Rủi ro khi sử dụng wget

  • Đôi khi vô tình tải xuống khối lượng lớn dữ liệu hoặc toàn bộ trang web.
  • Về bảo mật: sử dụng lệnh wget để truy xuất nội dung từ các nguồn đáng ngờ hoặc thông qua các URL được xây dựng độc hại phơi bày các hệ thống trước các mối đe dọa bảo mật như phần mềm độc hại hoặc lừa đánh cắp thông tin.
  • Việc sử dụng wget đối với các loại nội dung cụ thể đôi khi vi phạm bản quyền hoặc quyền sở hữu
    Không đầy đủ các dữ liệu cần dẫn đến việc có thông tin trang web không hoàn chỉnh.

IV. Kiểm tra cài đặt

Tiện ích wget rất có thể đã có sẵn trên hệ thống, vì nó thường được cài đặt sẵn.
Để kiểm tra công cụ có sẵn trên hệ thống của bạn, hãy chạy lệnh wget

wget

Nếu wget đã được cài đặt, đầu ra cho thấy lệnh bị thiếu một URLNếu wget chưa được cài đặt output sẽ báo no such file or directory

V. Cài đặt Wget

Nếu chưa được cài đặt trên máy chủ, bạn có thể cài đặt thủ công
Dưới đây là hướng dẫn cài đặt cho các hệ điều hành như Ubuntu/Debian

  1.  Tải xuống các thông tin gói từ các nguồn được cấu hình
    apt-get update -y
  2.  tiếp đến chạy lệnh bên dưới để cài đặt wget
    apt-get install wget -y

VI. Các tiện ích của Wget

1. Lệnh tải tệp từ web: wget [URL]

wget https://apt.puppetlabs.com/puppet8-release-jammy.deb

2. Lệnh tải với tên chỉ định, cho phép người dùng có thể đặt tên cho tập tin: wget -O [file_name] [URL]

wget -O PuppetServer https://apt.puppetlabs.com/puppet8-release-jammy.deb

3. Lệnh tải tệp vào thư mục/đường dẫn cụ thể: wget -P [target_directory] [URL]

wget -P ./Documents https://apt.puppetlabs.com/puppet8-release-jammy.deb

4. Lệnh thiết đặt tốc độ tải xuống: wget –limit-rate [maximum_speed] [URL]

wget --limit-rate 1m https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tgz

5. Lệnh tải nhiều tệp: wget -i [file_name]

vi MultipleDownloads.txt

Khi ở trong trình chỉnh sửa, bạn hãy thêm URL của các gói muốn tải xuống.
Đây là các URL mình muốn tải xuống:

Sau đó chạy lệnh wget:

wget -i MultipleDownload

6. Lệnh tải toàn bộ trang web: wget -m [URL]

wget -m https://vnexpress.net

7. lệnh tải trong nền: wget -b [URL]

wget -b https://awebsite.vn

8. Lệnh kiểm tra trạng thái tải xuống với đuôi lệnh:

tail -f wget-log

Hướng dẫn cách thay đổi mật khẩu trong Linux

I. Giới thiệu

Mật khẩu được sử dụng để xác thực người dùng và ngăn chặn truy cập trái phép vào dữ liệu nhạy cảm. Việc thay đổi mật khẩu Linux thường xuyên sẽ bổ sung thêm một lớp bảo mật và giảm khả năng bị tấn công dựa trên mật khẩu.

II. Cách thay đổi mật khẩu của riêng bạn trong Linux

  1. Truy cập ssh vào server, mở cửa sổ terminal và chạy lệnh passwd
    passwd
  2. Nhập mật khẩu hiện tại của bạn
  3. Nhập mật khẩu mới và nhập lại mật khẩu mới lần nữa
  4. Thay đổi mật khẩu thành công sẽ có thông báo “password updated successfully

III. Cách thay đổi mật khẩu của người dùng khác trong Linux

Để thay đổi mật khẩu của người dùng khác

  1. Sử dụng passwd lệnh với tên người dùng mà bạn muốn thay đổi mật khẩu. Ví dụ: longvan1
    passwd longvan1
  2. Nhập mật khẩu mới cho người dùng và nhập lại mật khẩu mới lần nữa.
  3. Thay đổi mật khẩu thành công sẽ có thông báo “password updated successfully

IV. Cách thay đổi mật khẩu root trong Linux

Mật khẩu root cho phép người dùng thực thi các lệnh đặc quyền cao nhất, dể thay đổi mật khẩu root trong Linux:

  1. Sử dụng lệnh passwd
    passwd root
  2. Nhập mật khẩu mới cho root và Nhập lại mật khẩu mới
  3. Thay đổi mật khẩu thành công sẽ có thông báo “password updated successfully

Như vậy Long Vân đã hoàn thành Hướng dẫn cách thay đổi mật khẩu trong Linux. Chúc Quý Khách thành công.

Hướng dẫn cài đặt giao diện cho Ubuntu 22.04

I. Khái niệm GUI là gì?

GUI được viết tắt của Graphical User Interface – Giao diện đồ họa người dùng. GUI giúp người dùng dễ dàng hơn trong quá trình giao tiếp với thiết bị điện tử thông minh, bằng việc sử dụng hình ảnh hoặc chữ viết thay vì mất công gõ các đoạn văn bản dài dòng. GUI đang được ứng dụng cực kì phổ biến.

II. Cài đặt

1. Bước 1: Đầu tiên cần chạy lệnh update và upgrade

apt-get update -y

2. Bước 2: Hãy nhập và chạy các lệnh bên dưới để cài đặt
Lưu ý: Ở các bước cài đặt hệ thống sẽ xác nhận chỉ cần nhập Y và chờ tải hoàn tất
Ở tất cả các thông báo thiết lập hoặc chạy lại service tiếp tục bằng cách nhấn chọn ENTER

sudo apt install ubuntu-gnome-desktop #Full Version
sudo apt install ubuntu-desktop-minimal #Minimal
sudo apt install vanilla-gnome-desktop #More Stripped Than Minimal
sudo apt install task-gnome-desktop #Full

III. Kết quả

Sau khi đã cài đặt xong hãy khởi động lại server để khởi động giao diện người dùng vừa cài đặt

Sau khi đã khởi động lại ta thấy Welcome to Ubuntu 22.04
hãy chọn StartSetup ở cuối màn hình để setup user login vào server

Hoàn tất các công đoạn trên, hãy chọn Start Using Unbuntu để truy cập

Sau khi hoàn tất sẽ hiện cửa sổ đăng nhập. Như vậy quá trình cài đặt đã hoàn tất

Như vậy, Long Vân đã hoàn thành hướng dẫn cài giao diện cho Ubuntu 22.04. Chúc quý khách thành công!

Hướng dẫn thiết lập NGINX làm Reverse Proxy

Yêu cầu cài đặt
– Hệ điều hành hoặc server linux tương thích centos/ubuntu/…
– Có quyền truy cập và tài khoản người dùng root hoặc sudo

I. Cài đặt NGINX

Đảm bảo NGINX đã cài đặt trên máy chủ. Hãy thực hiện theo các bước bên dưới

1. Cập nhật danh sách các gói apt repository

sudo apt update 

2. Cài đặt NGINX bằng lệnh sau

sudo apt install nginx 

Chờ quá trình cài đặt hoàn tất.

3. Kiểm tra phiên bản NGINX

nginx -v

Lệnh hiện ra thông tin phiên bản NGINX, cho biết quá trình cài đặt đã thành công.

II. Khởi động NGINX và cấu hình NGINX tự khởi chạy khi khởi động lại

Các lệnh sau đây khởi động NGINX và tự động chạy NGINX sau khi khởi động lại
1. Khởi động service NGINX bằng lệnh systemctl

sudo systemctl start nginx

2. Thiết lập cấu hình NGINX tự động khởi chạy sau khi khởi động lại, hãy chạy lệnh enable

sudo systemctl enable nginx

Lệnh thực thi tập lệnh để cho phép NGINX khởi chạy tự động.

3. Để kiểm tra trạng thái máy chủ NGINX, hãy dùng lệnh:

sudo systemctl status nginx

Thông tin hiển thị trạng thái Active: active (running) cho thấy dịch vụ đang chạy.

III. Hủy liên kết (symlolic link) cấu hình mặc định

NGINX sử dụng tập cấu hình được liên kết mặc định. Tạo reverse proxy cần tạo và liên kết thủ công. Để tránh các xung đột tiềm ẩn ngoài ý muốn, hay dùng lệnh sau:

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

Lệnh hủy liên kết tệp cấu hình mặc định.

IV. Tạo tệp cấu hình mới

Hãy cấu hình theo dưới đây để tạo tệp cấu hình mới:
1. Tạo một tệp mới trong thư mục NGINX /etc/nginx/site-available 

sudo vi /etc/nginx/sites-available/reverse-proxy

2. Thiết lập cấu hình NGINX để hoạt động như một reverse proxy.
Thêm cấu hình mẫu sau vào tệp:

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Cấu hình bao gồm server {…} xử lí các yêu cầu phù hợp với điều kiện được chỉ định gồm các dữ liệu:

  • listen 80: máy chủ nhận yêu cầu từ HTTP đến cổng 80
  • server_name localhost: tên miền của web server muốn sử dụng. Ví dụ này sử dụng localhost để kiểm tra thử nghiệm hoạt động của reverse proxy
  • location {…}: cấu hình cho đường dẫn URI được chỉ định
  • proxy_pass http://127.0.0.1:8000: Máy chủ web mà proxy NGINX yêu cầu. Ví dụ đang sử dụng IP máy chủ cục bộ trên cổng 8000. Có thể thay thế sử dụng URL máy chủ khác
  • proxy_set_header: Thiết lập tiêu đề HTTP cho yêu cầu proxy. Các tiêu đề đề cấp đến máy chủ phụ và cung cấp bổ sung thông tin về yêu cầu của client. Bao gồm Header, IP, scheme (HTTP và HTTPS).

Lưu ý thay thế cổng, server_name và URL máy chủ phụ bằng dữ liệu thực tế.
Ví dụ này chuyển tiếp tất cả các yêu cầu thực hiện đến localhost đến địa chỉ http://127.0.0.1:8000

3. Lưu tệp và thoát trình soạn thảo.

V. Liên kết và kích hoạt tệp cấu hình mới

Liên kết tệp cấu hình mới và kích hoạt nó bằng lệnh sau:

sudo ln -s /etc/nginx/sites-available/reverse-proxy /etc/nginx/sites-enabled/

Thư mục /etc/nginx/sites-enabled chứa các tệp cấu hình đang được sử dụng.
NGINX sử dụng các cấu hình được liên kết mới /etc/nginx/sites-enabled để xử lí các yêu cầu mà không sao chép các tệp cấu hình.

VI. Kiểm tra và khởi động lại NGINX

Kiểm tra cú pháp cấu hình bằng lệnh sau:

sudo nginx -t

Để áp dụng các thay đổi, hãy khởi động lại máy chủ NGINX:

sudo systemctl restart nginx

Việc khởi động lại không phát sinh lỗi cú pháp, cho biết reverse proxy NGINX đã hoạt động hãy kiểm tra

VII. Kiểm tra Reverse Proxy

Để kiểm tra Reverse Proxy, hãy tiến hành như sau:
1. Tạo một thư mục mới gồm một trang index để thử nghiệm:

mkdir web_backend && cd web_backend

Lệnh bao gồm tạo thư mục và truy cập đến thư mục mới.

2. Tạo một tệp index.html mới để làm trang chủ

vi index.html

Máy chủ phụ sẽ hiển thị trang khi client truy cập localhost

3. Thêm đoạn mã sau vào tệp index.html:

<html>
<head>
<title>NGINX backend</title>
</head>
<body>
<h1>Great!</h1>
</body>
</html>

Đây là mã tạo trang HTML cơ bản.

4. Lưu và đóng tệp.

5. Chạy máy chủ phụ trong cùng thư mục với tệp index.html bằng lệnh sau:

python3 -m http.server

Lệnh khởi động máy chủ HTTP với cổng 8000 trang index.html.

6. Chạy kiểm tra curl request tới localhost trong terminal:

curl localhost

Ngoài ra, truy cập thử từ trình duyệt web.

Trong hai trường hợp, Reverse Proxy chuyển tiếp yêu cầu của máy khách tới máy chủ phụ. Máy chủ phụ phản hồi với trang HTML, cho biết Reverse Proxy NGINX được thiết lập chính xác.

Như vậy Long Vân đã hướng dẫn thiết lập NGINX làm Reverse Proxy hoàn tất, chúc Quý khách thành công!

Hướng dẫn khôi phục mật khẩu trên Ubuntu

Bước 1: Boot vào Menu GRUB của Ubuntu
Bước 2: Nhấn phím E để chỉnh sửa

Tìm dòng có nội dung khoanh đỏ trong ảnh phía trên đổi thành “ro” -> ” rw init=/bin/bash”
Sau đó nhấn tổ hợp phím “Ctrl + X” để lưu.

Bước 3: Tiếp theo hãy chạy lệnh “mount -o remount,rw /” để gắn filesystem với quyền write

Bước 4: Tiến hành thay đổi lại mật khẩu root bằng lệnh “passswd
Bước 5: Sau khi thay đổi, hãy chạy lệnh “reboot -f ” để boot khởi động lại vào server
Đăng nhập bằng mật khẩu(password) vừa khôi phục

Như vậy, Long Vân đã hoàn thành hướng dẫn khôi phục mật khẩu trên Ubuntu. Chúc quý khách thành công!

Hướng dẫn cấu hình SSH Keys trên linux

SSH Keys hay Secure Shell Keys , là một cặp khóa mật mã được sử dụng để thiết lập kết nối an toàn giữa client và server. Trong bài viết này Long Vân sẽ hướng dẫn quý khách cấu hình SSH Keys trên linux.

Bước 1: Tạo SSH Key

Có thể sử dụng tool để tạo Key như Xshell hay Putty. Trong hướng dẫn này sử dụng Xshell để tạo Key.
Mở Xshell -> Tools -> User Key Manager

Sau đó chọn Generate 

Bấm Next cho tới User Key Infomation, phần Passphrase có thể để trống hoặc nhập mật khẩu khi sử dụng Key SSH vào server xong bấm Next
Ở đây bấm Finish để hoàn thành việc tạo Key

Ở mục User Keys chọn Properties Key vừa tạo
Bấm vào Public Key và copy nội dung của Key

Bước 2: Sao chép Public Key vào Server

SSH vào server và dán nội dung Public key của bước 1 vào file /root/.ssh/authorized_keys

Bước 3: Bật xác thực SSH Key và vô hiệu hóa xác thực bằng mật khẩu

Vào cấu hình file /etc/ssh/sshd_config và điều chỉnh lại các cấu hình theo ảnh bên dưới
– Tìm đến PubkeyAuthentication chỉnh sửa no > yes
– Thêm đường dẫn chứa SSH Keys AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

– Tìm đến PasswordAuthentication chỉnh sửa yes > no. Để tắt truy cập với mật khẩu thông thường

Restart lại service SSH và kiểm tra lại cấu hình bằng lệnh “sshd -T

Bước 4: Kiểm tra SSH tới server bằng Public Key

– Sử dụng SSH Keys đã có trên máy, nhập Passphrase đã thiết đặt để truy cập vào Server

Màn hình đăng nhập đã truy cập vào server với SSH Keys thành công

Như vậy, Long Vân đã hoàn thành hướng dẫn cấu hình SSH Keys trên server Linux. Chúc Quý khách thành công!

Hướng dẫn cấu hình Master – Slave của MySQL trên Linux

I. Giới thiệu

MySQL có một chức năng gọi là Replicate cho phép duy trì các bản sao của Database từ server Master (gốc) sang một server Slave (dự phòng) để lưu trữ các dữ liệu phục vụ cho các trường hợp bạn muốn sao lưu hoặc phòng hờ trường hợp xấu nhất nếu server gốc một ngày nào đó gặp phải vấn đề ngoài ý muốn liên quan đến dữ liệu làm việc của bạn.
Hôm nay Long Vân sẽ hướng dẫn cho các bạn cách cấu hình Master – Slave để sao lưu Database nhé.

II. Chuẩn bị

– 1 Server Linux đóng vai trò làm Master.
– 1 Server Linux đóng vai trò làm Slave.
– Cơ sở dữ liệu: MySQL 8. trở lên.

III. Cài đặt MySQL Server

1. Cài đặt MySQL

Ubuntu/Debian:

sudo apt update
sudo apt install mysql-server -y

CentOS/Redhat:

sudo yum update
sudo yum install mysql-server -y

2. Khởi động MySQL

Ubuntu/Debian:

systemctl start mysql.service
systemctl enable mysql.service

CentOS/Redhat:

systemctl start mysqld
systemctl status mysqld

IV. Cấu hình Master – Slave

Server Master

1. Truy cậo vào file cấu hình của MySQL và điều chỉnh các thông số cần thiết như sau:

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf


– bind-address: IP của server
– Master log_error: file log lỗi (mặc định)
– server-id: id của server ( bạn có thể chọn bất kỳ số nào làm giá trị nhưng số đó phải là duy nhất không được trùng với các id của server khác)
– binlog_do_db: Database mà bạn muốn Replicate
* Bạn có thể Replicate nhiều Database với chỉnh sửa như sau:
binlog_do_db = db
binlog_do_db = db_1
binlog_do_db = db_2

Sau khi điều chỉng thông số hoàn tất chúng ta sẽ restart lại MySQL để nhận cấu hình:

sudo systecmtl restart mysql

2. Tiếp theo sẽ vào MySQL tạo user và phân quyền bằng lệnh “sudo mysql“:

mysql> CREATE USER 'slave_user'@'slave_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'slave_server_ip';
mysql> FLUSH PRIVILEGES; 

*Lưu ý: thay thế các thông số của slave_user thành thành thông tin của server Slave nhé!
Tiếp theo ta sẽ truy xuất toạ độ Binary Log từ server Master

mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS; 


Đây sẽ là vị trí mà các server Slave bắt đầu sao chép database, chúng ta sẽ lưu lại thông tin của “File” và “Position”, vì sẽ cần dùng để cấu hình cho server Slave

3. Tạo Database cần sao lưu cho server Master:

mysql> CREATE DATABASE longvan_db;  
mysql> Use longvan_db; 
mysql> CREATE TABLE longvan_table ( longvan_column varchar(30) ); 
mysql> INSERT INTO longvan_table VALUES (‘longvan.net'), ('support.longvan.net');

Server Slave
Đầu tiên chúng ta sẽ vào file config của Mysql

vi /etc/mysql/mysql.conf.d/mysql.cnf


Ở đây các thông số sẽ tương tự với Master ngoại trừ server-id là đặc thù nên phải thay đổi, và ngoài ra thêm phần relay-log xác định vị trí lưu nhật ký chuyển tiếp của bản sao Database.
Restart lại MySQL để nhận cấu hình trên server Slave

sudo systemctl restart mysql

Sau đó chúng ta vào giao diện của Mysql để cấu hình cho server Slave kết nối được Master

sudo mysql
mysql> CHANGE REPLICATION SOURCE TO
mysql> SOURCE_HOST='Master_server_ip',              # ip của server Master
mysql> SOURCE_USER='slave_user',                    # user replicate tạo trên server Master
mysql> SOURCE_PASSWORD='password',                  # password user replicate
mysql> SOURCE_LOG_FILE='mysql-bin.000004’,          # thông số File lưu ở server Master
mysql> SOURCE_LOG_POS=157;                          # thông số Position đã lưu ở Master 

Sau đó chúng ta sẽ dùng lệnh START SLAVE; để bắt đầu sao lưu database

Như ta thấy vậy là server Slave đã replicate được database của server Master