Thứ tư, 28/02/2018 | 00:00 GMT+7

Cách backup trang web WordPress vào bộ nhớ đối tượng

DigitalOcean Spaces có thể cung cấp giải pháp lưu trữ đối tượng cho dữ liệu trang web WordPress. Dữ liệu này thường đa dạng, bao gồm tài sản phương tiện và file database , làm cho nó trở thành thành phần tốt cho việc lưu trữ đối tượng. Vì các giải pháp như Spaces có thể lưu trữ một lượng lớn dữ liệu phi cấu trúc nên chúng có thể chứa các nội dung tĩnh trên trang web . Lưu trữ riêng các nội dung tĩnh có thể tối ưu hóa hiệu suất trang web bằng cách giải phóng không gian và tài nguyên trên server của bạn. Nếu trang web có nội dung động - tài nguyên có tỷ lệ yêu cầu cao hoặc file database cần sửa đổi thường xuyên - bạn có thể xem xét ghép nối giải pháp lưu trữ khối với DigitalOcean Space để lưu trữ dữ liệu một cách tối ưu. Để tìm hiểu thêm về lưu trữ đối tượng và khối, hãy xemhướng dẫn của ta về Lưu trữ đối tượng và Dịch vụ lưu trữ khối .

Trong hướng dẫn này, ta sẽ sử dụng Spaces để backup dữ liệu WordPress. Vì API DigitalOcean Spaces có thể tương tác với API AWS S3, ta sẽ có thể sử dụng các plugin tương thích với S3 để quản lý các bản backup của bạn , cũng như S3cmd , một công cụ khách để làm việc với các object stores S3 và S3-comptabile. Ta sẽ xem xét một số phương pháp khác nhau để tạo bản backup : sử dụng plugin WordPress, tạo bản backup thủ công bằng S3cmd và tự động backup với S3cmd và một tập lệnh được tạo cho mục đích đó.

Yêu cầu

Hướng dẫn này giả định bạn có version WordPress trên server cũng như DigitalOcean . Nếu không, bạn có thể cài đặt như sau:

Với những yêu cầu này, ta có thể bắt đầu backup một trang WordPress vào Spaces.

Sửa đổi quyền của WordPress

Trong suốt hướng dẫn này, ta sẽ làm việc với folder wp-content/uploads trong dự án WordPress của ta , vì vậy điều quan trọng là folder này tồn tại và có quyền chính xác. Bạn có thể tạo nó bằng mkdir , sử dụng cờ -p để tạo folder nếu nó không tồn tại và tránh gặp lỗi nếu có:

  • sudo mkdir -p /var/www/html/wp-content/uploads

Đến đây bạn có thể đặt quyền trên folder . Đầu tiên, hãy đặt quyền sở hữu của nó cho user của bạn ( ta sẽ sử dụng sammy ở đây, nhưng hãy đảm bảo sử dụng user sudo không phải root của bạn) và quyền sở hữu group đối với www-data group:

  • sudo chown -R sammy:www-data /var/www/html/wp-content/uploads

Tiếp theo, cài đặt các quyền sẽ cấp cho web server quyền ghi vào folder này:

  • sudo chmod -R g+w /var/www/html/wp-content/uploads

Như vậy, ta sẽ có thể sử dụng các plugin để tạo bản backup cho các wp-content/uploads folder wp-content/uploads và tương tác với các wp-content/uploads của ta từ giao diện WordPress.

Sử dụng các plugin để tạo bản backup

Có nhiều plugin tương thích với S3 mà bạn có thể sử dụng để backup trang WordPress của bạn vào Không gian của bạn. Một yếu tố cần xem xét khi bạn đánh giá plugin là liệu bạn có muốn backup các file database của bạn hay không, vì một số tài nguyên này không cung cấp khả năng đó. Một yếu tố khác cần lưu ý là liệu plugin có lấy tài nguyên từ các plugin khác hay không. Ví dụ: nếu bạn đang sử dụng trình quản lý tài liệu, bạn có thể cần xem xét liệu plugin backup của bạn có nắm bắt các file và tài nguyên được tạo bởi trình quản lý tài liệu của bạn trong folder wp-content/uploads .

Cài đặt plugin với WP-CLI

Có thể làm việc với WP-CLI để quản lý các plugin WordPress của bạn từ dòng lệnh. Ta sẽ cài đặt nó trong phần này và sử dụng nó trong phần tiếp theo để trình bày cách làm việc với các plugin để backup dữ liệu WordPress vào Spaces.

Để cài đặt WP-CLI, ta sẽ làm theo các bước được đề xuất của dự án. Chạy lệnh sau để tải file binary xuống folder tmp của bạn:

  • cd /tmp
  • curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Để làm cho file này có thể thực thi và có thể sử dụng được từ dòng lệnh, hãy nhập như sau:

  • chmod +x /tmp/wp-cli.phar

Khi ta đã thực thi file , ta có thể đổi tên nó và di chuyển nó đến một vị trí trong PATH của ta :

  • sudo mv /tmp/wp-cli.phar /usr/local/bin/wp

Nếu ta muốn kiểm tra xem cài đặt của ta đã thành công chưa, ta có thể chạy như sau:

  • wp --info

Điều này sẽ cung cấp cho ta thông tin chung về version ta đang sử dụng và đường dẫn của nó.

Bây giờ ta có thể sử dụng WP-CLI để cài đặt bất kỳ plugin nào ta muốn sử dụng và quản lý các việc khác liên quan đến trang WordPress của ta .

Cài đặt và cấu hình UpdraftPlus Backup

Nếu bạn lo lắng về việc backup các file database cùng với các tài sản phương tiện khác, thì bạn có thể cần sử dụng một plugin cung cấp tùy chọn backup database . UpdraftPlus Backup cung cấp version miễn phí, tương thích với S3 cho phép backup database và phương tiện, cùng với lập lịch backup .

Để cài đặt UpdraftPlus, ta có thể chuyển đến folder plugin WordPress của bạn :

  • cd /var/www/html/wp-content/plugins

Từ đây, ta có thể cài đặt updraftplus bằng lệnh wp :

  • wp plugin install updraftplus

Để kích hoạt plugin, ta có thể chạy:

  • wp plugin activate updraftplus

Từ đây, ta có thể chuyển đến tab plugin ở phía bên trái của console quản trị WordPress của ta :

Tab Plugin WordPress

Bằng cách chọn Plugin đã cài đặt , ta sẽ đến một trang liệt kê các plugin đã cài đặt của ta . Ta sẽ thấy UpdraftPlus - Backup / Khôi phục trong danh sách các tùy chọn có sẵn:

UpdraftPlus đã kích hoạt

Để cấu hình cài đặt cho các bản backup của bạn, hãy chuyển đến tab Cài đặt trong console quản trị của bạn và chọn Bản backup UpdraftPlus từ danh sách các tùy chọn có sẵn. Sẽ có một màn hình đích giống như sau:

Menu Rút tiền

Ta sẽ giới thiệu cách thực hiện backup trang web cơ bản với plugin này. Trong tab Cài đặt ở đầu trang, bạn sẽ tìm thấy menu cho phép bạn lên lịch backup :

Lên lịch trình đơn

Nếu bạn muốn kiểm tra xem plugin có hoạt động hay không, bạn có thể để bộ này thành Thủ công . Ta sẽ giữ nguyên cài đặt này ngay bây giờ để kiểm tra xem plugin có hoạt động chính xác hay không.

Bên dưới menu này, bạn sẽ thấy các tùy chọn lưu trữ từ xa khác nhau. Chọn S3-Tương thích (Chung) :

S3-Tùy chọn tương thích

Khi chọn tùy chọn này, bạn sẽ thấy một menu yêu cầu thông tin DigitalOcean Space của bạn:

Cài đặt S3

Dựa trên URL của Không gian của bạn, bạn có thể xác định tên group và điểm cuối của nó. Ví dụ: nếu URL của Không gian của bạn là https:// example-name .nyc3.digitaloceanspaces.com , thì example-name sẽ là group của bạn và nyc3.digitaloceanspaces.com sẽ là điểm cuối của bạn. Vị trí S3 sẽ là tên group của bạn và điểm cuối S3 sẽ là điểm cuối của bạn.

Dưới đây, bạn sẽ tìm thấy các tùy chọn cho các file để bao gồm và loại trừ trong bản backup của bạn :

Bao gồm các tùy chọn loại trừ file

Khi bạn đã điền vào các cài đặt này để phản ánh những gì bạn muốn backup , bạn có thể chuyển trở lại tab Trạng thái Hiện tại . Khi bạn chọn Backup ngay từ các node có sẵn ở đầu màn hình, bạn sẽ thấy menu sau:

Menu  Database

Tại đây, bạn có thể chọn có muốn backup database của bạn hay không.

Khi bạn đã chọn tùy chọn Backup Now ở cuối trình đơn này, các file backup của bạn sẽ nằm trong group của bạn. Bạn có thể chuyển đến trang Spaces của bạn trong console DigitalOcean để kiểm tra xem chúng có ở đó không. Khi bạn đã kiểm tra chức năng của plugin, bạn có thể sửa đổi cài đặt lịch backup cho phù hợp với nhu cầu của bạn .

Backup WordPress với S3cmd

Là một công cụ dòng lệnh để quản lý dữ liệu trong các giải pháp lưu trữ đối tượng, S3cmd cung cấp nhiều tùy chọn để backup dữ liệu WordPress của bạn vào Spaces. Nó được dùng trong các lệnh cô lập và trong các tập lệnh tự động hóa quá trình backup .

Nếu bạn chưa cài đặt s3cmd trên server của bạn , bạn có thể cài đặt nó theo phần “Cài đặt S3cmd” của hướng dẫn này và cấu hình nó với thông tin Spaces của bạn theo phần “ Cấu hình S3cmd” .

Đến đây bạn đã cài đặt và cấu hình s3cmd với thông tin Spaces của bạn . Bạn có thể xác minh cấu hình s3cmd bằng lệnh :

  • s3cmd --dump-config

Bạn sẽ thấy kết quả như sau:

Output
[default] access_key = Your_Spaces_Access_Key access_token = add_encoding_exts = add_headers = bucket_location = US ca_certs_file = cache_file = check_ssl_certificate = True check_ssl_hostname = True cloudfront_host = cloudfront.amazonaws.com default_mime_type = binary/octet-stream delay_updates = False delete_after = False delete_after_fetch = False delete_removed = False dry_run = False enable_multipart = True encrypt = False ...

Khi ta đã kiểm tra thông tin cấu hình s3cmd của s3cmd đảm bảo rằng thông tin đó trùng với thông tin đăng nhập Spaces của ta , ta sẽ sẵn sàng sử dụng s3cmd để backup các file vào Không gian của ta . Ta sẽ thực hiện việc này theo cách thủ công trước tiên, trước khi chuyển sang tạo một tập lệnh sẽ tự động hóa công việc này.

Tạo bản backup thủ công của folder wp-content/uploads

Để tạo bản backup của folder wp-content/uploads ta , ta sẽ sử dụng lệnh có tên s3cmd sync . Điều này sẽ cho phép ta chỉ chuyển những file chưa tồn tại trong Không gian của ta . Mặc dù điều này có thể không quan trọng đối với việc chuyển một lần, nhưng nó có thể nhanh chóng trở nên quan trọng khi bạn chuyển nhiều dữ liệu hơn vào Không gian của bạn . Ta sẽ sử dụng sammys-bucket cho group của bạn và sammys-backup để chỉ định một folder backup trên Không gian của ta , nhưng bạn nên thay thế chúng bằng tên của group và folder backup của bạn (nếu có). Để đảm bảo các file của ta sẽ đến đích dự kiến, ta sẽ sử dụng tùy chọn --dry-run với s3cmd , như sau:

  • s3cmd sync --dry-run /var/www/html/wp-content/uploads s3://sammys-bucket/sammys-backups/

Nếu kết quả của lệnh cho biết dữ liệu sẽ đến đích dự kiến, thì bạn có thể tiếp tục và chạy lệnh mà không có tùy chọn --dry-run :

  • s3cmd sync /var/www/html/wp-content/uploads s3://sammys-bucket/sammys-backups/

Tạo bản backup thủ công của database MySQL

Bây giờ ta có thể tạo một bản backup thủ công database MySQL của bạn . Điều này sẽ xảy ra trong 4 phần. Đầu tiên, ta có thể tạo một folder trong folder chính để chứa các file database của ta :

  • mkdir ~/mysqldmp

Tiếp theo, ta sẽ tạo một file để chứa thông tin user và password database của ta . Điều này sẽ giúp ta tránh chuyển thông tin đó đến dòng lệnh trong quá trình tạo file backup của ta . Các tùy chọn dành riêng cho user cho MySQL thường được lưu trữ trong ~/.my.cnf , vì vậy ta sẽ tạo file đó trong folder chính của bạn . Kiểu:

  • nano ~/.my.cnf

Bên trong file , ta sẽ chỉ định tên user và password cho client MySQL của ta :

~ / .my.cnf
 [client] user=mysql_user password=mysql_password  

Lưu file này bằng lệnh CTRL+X theo sau là Y

Để hạn chế quyền đọc và ghi cho user của ta , ta có thể nhập như sau:

  • chmod 600 .my.cnf

Bây giờ ta sẽ có thể chạy lệnh mysqldump để tạo một bản sao của các file database của bạn mà không cần chuyển thông tin password vào dòng lệnh. Khi ta chạy mysqldump , nó sẽ tìm kiếm file .my.cnf của ta như một phần của quy trình để đọc các tùy chọn mặc định. Để nén kết quả từ database của ta , ta cũng có thể sử dụng gzip , như sau:

  • mysqldump mysqldatabase_name | gzip > ~/mysqldmp/mysql_dump.sql.gz

Cuối cùng, ta có thể sử dụng s3cmd để gửi file nén đến Không gian của ta :

  • s3cmd sync mysqldmp/mysql_dump.sql.gz s3://sammys-bucket/sammys-backups/

Đến đây bạn sẽ thấy file database nén trong Không gian của bạn .

Tự động hóa backup WordPress với Cron

Tự động hóa các bản backup của bạn sẽ đảm bảo dữ liệu WordPress của bạn vẫn có thể truy cập và khôi phục được. Mặc dù có thể tạo bản backup theo cách thủ công, đây là một quá trình tốn thời gian và có thể được tự động hóa hữu ích với trình lập lịch công việc cron . Để tìm hiểu thêm về cách sử dụng cron để lập lịch tác vụ, hãy xem hướng dẫn của ta về Cách lập lịch tác vụ thường xuyên với Cron và Anacron trên VPS .

Để tạo file cho tập lệnh backup của ta , ta có thể sử dụng lệnh sau:

  • nano ~/wp-sync.sh

Trong file trống, trước tiên ta sẽ viết như sau để cho biết tập lệnh này sẽ được chạy bởi shell Bash:

wp-sync.sh
 #!/bin/bash  

Tiếp theo, ta sẽ khai báo các biến sẽ chỉ định thông tin về những file và database nào ta sẽ backup . Các biến DATABASEUPLOADS_DIR của ta sẽ chỉ định thông tin về database và folder mà ta sẽ backup . Ta sẽ khai báo các biến này dưới dạng mảng, cho phép ta chỉ định nhiều hơn một giá trị:

wp-sync.sh
... DATABASE=("mysqldatabase_name") # To add more than one database, separate values with spaces: ("database1" "database2") UPLOADS_DIR=("/var/www/html/wp-content/uploads") # To add more than one directory, separate values with spaces: ("folder1" "folder2")  BACKUP_DIR=/home/sammy/mysqldmp 

Biến DATABASE chỉ định tên của database WordPress hoặc các database mà mysqldump sẽ backup . UPLOADS_DIR trỏ đến folder hoặc các folder mà ta đang backup . BACKUP_DIR cho script biết nơi mysqldump sẽ ghi file backup .

Tiếp theo, ta sẽ đặt thông tin s3cmd , bao gồm cả thông tin group Spaces của ta . Thông tin này sẽ phản ánh thông tin thùng s3 từ file cấu hình s3cmd của ta . Khi ta chỉ định biến S3_CMD của S3_CMD , ta sẽ bao gồm một đường dẫn đến binary s3cmd cho cron . Ta cũng sẽ bao gồm một biến DATE , cho phép ta tạo dấu thời gian cho các file backup của bạn :

wp-sync.sh
...  DATE=$(date +%y%m%d-%H_%M_%S)   S3_CMD="/usr/local/bin/s3cmd" S3_BUCKET=s3://sammys-bucket/sammys-backups/$DATE/ 

Ở đây, ta đã làm cho biến DATE rất chi tiết, để nắm bắt năm ( %y ), tháng ( %m ), ngày ( %d ), giờ ( %H ), phút ( %M ) và giây ( %S ) của bản backup của ta . Tùy thuộc vào tần suất của lịch trình backup , bạn có thể sửa đổi điều này theo cách cho phép bạn theo dõi các bản backup của bạn một cách hữu ích. Biến S3_CMD của ta sẽ trỏ đến file thực thi s3cmd sẽ cho phép ta chạy các lệnh của bạn .

Tiếp theo, ta sẽ bao gồm một tập hợp các lệnh sẽ tạo folder mysqldmp của ta , trong trường hợp nó chưa tồn tại và xóa các file nào khỏi folder đó trong quá trình cập nhật:

wp-sync.sh
...  mkdir -p $BACKUP_DIR rm -rf "${BACKUP_DIR:?}/*"  

Cuối cùng, ta sẽ tạo vòng lặp for để chạy s3cmd sync cho các file database của ta . Ta sẽ lại sử dụng mysqldump để tạo file database nén, nhưng ta sẽ thêm vào nó tùy chọn --defaults-extra-file , tùy chọn này cho mysqldump đọc .my.cnf ngoài các file tùy chọn tiêu chuẩn. Ta cũng sẽ lặp lại qua mảng database của bạn , thực hiện cùng một group hành động trên mỗi database :

wp-sync.sh
...  for DB in "${DATABASE[@]}" do mysqldump --defaults-extra-file=/home/sammy/.my.cnf "$DB" | gzip > "$BACKUP_DIR/mysql_dump.sql.gz" $S3_CMD sync "$BACKUP_DIR/mysql_dump.sql.gz" "$S3_BUCKET" done  

Các lệnh s3cmd sync mysqldumps3cmd sync thực hiện công việc tương tự như chúng đã làm trong phần trước. Tuy nhiên, vì ta đã thêm dấu thời gian của biến DATE vào group của bạn , các file của ta sẽ được tạo trong Không gian của ta theo cách cho phép ta dễ dàng theo dõi khi chúng được tạo.

Tiếp theo, ta sẽ tạo một vòng lặp cho folder của bạn . , ta sẽ lặp lại qua mảng UPLOADS_DIR để thực hiện các hành động giống nhau trên mỗi folder :

wp-sync.sh
...  for DIR in "${UPLOADS_DIR[@]}" do $S3_CMD sync "$DIR" "$S3_BUCKET" done  

, lệnh s3cmd sync giống với lệnh ta đã sử dụng để backup thủ công folder này. Sự khác biệt là dấu thời gian được gắn vào vật liệu này trong Không gian của ta .

Tập lệnh đầy đủ sẽ trông như thế này:

wp-sync.sh
#!/bin/bash  DATABASE=("mysqldatabase_name") # To add more than one database, separate values with spaces: ("database1" "database2") UPLOADS_DIR=("/var/www/html/wp-content/uploads") # To add more than one directory, separate values with spaces: ("folder1" "folder2")  BACKUP_DIR=/home/sammy/mysqldmp  DATE=$(date +%y%m%d-%H_%M_%S)  S3_CMD="/usr/local/bin/s3cmd" S3_BUCKET=s3://sammys-bucket/sammys-backups/$DATE/  mkdir -p $BACKUP_DIR rm -rf "${BACKUP_DIR:?}/*"  for DB in "${DATABASE[@]}" do mysqldump --defaults-extra-file=/home/sammy/.my.cnf "$DB" | gzip > "$BACKUP_DIR/mysql_dump.sql.gz" $S3_CMD sync "$BACKUP_DIR/mysql_dump.sql.gz" "$S3_BUCKET" done  for DIR in "${UPLOADS_DIR[@]}" do $S3_CMD sync "$DIR" "$S3_BUCKET" done  

Bây giờ ta có thể thực thi tập lệnh wp-sync.sh của wp-sync.sh :

  • chmod +x ~/wp-sync.sh

Để kiểm tra nó, ta có thể chạy:

  • sudo ~/wp-sync.sh

Điều hướng đến Không gian của bạn và đảm bảo các file của bạn được sao chép như dự định. Khi bạn đã kiểm tra điều này, bạn có thể chỉnh sửa file crontab để chạy tập lệnh ở một khoảng thời gian mong muốn.

Mở bằng file crontab bằng lệnh :

  • crontab -e

Nếu đây là lần đầu tiên bạn chỉnh sửa file này, bạn cần chọn một editor :

crontab
no crontab for root - using an empty one Select an editor.  To change later, run 'select-editor'.   1. /bin/ed   2. /bin/nano        <---- easiest   3. /usr/bin/vim.basic   4. /usr/bin/vim.tiny Choose 1-4 [2]:  ...  

Bạn có thể chọn 2 cho nano hoặc nhập số tương ứng với editor mà bạn chọn.

Ở cuối file , ta sẽ thêm một dòng để chỉ định tần suất tập lệnh của ta sẽ chạy. Để kiểm tra chức năng của tập lệnh, ta có thể đặt khoảng thời gian thành hai phút như sau:

crontab
...  */2 * * * * /home/sammy/wp-sync.sh 

Sau hai phút, bạn sẽ thấy một kho file được đóng dấu thời gian trong Không gian của bạn . Đến đây bạn có thể sửa đổi file crontab để chỉ định khoảng thời gian bạn muốn sử dụng cho các bản backup của bạn .

Kết luận

Ta đã đề cập đến một số cách bạn có thể backup dữ liệu WordPress của bạn vào dịch vụ lưu trữ đối tượng Spaces của DigitalOcean.

Để tìm hiểu thêm về cách làm việc với s3cmd và Spaces, hãy xem hướng dẫn của ta về cách cấu hình s3cmd 2x để quản lý DigitalOcean Spaces và hướng dẫn của ta về quản lý DigitalOcean Spaces với s3cmd . Bạn cũng có thể xem hướng dẫn của ta về Cách Tự động hóa Backup với DigitalOcean Cách Backup Kho lưu trữ Git của Bạn vào DigitalOcean để biết thêm ví dụ về các tập lệnh tự động hóa và các tùy chọn backup . Cuối cùng, để biết thêm thông tin về cách tối ưu hóa cách bạn sử dụng Spaces, hãy xem Các phương pháp hay nhất về hiệu suất trên DigitalOcean Spaces .


Tags:

Các tin liên quan