NHÀ CUNG CẤP DỊCH VỤ CHUYÊN NGHIỆP
PHÁT TRIỂN
Luôn đồng hành cùng bạn!
Chuyên: WEBDESIGN - HOSTING - DOMAIN - CCTV
Hotline: 0903 880 905 - 0931 435 998


Hiển thị các bài đăng có nhãn Linux Server. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Linux Server. Hiển thị tất cả bài đăng
Việc backup dữ liệu website là điều mà các webmaster thường xuyên phải làm để đảm bảo an toàn dữ liệu nếu chẳng may hệ thống bị tấn công. Nếu trước đây bạn quen sử dụng share hosting thì việc backup (sao lưu) đã có nhà cung cấp hosting lo cho rồi. Giờ chuyển sang dùng VPS thì bạn phải là người chủ động backup dữ liệu cho VPS của mình.
backup-vps-len-google-drive

Trong bài viết trước mình có hướng dẫn bạn cách cài HocVPS để chạy web trên VPS rồi, bài này mình sẽ hướng dẫn bạn cách cài đặt tự động backup VPS lên Google Drive cho HocVPS để bạn không còn phải thường xuyên backup dữ liệu thủ công bằng tay nữa. Để làm được việc này chúng ta sẽ sử dụng công cụ có tên Rclone – công cụ giúp đồng bộ hóa dữ liệu có khả năng kết nối với các dịch vụ lưu trữ đám mây.

Rclone là gì?

Như đã nói ở trên Rclone là công cụ giúp đồng bộ hóa dữ liệu với ưu điểm là nó có khả năng kết nối với các dịch vụ lưu trữ đám mây. Điều này đảm bảo cho dữ liệu được an toàn (không lo các vấn đề lỗi phần cứng), sao lưu nhanh chóng với tốc độ cao (hầu hết các dịch vụ lưu trữ hiện nay đều có server ở khắp nơi). Điều đặc biệt nhất là nó miễn phí!
Rclone hiện tại hỗ trợ kết nối tới hầu hết các cloud server phổ biến hiện nay như:
  • Amazon Drive
  • Amazon S3
  • DigitalOcean Spaces
  • Dropbox
  • Google Cloud Storage
  • Google Drive
  • Mega
  • Microsoft Azure Blob Storage
  • Microsoft OneDrive
Ngoài ra còn nhiều cloud khác được hỗ trợ bạn có thể xem thêm ở đây. Trong bài này mình sẽ hướng dẫn bạn cài đặt tự động backup VPS lên Google Drive. Vì Google Drive cho dung lượng miễn phí 15Gb, tốc độ rất nhanh. Bạn chỉ cần đăng ký Gmail là có luôn tài khoản Google Drive. Bây giờ bắt tay vào thực hiện thôi.

Cài đặt Rclone lên VPS

Trước hết chúng ta cần download Rclone về VPS sau đó di chuyển sang thư mục /usr/sbin/ để sử dụng.
– Cài đặt Rclone v1.41 trên hệ điều hành 64bit
cd /root/
wget https://downloads.rclone.org/v1.41/rclone-v1.41-linux-amd64.zip
unzip rclone-v*.zip
\cp rclone-v*-linux-amd64/rclone /usr/sbin/
rm -rf rclone-*
– Cài đặt Rclone v1.41 trên hệ điều hành 32bit
cd /root/
wget https://downloads.rclone.org/v1.41/rclone-v1.41-linux-386.zip
unzip rclone-v*.zip
\cp rclone-v*-linux-386/rclone /usr/sbin/
rm -rf rclone-*
Giờ bạn có thể sử dụng lệnh rclone để xem thêm thông tin.
Lưu ý: Nếu trên VPS của bạn đã cài đặt phiên bản cũ thì bạn chỉ cần chạy chuỗi lệnh trên để update. Tham khảo Changelog các phiên bản Rclone.

Hướng dẫn tạo kết nối VPS với Google Drive

Trước khi cài đặt tự động backup VPS lên Google Drive thì việc cần làm đó là kết nối VPS với Google Drive. Việc này bạn chỉ cần làm 1 lần và bạn làm như sau.
Đăng nhập VPS qua SSH rồi chạy lệnh:
rclone config
Nếu trên VPS của bạn chưa tạo kết nối nào thì sẽ nhận được thông báo No remotes found - make a new one
Nhập n rồi ấn Enter để tạo kết nối mới
Dòng name bạn nhập tên kết nối là remote hoặc bất cứ tên nào cũng được.
Một danh sách các cloud server hỗ trợ hiện ra. Nhập vào 11 rồi ấn Enter để chọn kết nối Google Drive.
Tiếp theo nó sẽ hỏi Client ID và Client Secret, bạn để trống rồi ấn Enter.
Đến phần Scope that rclone should use when requesting access from drive. Bạn chọn 1 – Full access all files…. Để cấp quyền truy cập toàn bộ file trên Google Drive.
Tiếp theo, mục root_folder_id và service_account_file bạn để trống và ấn Enter
Nó sẽ hỏi Use auto config? bạn nhập n rồi ấn Enter. Lúc này, Rclone sẽ hiển thị 1 đường link, bạn click vào đó để mở hoặc copy và mở trên trình duyệt.
huong-dan-cai-dat-tu-dong-backup-vps-len-google-drive-cho-hocpvs-1
Nó sẽ yêu cầu bạn đăng nhập vào tài khoản Google để cấp quyền truy cập Google Drive. Sau đó bạn click vào Cho phép.
huong-dan-cai-dat-tu-dong-backup-vps-len-google-drive-cho-hocpvs-2
Bạn sẽ nhận được 1 đoạn mã xác nhận như sau, hãy copy đoạn mã này.
huong-dan-cai-dat-tu-dong-backup-vps-len-google-drive-cho-hocpvs-3

Quay trở lại cửa sổ SSH và dán đoạn mã vào mục Enter verification code rồi ấn Enter.
Nó sẽ hỏi Configure this as a team drive? bạn hãy nhập n rồi ấn Enter.
Rclone tiếp tục yêu cầu bạn xác nhận 1 lần cuối, bạn nhập y để đồng ý sau đó nhập q để thoát.
Đối với các cloud server khác bạn có thể tham khảo cách làm ở đây.
Toàn bộ quá trình thực hiện kết nôi như sau (phần bôi đỏ là bạn cần nhập vào)

Xem toàn bộ quá trình thực hiện tạo kết nối

Như vậy là xong. Bây giờ bạn tạo 1 thư mục trên Google Drive sau đó dùng lệnh sau để kiểm tra xem nó đã kết nối với Google Drive chưa.
rclone lsd remote:
Nếu thấy kết quả tương tự như hình dưới là OK.
huong-dan-cai-dat-tu-dong-backup-vps-len-google-drive-cho-hocpvs-4

Tạo file backup toàn bộ VPS và upload lên Google Drive

Để hệ thống tự động tạo file backup VPS và upload lên Google Drive trong HocVPS script chúng ta sẽ sử dụng script tự động backup VPS của Luân Trần – tác giả của HocVPS Script.
Kịch bản của script này là:
  • Backup toàn bộ database MySQL trên VPS, mỗi database được tạo thành 1 file .gz và lưu trong thư mục mysql
  • Backup toàn bộ code trong thư mục /home/domain.com/public_html/, mỗi code web tạo thành 1 file .zip
  • Backup toàn bộ file cấu hình Nginx trong thư mục /etc/nginx/conf.d/ và lưu trong thư mục nginx
  • Tổng hợp tất cả các file backup vào 1 folder
  • Tự động upload file backup lên Google Drive vào khoảng thời gian bạn đặt.
  • Tự động xóa file backup trên VPS sau khi upload xong.
  • Thiết lập thời gian tự động xóa file backup cũ trên Google Drive.
Bây giờ chúng ta bắt đầu thực hiện như sau.
– Tạo file backup.sh ở thư mục /root/ của VPS bằng lệnh sau:
nano /root/backup.sh
– Copy và paste script bên dưới vào cửa sổ SSH (script áp dụng với HocVPS Script 2.0 trở lên)
# HocVPS Script Plugin - Backup Server and Upload to Cloud

#!/bin/bash

SERVER_NAME=BACKUP_VPS

TIMESTAMP=$(date +"%F")
BACKUP_DIR="/root/backup/$TIMESTAMP"
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
SECONDS=0

mkdir -p "$BACKUP_DIR/mysql"

echo "Starting Backup Database";
databases=`$MYSQL -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"`

for db in $databases; do
$MYSQLDUMP --force --opt $db | gzip > "$BACKUP_DIR/mysql/$db.gz"
done
echo "Finished";
echo '';

echo "Starting Backup Website";
# Loop through /home directory
for D in /home/*; do
if [ -d "${D}" ]; then #If a directory
domain=${D##*/} # Domain name
echo "- "$domain;
zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/cache/**\* #Exclude cache
fi
done
echo "Finished";
echo '';

echo "Starting Backup Nginx Configuration";
cp -r /etc/nginx/conf.d/ $BACKUP_DIR/nginx/
echo "Finished";
echo '';

size=$(du -sh $BACKUP_DIR | awk '{ print $1}')

echo "Starting Uploading Backup";
/usr/sbin/rclone move $BACKUP_DIR "remote:$SERVER_NAME/$TIMESTAMP" >> /var/log/rclone.log 2>&1
# Clean up
rm -rf $BACKUP_DIR
/usr/sbin/rclone -q --min-age 1w delete "remote:$SERVER_NAME" #Remove all backups older than 1 week
/usr/sbin/rclone -q --min-age 1w rmdirs "remote:$SERVER_NAME" #Remove all empty folders older than 1 week
/usr/sbin/rclone cleanup "remote:" #Cleanup Trash
echo "Finished";
echo '';

duration=$SECONDS
echo "Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."
– Nhấn Ctrl+O rồi ấn Enter để lưu và Ctrl+X để thoát.
Lưu ý:
  • SERVER_NAME mặc định là BACKUP_VPS, nếu muốn đổi tên thư mục trên Google Drive thì bạn sửa lại tên này.
  • Bạn có thể thay đổi thời gian xóa file backup trên Google Drive bằng cách sửa thông số 1w ở dòng --min-age 1w delete và --min-age 1w rmdirs. Hiện tại đang để là 1w – 1 tuần, bạn có thể sửa thành 2w – 2 tuần, 1d – 1 ngày,…
– Phân quyền cho file script
chmod +x /root/backup.sh
– Vậy là xong, giờ bạn có thể test bằng cách chạy lệnh:
/root/backup.sh
Sau khi chạy lệnh xong bạn đăng nhập vào Google Drive kiểm tra xem có thư mục và dữ liệu upload lên chưa hoặc dùng lệnh
rclone lsl remote:BACKUP_VPS
Nếu bạn thấy danh sách trả về là các file trong thư mục có dạng như bên dưới là bạn đã làm thành công.
  • 2018-06-12/domain.com.zip
  • 2018-06-12/nginx/domain.com.conf
  • 2018-06-12/mysql/database.gz

Tạo cronjob tự động backup VPS theo lịch

Sau khi làm xong các bước trên thì chỉ khi nào bạn chạy lệnh /root/backup.sh thì VPS mới được backup. Vậy nên để nó hoạt động tự động theo lịch thì bạn cần thiết lập cronjob như sau.
Chạy lệnh sau để chỉnh sửa crontab
EDITOR=nano crontab -e
Dán nội dung sau vào cửa sổ SSH
0 2 * * 1,6 /root/backup.sh > /dev/null 2>&1
Nhấn Ctrl+O rồi ấn Enter để lưu và Ctrl+X để thoát.
Đoạn nội dung trên có nghĩa là script sẽ chạy tự động backup VPS và upload lên Google Drive vào lúc 2h sáng ngày thứ 2 và thứ 7 đồng thời tắt chức năng gửi email thông báo.
Lời kết
Như vậy là bài này mình đã hướng dẫn bạn cách cài đặt tự động backup VPS lên Google Drive cho HocVPS. Ngoài ra, nó cũng hỗ trợ backup dữ liệu lên nhiều cloud server khác nhưng mình không tiện viết trong này, bạn có thể tự tìm hiểu thêm hoặc cần thiết thì để lại comment mình sẽ hướng dẫn nhanh cho.
Việc backup dữ liệu thường xuyên là điều vô cùng quan trọng, mình đã từng chủ quan không backup dữ liệu để rồi khi web bị tấn công mã độc mình phải ngồi khắc phục lại toàn bộ dữ liệu web sau khi bị hack rất chi là mệt. Đó là còn may mình vẫn còn dữ liệu để khôi phục, còn không may thì bao nhiêu dữ liệu sẽ bay hết.


NHÀ CUNG CẤP DỊCH VỤ CHUYÊN NGHIỆP
PHÁT TRIỂN
WEBDESIGN - HOSTING - DOMAIN

Bài viết này sẽ hướng dẫn các bạn cấu hình tối ưu Nginx và PHP-FPM, mục đích chung của việc này là giúp Nginx và PHP-FPM hoạt động hiệu quả hơn, sử dụng tài nguyên hợp lý hơn, thông qua đó tăng cường khả năng chịu tải của toàn bộ hệ thống, không lãng phí tài nguyên vô ích.
Trong bài viết này chúng tôi bỏ qua phần cài đặt và cấu hình cơ bản cho Nginx và PHP-FPM, hoặc nếu bạn chưa hiểu việc cài đặt có thể sử dụng lệnh sau đây để cài đặt toàn bộ các thành phần cần thiết.
Mặc định sau khi cài đặt thành công, các file cấu hình của Nginx sẽ nằm tại /etc/nginx và các file cấu hình PHP-FPM sẽ nằm tại /etc/php-fpm.d. Đầu tiên chúng ta sẽ cấu hình Nginx trước.
I. NGINX
Mở file /etc/nginx/nginx.conf và điều chỉnh theo các hướng dẫn sau.
Đầu tiên các bạn phải biết công thức max_clients = worker_processes * worker_connections, số lượng người truy cập tối đa Nginx có thể phục vụ bằng thông số worker_processes nhân với worker_connections. Mặc định sau khi cài đặt Nginx thì worker_processes là 1 và worker_connections là 1024.
Các bạn cần chỉnh lại worker_processes bằng với số lượng CPU core bạn được sử dụng, hoặc của VPS/Dedicated của bạn. Thường lúc đăng ký VPS sẽ có số lượng CPU Core có thể sử dụng hoặc bạn có thể xem số CPU Core thông qua lệnh sau:
Trong trường hợp này là 4, các bạn chỉnh sửa thông số worker_processes thành 4. Tuy nhiên nếu bạn có ít hơn 4 thì không nên ghi khống bởi như vậy hệ thống sẽ hoạt động không ổn định và lỗi.
Với worker_connections mặc định là 1024 và worker_processes đã được điều chỉnh thành 4 như trên thì số lượng người truy cập tối đa đã lên đến 1024 * 4 = 4096. Con số này là đủ lớn nên bạn không cần thay đổi gì thêm, trường hợp bạn chỉ có 2 CPU Core nhưng muốn nâng cao số lượng truy cập có thể phục vụ bạn có thể nâng worker_connections lên thành 2048, nhưng điều này đôi khi xảy ra lỗi trên một số VPS, nên bạn cần thêm thông số sau đây vào file nginx.conf, ngay trên worker_connections.
Các bạn cũng nên xóa thông tin phiên bản của Nginx đang sử dụng và các thông tin quan trọng của Nginx bằng việc sửa hoặc bổ sung thông số
Các bạn cũng cần thiết giới hạn kích thước body của các http request và buffer dùng xử lý http request thông qua việc thêm hai thông số sau đây vào file cấu hình
Các bạn cũng nên yêu cầu client cache lại các file tĩnh và ít bị thay đổi, điều đó giúp bạn tiết kiệm băng thông hơn vì không phải tải lại các file tĩnh đó, bạn thêm nội dung sau đây vào từng virtual host trên Nginx. Ngoài ra khi truy cập các file tĩnh cũng không nên log lại vì quá trình ghi log sẽ làm giảm tốc độ xử lý của Nginx, chúng ta bỏ luôn việc log khi truy cập các file tĩnh.
Thông thường việc liên lạc giữa Nginx và PHP-FPM sẽ sử dụng tcp socket, việc này sẽ làm chậm tốc độ đáng kể so với sử dụng unix socket, do đó bạn cần chỉnh lại thay vì sử dụng tcp socket nên sử dụng unix socket cho việc truyền tải thông tin, đặt biệt nếu sử dụng ssd thì việc này sẽ càng hiệu quả.
Nên chuyển thành như sau
Các bạn cũng không nên cho phép truy cập các file hoặc thư mục ẩn, file và thư mục ẩn trên Linux sẽ có dấu chấm (.) trước tên file, thư mục. Do đó bạn có thể cấu hình như sau để không cho phép truy cập trực tiếp vào.
II. PHP-FPM
Một file cấu hình PHP-FPM tương tự như sau
Thực sự đối với PHP-FPM các bạn chỉ cần quan tâm đến các thông số sau : pm, pm.max_children, pm.start_servers, pm.min_spare_servers và pm.max_spare_servers. Trong đó pm là chế độ quản lý process của PHP-FPM, bao gồm có static, ondemand, dynamic. Thường chúng ta sử dụng dynamic như trên. Theo đó thì ý nghĩa các thông số pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers lần lượt sẽ là số process con (child processes) tối đa được tạo (tương đương tổng số request có thể phục vụ), tổng số child processes được tạo khi khởi động php-fpm (được tính bằng công thức min_spare_servers + (max_spare_servers – min_spare_servers) / 2 ), tổng số child process nhàn rỗi tối thiểu được duy trì và cuối cùng là tổng số child process nhàn rỗi tối đa được duy trì.
Đặt biệt trong đó có tham số pm.max_requests, đây là tổng số request mà child process xử lý trước khi được tái tạo lại. Với WordPress các bạn có thể đặt con số này nhỏ, tương đương 200 đến 300, việc này rất hiệu quả khi giảm thiểu được tình trạng memory leak do các plugin trên WordPress gây ra.
Dựa vào trong tình hình thực tế của VPS, server của bạn mà điều chỉnh các con số trên cho phù hợp. Bạn cũng có thể đăng ký sử dụng dịch vụ tại một nhà cung cấp lớn, uy tín và chất lượng như Công Nghệ VPS để được tư vấn và cài đặt giúp.
Ví dụ file config PHP-FPM thường được Công Nghệ VPS tư vấn sử dụng cho các source code như Xenforo và vBB cho forum vừa và nhỏ như sau


NHÀ CUNG CẤP DỊCH VỤ CHUYÊN NGHIỆP
PHÁT TRIỂN
WEBDESIGN - HOSTING - DOMAIN

Translate

Quan tâm nhiều

Theo thời gian

Biểu mẫu liên hệ

Tên

Email *

Thông báo *