Lưu trữ thẻ: #Linux

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