Cách backup Website từ VPS CentOS lên Google Drive

Hôm trước đã hướng dẫn cách làm sao để tự động backup Source code và DataBase rồi. Nhưng backup xong vẫn nằm trên VPS đó, trong trường hợp VPS có chuyện thì rất nguy hiểm, mà get về thủ công thì rất lâu với những ai quản trị nhiều site.

Xem bài viết: Tự động backup Database và Source code bằng Crontab

Hôm nay sẽ giải quyết vấn đề là làm thế nào để quẵng tất cả các file backup đó lên Google drive.

I. Tạo google project

1.Vào đây: https://console.developers.google.com/project

Tạo 1 Project mới.

click "Create Project" ->  Project name "Nhập tên tùy ý ví dụ: saoluu"

2.Vào đây: https://console.developers.google.com/apis/library

Chọn project vừa tạo -> Overview -> và Enabled: Drive API, Admin SDK, Google Apps Marketplace SDK

3.Tiếp tục chọn tab Credentials.

Add Credentials -> Service account -> Check P12 -> Create

4.Xong thì nhận được 1 file có tên dạng saoluu-5e923c74024b.p12 lưu vào 1 nơi cẩn thận sau này dùng.

Và cài mail: xxxxxxxxxxxx[email protected]

II. Tạo 1 thư mục trên Google Drive và chia sẻ với mail trên.

Bước này đơn giản là tạo 1 thư mục mới trên Google Drive

Chú ý:

  • Chia sẻ với mail đã nhận ở trên: xxxxxxxxxxxx[email protected] và phát quyền được phép chỉnh sửa.
  • Link của thư mục có dạng: https://drive.google.com/drive/u/0/folders/0B18aFuiEcupjNVoxSVloY2mwMJU nhớ đoạn đánh dấu màu đỏ, xíu nữa dùng.

III. Thao tác trên VPS.

1.Cài đặt một số Pack cần thiết, mình dùng CentMinMod thấy 2 cái này là đủ

yum -y install python-pip
pip install --upgrade google-api-python-client

2.Tải file này về: configs

Giải nén ra được thư mục: configs -> copy file saoluu-5e923c74024b.p12 đã làm ở bước I.4 bỏ vô và edit file config.json với nội dung như sau:

{
 "service_account":"xxxxxxxxxxxx-4rl923m4nktdrnks20gudca0j1ldm7mg@developer.gserviceaccount.com",
 "private_key12_path":"saoluu-5e923c74024b.p12",
 "backup_folder_id":"0B18aFuiEcupjNVoxSVloY2mwMJU",
 "description" : "Backup VPS to Google Drive",
 "max_file_in_folder": 100
}

Giải thích:

  • “service_account”: là cái email đã nhận ở bước 1.4
  • “private_key12_path”: đường dẫn cái file đã nhận ở bước 1.4 (mới copy vô)
  • “backup_folder_id”: là cái đuôi phía sau của url thư mục Google drive đã nhận ở bước II
  • “max_file_in_folder”: là số file tối đa của thư mục trên google, ở đây là 100 trong trường hợp nhiều hơn sẽ xóa file cũ nhất.

3. Upload thư mục configs lên /root/ của VPS

Set quyền cho file backup.py trong /root/configs là 755, tức là có quyền thực thi.

Chạy thử:

python /root/configs/backup.py /root/configs/config.json /var/backups/source.zip

Giải thích:

  • “/root/configs/backup.py”: nơi chứa file thực thi python
  • “/root/configs/config.json”: nơi chứa file cấu hình
  • “/var/backups/source.zip”: file muốn đưa lên Google drive

Nếu quá trình chạy hoàn tất và không báo lỗi, kiểm tra trên google drive có file source.zip thì xin chúc mừng.

Trong trường hợp bị lỗi thì thêm mấy anh này vô.

yum update
yum groupinstall "Additional Development" "Development tools" 
yum install libffi-devel
pip install pycrypto
easy_install pyopenssl

Nếu bị lỗi: No crypto library available thì chạy dòng này:

sudo pip2 install --upgrade --force pip
pip install PyOpenSSL

 

IV: Nâng cao (Hẹn giờ tự động backup, đẩy lên Google drive từ A – Z)

Bài tự động backup thì đã hướng dẫn ở đây: https://tangduongtrieu.com/tu-backup-database-va-source-code-bang-crontab-trong-centminmod/

Nhưng giờ có chỉnh sửa xíu:

1. Tạo file backup.sh trong /root/ và chmod quyền thực thi 755 với nội dung như sau:

#!/bin/bash
{
 printf "subject:Backup for VPS\nfrom:mail_nguoi_gui\n\n"
 echo "Deleting file Old Backups..."
 rm -rf /var/backups
 mkdir /var/backups
 chmod -R 777 /var/backups
 mkdir /var/backups/$(date +"%Y-%m-%d")/
 mkdir /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/
 
 echo "Starting backup database for websitecuaban.com..."
 mysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u username_cuaban -h 127.0.0.1 -p'matkhau' database_cuaban | gzip -9 > /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/websitecuaban_$(date +"%Y-%m-%d").sql.gz
 echo "Starting backup files for websitecuaban.com..."
 zip -r /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/websitecuaban_$(date +"%Y-%m-%d").zip /home/nginx/domains/websitecuaban.com/public
 
 echo "Upload To Google Drive"
 python /root/configs/backup.py /root/configs/config.json /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/websitecuaban_$(date +"%Y-%m-%d").sql.gz
 python /root/configs/backup.py /root/configs/config.json /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/websitecuaban_$(date +"%Y-%m-%d").zip
 } | /usr/sbin/sendmail "[email protected]"

Thay phần nội dung màu đỏ cho phù hợp với Website của bạn.

Sau khi chạy nếu kiểm tra oke hết thì chuyển đến bước tiếp theo là tự động chạy backup vào 1 ngày định trước.

2. Crontab cho backup.sh

Gõ lệnh

crontab -e

Nhập

@weekly /root/backup.sh

Lưu và thoát

Ctrl + X --> Y --> Enter

Để chắc chắn crontag luôn chạy thì gõ thêm 3 lệnh này nữa.

service crond start
service crond restart
chkconfig crond on

Done!

Tham khảo và chỉnh sửa từ: https://dethoima.info/tu-dong-backup-du-lieu-len-google-drive/

Gốc của Source thì nằm ở đây: https://github.com/bachvtuan/Backup-To-Google-Drive

Hướng dẫn cách xóa website khỏi VPS dùng CentMinMod

Xóa các file:

Khi add domain thông qua./centmin.sh nó sẽ tạo một số file sau đây:

vHost của tên miền: /usr/local/nginx/conf/conf.d/websitecuaban.com.conf
SSL nếu bạn chọn Yes trong lúc add: /usr/local/nginx/conf/conf.d/websitecuaban.com.ssl.conf
Thư mục chính của domain: /home/nginx/domains/websitecuaban.com/

Giờ chỉ cần xóa nó là xong(nhớ backup lại trước khi xóa nhé):

rm -rf /usr/local/nginx/conf/conf.d/websitecuaban.com.conf
rm -rf /usr/local/nginx/conf/conf.d/websitecuaban.com.ssl.conf
rm -rf /home/nginx/domains/websitecuaban.com/

Trong  Centmin Mod 1.2.3-eva2000.08 mới nhất thì làm thế này:

rm -rf /usr/local/nginx/conf/conf.d/websitecuaban.com.conf
rm -rf /usr/local/nginx/conf/conf.d/websitecuaban.com.ssl.conf
rm -rf /usr/local/nginx/conf/ssl/websitecuaban.com/websitecuaban.com.crt
rm -rf /usr/local/nginx/conf/ssl/websitecuaban.com/websitecuaban.com.key
rm -rf /usr/local/nginx/conf/ssl/websitecuaban.com/websitecuaban.com.csr
rm -rf /home/nginx/domains/websitecuaban.com

Xóa Databse:

Xem bài này: https://tangduongtrieu.com/dong-lenh-xem-va-xoa-user-database-trong-mysql/

xong rồi thì khởi động lại nginx

ngxrestart

1001 thủ thuật sử dụng Notepad ++

I. Xóa dòng + điều kiện

1. Xóa các dòng có chứa kí tự (delete line if contains)

Ví dụ cần xóa tất cả các dòng có chứa từ “help

Bước 1. Menu Search -> Mark ... hoặc Ctr + F chọn Tab là Mark
Bước 2. Nhập từ khóa vào ô Find what là: help
Bước 3. Check vào Bookmark line và Wrap aroud -> click vào Mark All (nó sẽ đánh dấu tất cả các dòng có chứa từ help)
Bước 4: Menu -> Bookmark -> Remove Bookmarked Lines (xóa tất cả các dòng đã book mark)

2. Xóa các dòng không chứa kí tự (delete line if not contains)

Các bước 1,2,3 giống như trên.
Bước 4: Menu -> Bookmark -> Remove Unmarked Lines (xóa tất cả các dòng không book mark)

3. Xóa các dòng trắng (delete blank lines)

Menu Edit -> Line Operations -> Remove Empty Lines (Containing Black Character)

4. Xóa dòng ít hơn n kí tự (Removing lines with less than n characters)

Ví dụ xóa dòng có ít hơn 10 kí tự

^.{0,10}(\r\n?|\n|$)

5. Xóa dòng nhiều hơn n kí tự (Removing lines with than more n characters)

Ví dụ xóa dòng có nhiều hơn 10 kí tự

.{10}.+(\r?\n|\n|$)

6. Xóa các dòng trùng nhau (Remove duplicate lines)

Xem tại đây: https://tangduongtrieu.com/loai-bo-du-lieu-trung-nhau-bang-notepad/

II. Thêm kí tự vào dòng

1. Thêm kí tự vào đầu dòng (Insert characters to begin line)

Ví dụ thêm vào từ help vào đầu, ở tất cả các dòng.

Find What: ^ -> Replace with: help

2. Thêm kí tự vào cuối dòng (Insert characters to end line)

Ví dụ thêm vào từ help vào cuối, ở tất cả các dòng.

Find What: $ -> Replace with: help

3. Thêm kí tự vào giữa 2 kí tự trong dòng

Ví dụ thêm khoảng trăng vào giữa tất cả kí tự trong dòng abcd -> a b c d

Find What: (.) -> Replace with: $1 

Chú ý: có khoảng trắng ở sau kí tự $1

III. Xóa kí tự trong dòng

1.Xóa dấu kí tự cuối cùng trong dòng.

ví dụ xóa kí tự / ở cuối dòng

Find What: /$ -> Replace with: để trống

2.Xóa ký tự ở đầu dòng.

Ví dụ xóa https:// ở đầu dòng

Find What: ^https:// -> Replace with: để trống

3. Xóa tất cả ký tự ở sau 1 một ký tự nào đó

Ví dụ xóa tất cả ký tự ở sau từ help trong dòng

 Find What: help.* -> Replace để trống

4. Xóa tất các ký tự ở trước 1 ký tự nào đó trong dòng

Ví dụ xóa tất cả ký tự ở trước từ help trong dòng

 Find What: ^.+help -> Replace để trống

5. Xóa tất cả số (numbers) trong dòng

 Find What: [0-9]+ -> Replace để trống

6. Xóa dấu chấm đầu tiên trong dòng

 Find What: ^.?(.*) -> Replace: \1

7. Xóa kí tự ở đầu và ở cuối dòng.

Ví dụ: 20000sat 284sat 1440mins -> 284sat như vậy là xóa 20000sat ở đầu dòng và xóa 1440mins ở cuối dòng chỉ lấy 284sat ở giữa.

Find What: ^.{9}(.*).{9}$ -> Replace: $1

Giải thích: ^.{9}(.*).{9}$ regex xóa 9 kí tự ở đầu và 9 kí tự ở cuối, giữ lại đoạn giữa.

IV. Tìm ký tự trong dòng

1.Tìm dòng có 3 số liên tiếp sau

Find what: /d/d/d

2. Tìm dòng là số

^\d+

3. Tìm dòng có 2 số liên tiếp nhau và phía sau là dấu 2 chấm “:”

^\d\d:$

V. Câu hỏi trong bài

1.Câu hỏi của bạn Anh

Text Gốc

Tên: A
Họ : B
Năm Sinh : 1990
Địa Chỉ : Quảng Phú
Thành Phố : Quảng Trạch
Tỉnh : Quảng Bình
SĐT : 01234567899
Tên: A
Họ : B
Năm Sinh : 1990
Địa Chỉ : Quảng Phú
Thành Phố : Quảng Trạch
Tỉnh : Quảng Bình
SĐT : 01234567899
Tên: A
Họ : B
Năm Sinh : 1990
Địa Chỉ : Quảng Phú
Thành Phố : Quảng Trạch
Tỉnh : Quảng Bình
SĐT : 01234567899
Tên: A
Họ : B
Năm Sinh : 1990
Địa Chỉ : Quảng Phú
Thành Phố : Quảng Trạch
Tỉnh : Quảng Bình
SĐT : 01234567899

Thành

A | B | 1990 | Quảng Phú | Quảng Trạch | Quảng Bình | 01234567899
A | B | 1990 | Quảng Phú | Quảng Trạch | Quảng Bình | 01234567899
A | B | 1990 | Quảng Phú | Quảng Trạch | Quảng Bình | 01234567899
A | B | 1990 | Quảng Phú | Quảng Trạch | Quảng Bình | 01234567899

Bước 1:

Find what:

Tên: 

Thành

\n

Mục đích xóa cái Tên : thành xuống dòng

Bước 2:

Find what:

^(.*): 

thành (chú ý có 2 khoảng trắng phía trước và phía sau của dấu |)

 | 

Giải thích: Tìm string trước dấu 2 chấm “:” và đổi thành dấu “|

Bước 3:

Find what:

\r\n

Thành (Empty)

 

Giải thích: Xóa cái xuống dòng.

Xem kết quả:

còn nữa …

Tự backup Database và Source code bằng Crontab trong CentMinMod

Tạo file Backup

Tạo thư mục backups trong /var và set full quyền 777

mkdir /var/backups/

Tạo 1 file backup.sh trong /root với nội dung như sau và set có quyền thực thi 755:

#!/bin/bash
{
 printf "subject:Backup for VPS\nfrom:[email protected]\n\n"
 mkdir /var/backups/$(date +"%Y-%m-%d")/
 mkdir /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/
 echo "Starting backup database for websitecuaban.com..."
 mysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u username -h 127.0.0.1 -p'matkhau' database | gzip -9 > /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/db_$(date +"%Y-%m-%d").sql.gz
 echo "Starting backup files for websitecuaban.com..."
 zip -r /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/file_$(date +"%Y-%m-%d").zip /var/www/websitecuaban.com/public_html/ -q -x /var/www/websitecuaban.com/public_html/wp-content/cache/**\*
} | /usr/sbin/sendmail "[email protected]"

Thay đổi các phần màu xanh ứng với website của bạn.

Bây giờ bạn có thể chạy để kiểm tra file backup có hoạt động hay không bằng lệnh:

/root/backup.sh

Tạo crontab để tự động chạy file backup.sh

Cấu trúc của Crontab

 .---------------- minute (0 - 59) 
 | .------------- hour (0 - 23)
 | | .---------- day of month (1 - 31)
 | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 
 | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 
 | | | | |
 * * * * * <command to be executed>

Ví dụ để tự động chạy backup vào 2h30 sáng bạn gõ

crontab -e

nhập

30 2 * * * /root/backup.sh

Lưu lại bằng:

Ctrl + X --> Y --> Enter

Chạy crontab

service crond start

Khởi động lại

service crond restart

Chạy khi hệ thống khởi động

chkconfig crond on

Xong!

4 cách loại bỏ chức năng bình luận của WordPress

I: Áp dụng cho các bài viết về sau

Wp-admin -> Setting -> Discussion -> Uncheck (Allow people to post comments on new articles)

II: Áp dụng cho từng bài viết

Wp-admin -> Posts -> All Post -> Di chuột vào bài viết cần sửa -> Quick edit -> Uncheck (Allow Comments)

hoặc

Wp-admin -> Posts -> All Post -> Edit -> Screen Options -> Check (Discussion) -> Kéo xuống dưới cùng -> Uncheck (allow comment)

III: Áp dụng cho tất cả các bài viết.

Cách 1:

Wp-admin -> Posts -> All Post -> Check vào title để chọn tất cả bài post -> Edit -> Apply --> Do not allow -> Update

tat-comment_2

tat-comment_1

tat-comment_3

Cách 2. Edit file single.php

Edit file

/wp-content/themes/themecuaban/single.php

Tìm và xóa dòng

<?php comments_template(); ?>

Cách 3: Ẩn khung comment với css Edit style.css

hide-comment

/wp-content/themes/themecuaban/style.css

Tìm class comment và thêm dòng

display:none;

IV: Sử dụng Plugin Disable Comments

 

Cách xóa các hình ảnh không sử dụng trong WordPress

Khi upload ảnh bằng wordpress mặc định sẽ tạo là nhiều file ảnh với những kích thước khác nhau, tùy thuộc vào setting, plugin và theme. Lâu ngay nhưng file ảnh này sẽ làm cho website rất cồng kềnh. Đến lúc này chúng ta thường tìm cách đơn giản là xóa chúng đi.

Sử dụng Plugin Force Regenerate Thumbnails

Rất nhiều người sử dụng plugin Regenerating Thumbnails nhưng có 1 thực tế rằng, nó chỉ tạo ra thumbnail với những kích thước mới nhưng không xóa các file không dùng đến.

Giải pháp thay thế là sử dụng plugin Force Regenerate Thumbnails chức năng cũng giống như Regenerating Thumbnails nhưng khi tạo ra file mới thì nó xóa các định dạng cũ. Rất tuyệt

Force_Regenerate_Thumbnails

Dùng lệnh trong VPS

Di chuyển đến thư mục upload

cd /home/nginx/domains/websitecuaban.com/public/wp-content/uploads/

Tìm các file có đuôi .phg có tên chứa 320 hoặc 300 hoặc 200

find / \( -name *320*.png -o -name *300*.png -o -name *140*.png \)

Tìm và xóa đi

find / \( -name *320*.png -o -name *300*.png -o -name *140*.png \) -exec rm -rf {} \;

Hoặc di chuyển vào thư mục nào đó

find / \( -name *320*.png -o -name *300*.png -o -name *140*.png \) -exec mv {} /home/nginx/domains/websitecuaban.com/public/images \;

Chú ý:

  • Chú ý backup trước khi sử dụng plugin
  • Bài viết có thể bị lỗi ảnh, nếu lúc trước bạn sử dụng không phải file ảnh gốc (image-full).
  • Hãy thận trọng khi sử dụng lệnh rmmv

Hướng dẫn cách chạy WordPress Multisite trên CentMinMod

WordPress Multisite là chức năng có sẵn của WP giúp chúng ta có thể chạy nhiều website, trên duy nhất 1 Source và Database rất thuận tiện để quản lý.

Trước giờ thấy chỉ có hướng dẫn cài đặt WordPress Multisite trên Apache chứ không thấy hướng dẫn WordPress Multisite trên Nginx mà cụ thể là CentMinMod.

Cách làm thì cũng giống như trên các server bình thường như có cấu hình lại xíu.

Bước I. DNS Wildcard cho tên miền.

Add record là A – Hostname là * or @ – Value là IP của VPS

Bước II. Cài đặt CentMinMod

Xem hướng dẫn: Cách cài đặt Centminmod.

Đăng nhập MYSQL băng root.

mysql -u root -p

Tạo database.

CREATE DATABASE wordpress;

Tạo user và grant permissions đến database:

CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress_user'@'localhost';

Nhớ đổi mấy cái thông tin màu đỏ thành của riêng bạn

FLUSH PRIVILEGES;
exit

Các thông tin cần nhớ

Database Name: wordpress
Database User: wordpress_user
Database Password: password

Bước III. Cài đặt WordPress Multisite

1.Download và cài đặt WP

wget https://wordpress.org/latest.tar.gz
tar -xf latest.tar.gz
mv wordpress/* /home/nginx/domains/websitecuaban.com/public/

2.Chmod để sau này cài đặt và update plugin.

chown -R www-data:www-data /home/nginx/domains/websitecuaban.com/public/

3.Truy cập vào website

https://websitecuaban.com/

4.Tiến hành cài đặt như thông thường

wordpress_multisite

5.Edit file wp-config.php thêm đoạn code sau để kích hoạt tính năng Multisite

/* Multisite settings */
define( 'WP_ALLOW_MULTISITE', true );

Nhớ thêm trước dòng

/* That's all, stop editing! Happy blogging. */

6.Đăng nhập vào wp-admin

Tools > Network Setup chọn Sub-domains, Tùy chỉnh Network Title và click Install.

7.Thêm đoạn code sau vào wp-config.php

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'examplewp.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

Vì trong nginx không sử dụng .htaccess nên bạn có thể bỏ qua bước add code vô .htaccess.

8. Đăng xuất wp-admin và đăng nhập lại

Từ bên trái của thanh admin toolbar click My Sites > Network Admin > Sites

site

 

9.Click Add New để thêm site mới.

Ví dụ mình thêm cái site là: site1.com, site2.com, siteN.com

khi thêm vào các site mới sẽ có dạng:

site1.websitecuaban.com
site2.websitecuaban.com
siteN.websitecuaban.com

10. Cài đặt plugin Domain Mapping -> cài đặt như bình thường.

Nhiệm vụ của plugin này là chuyển subdomain có dạng:

site1.websitecuaban.com -> site1.com
site2.websitecuaban.com -> site2.com
siteN.websitecuaban.com -> siteN.com

11. Sau khi cài đặt xong copy file sunrise.php từ trong plugin đến thư mục wp-content.

cp /home/nginx/domains/websitecuaban.com/public/wp-content/plugins/wordpress-mu-domain-mapping/sunrise.php /home/nginx/domains/websitecuaban.com/public/wp-content/

12. Sửa file wp-config.php và thêm dòng code sau trước /* That’s all, stop editing! Happy blogging. */.

define('SUNRISE', 'on');

lưu lại và làm mới trình duyệt

13. Settings > Domain Mapping thay đổi một số thông tin sau:

Uncheck Remote Login
Check Permanent Redirect
Uncheck Redirect administration pages to site's original domain

14. vào Settings > Domains

Nhập ID của các site đã add lúc trước.

Nhập Domain

Check vào Primary

Save

15. Tuy nhiên để cho WordPress Multisite hoạt động tốt với Plugin Domain Mapping bạn cần chỉnh sửa file sau:

nano /usr/local/nginx/conf/conf.d/wesitecuaban.com.conf

16.Tìm

server_name websitecuaban.com www.websitecuaban.com

17.Thêm vào sau:

server_name websitecuaban.com www.websitecuaban.com *.websitecuaban.com site1.com site2.com siteN.com;

18.Lưu lại và restart lại nginx

service nginx restart

Quản trị Network

https://websitecuaban.com/wp-admin/network/

Quản trị Wp-admin từng site

https://websitecuaban.com/wp-admin/
https://site1.com/wp-admin/
https://site2.com/wp-admin/
https://siteN.com/wp-admin/

done!

Hướng dẫn cách sửa lỗi “Error Establishing A Database Connection”

Như cái thông báo lỗi Error Establishing A Database Connection: Lỗi thiết lập kết nối cơ sỡ dữ liệu.

Error-Establishing-a-Database-Connection

Một số nguyên nhân chính gây lỗi Error Establishing A Database Connection như:

  • Thiết lập sai user, database, localhost trong wp-config.php dẫn đến tính trạng không kết nối được.
  • Database bị lỗi
  • MySQL không chạy.

1. Xem file wp-config.php nội dung thông thường sẽ như thế này:

define('DB_NAME', 'tenDatabase');
define('DB_USER', 'tenUser');
define('DB_PASSWORD', 'matkhau');
define('DB_HOST', 'localhost');

Xem Database và User bằng cách sau ?

#Đăng nhập MySQL
mysql -u root -p
#Xem danh sách database
SHOW DATABASES;
#Xem danh sách user
SELECT User FROM mysql.user;
#Nếu không chắc chắn về mật khẩu bạn có thể thay đổi bằng lệnh
mysql> SET PASSWORD FOR
 -> 'jeffrey'@'localhost' = PASSWORD('mypass');

2. Database bị lỗi

a. Trong trường hợp chỉ bị lỗi ở trang Wp-admin thì làm như sau:

Thêm dòng này ở wp-config.php

define('WP_ALLOW_REPAIR', true);

Vào đường link : websitecuaban.com/wp-admin/maint/repair.php

để tiến hành sửa và tối ưu database cho phần wp-admin.

db_repair

b. Trong trường hợp bị lỗi toàn website.

  1. Login vào phpmyadmin
  2. Phía bên trái chọn vào Database của website bạn đang cần sửa hoặc tối ưu ( nếu có nhiều quá thì nhìn trong file wp-config.php nhé)
  3. Nếu biêt Table nào bị lỗi thì chỉ cần chọn table đó thôi, còn không thì cứ chọn tất cả rồi click vào -> Repair table như hình.

phpmyadmin-repair-table

hoặc có thể làm theo cách sau nếu VPS của bạn không có phpmyadmin

Login to your shell
Enter ‘mysql -u username -p database_name‘ to access databases
Enter ‘show databases;’ to view all databases
Enter ‘use database_name;‘ to engage the database
Enter ‘show tables;‘ to show all tables within the database
Enter ‘check table wordpress_table_name;‘ to verify this is the corrupted table
Fix it with ‘repair table wordpress_table_name;

3. Trong trường hợp MySQL không chạy

Tạm dừng MySQL

service mysql stop

Chạy MySQL

service mysql start

Khởi động lại MySQL

service mysql restart

Kiểm tra lỗi tất cả database trên VPS

mysqlcheck -c -u root -p --all-databases

Xem thử table nào bị lỗi thì repair là xong !

Sẽ có 1 bài chuyên sâu về Check và Repair MySQL của VPS bằng câu lệnh, sẽ cập nhật sớm.

Hướng dẫn cài đặt CentMinMod từ cơ bản đến nâng cao

I.Cài đặt CentMinMod

Yêu cầu cấu hình RAM tối thiểu 256 MB cho CentOS 6 và 1 GB cho CentOS 7.

Cài đặt CentOS cho VPS login và làm theo các bước sau:

Bước 1:

Vào https://github.com/centminmod/centminmod/branches để xem gói cài đặt mới nhất. Hiện tại khi đang viết bài này thì là 123.08stable

branchname=123.08stable

Bước 2:

yum -y install wget nano bc unzip
branchname=123.08stable
wget -O /usr/local/src/${branchname}.zip https://github.com/centminmod/centminmod/archive/${branchname}.zip
cd /usr/local/src
unzip ${branchname}.zip
mv centminmod-${branchname} centminmod
cd centminmod

Bước 3:

./centmin.sh

Rồi chọn 1.
Hoặc có thể gõ trực tiếp bằng dòng lệnh

./centmin.sh install

Quá trình cài đặt CentMinMod có thể mất từ 20-30 phút tùy cấu hình.

Sau khi quá trình cài đặt hoàn tất sẽ xuất hiện các thông tin quan trọng nhớ copy và lưu lại ở đâu đó.

Chú ý phần PassWord Root của MySQL để xíu nữa thêm hoặc add Database.

II. Chuyển Website về VPS CentMinMod vừa tạo

Bước 1:

Chuyển DNS domain về IP của VPS ở trên.

Sau khi thay đổi xong bạn có thể kiêm tra bằng cách ping thử domain xem có trỏ về IP mới chưa.

Trong Windows thì vào:

RUN -> cmd -> gõ "ping websitecuaban.com"

Trong trường hợp vẫn chưa cập nhật thì bạn có thể edit file hosts để sử dụng tạm thời trong thời gian chờ DNS cập nhật.

C:\Windows\System32\drivers\etc

chỉnh sửa file hosts bằng cách thêm nội dung:

111.111.111.111     websitecuaban.com

trong đó 111.111.111.111 là địa chỉ IP của VPS.

Bước 2:

Thêm tên miền vào máy chủ CentMinMod

cd /usr/local/src/centminmod
./centmin.sh

Chọn số 2 -> Enter -> gõ websitecuaban.com (không có www.) -> gõ n (không sử dụng SSL) -> gõ user cho FTP -> gõ y (tự động tạo pass).

Chú ý lưu thông tin đăng nhập FTP sau này cần dùng.

Gõ 24 để thoát ra.

Bước 3: Tạo Database, User 

mysql -u root -p

nhập pass Root của MySQL lúc tạo, nếu quên thì dùng lệnh này

cat ~/.my.cnf

Login vô được rồi tiếp tục

create database dbcuaban;
create user 'usercuaban'@'localhost' identified by 'passcuaban';
grant all on dbcuaban.* to usercuaban@localhost;
FLUSH PRIVILEGES;
exit

Bước 4: Retore website site của bạn.

Gõ:

cd /home/nginx/domains/websitecuaban.com/public

và upload Source code và Database lên trên đó. (Có thể sử dụng FileZilla với thông tin FTP lúc nãy hoặc wget tùy bạn)

Giải nén Source code

tar -xvf *.tar.gz

hoặc

unzip *.zip

Giải nén database nếu có

gunzip *.sql.gz

Import database

mysql -u usercuaban -p'passcuaban' dbcuaban < *.sql

Chỉnh sửa file wp-config.php với database, user và pass đã tạo.

Bước 4: Tối ưu

Cấp quyền cho WordPress có thể cài dặt và update Plugin

chown -R nginx:nginx /home/nginx/websitecuaban.com/

Cho phép nginx  permalink

edit file: /usr/local/nginx/conf/conf.d

Tìm đoạn:

location / {

# block common exploits, sql injections etc
#include /usr/local/nginx/conf/block.conf;

# Enables directory listings when index file not found
#autoindex on;

# Shows file listing times as local time
#autoindex_localtime on;

# Enable for vBulletin usage WITHOUT vbSEO installed
#try_files / /index.php;

}

Thay bằng đoạn:

location / {
try_files $uri $uri/ /index.php?$args;
}

Sửa lỗi 404 permalink

Edit file: /usr/local/nginx/conf/staticfiles.conf

Tìm và xóa đoạn:

location ~* \.(html|html|txt)$ {
……
}

Cuối cùng là khởi động lại Nginx

service nginx restart

III. Một số câu lệnh khởi động trong Nginx

1. Nginx
Trên centos 6:

Restart:

service nginx restart

Stop :

service nginx stop

Start:

service nginx start

Trên centos 7:

Restart:

systemctl restart nginx.service

Stop:

systemctl stop nginx.service

Start:

systemctl start nginx.service

2. PHP-FPM

Restart:

service php-fpm restart

Stop :

service php-fpm stop

Start:

service php-fpm start

Trên centos 7:

Restart:

systemctl restart php-fpm.service

Stop:

systemctl stop php-fpm.service

Start:

systemctl start php-fpm.service

3. MariaDB (MySQL)

Restart:

service mysql restart

Stop :

service mysql stop

Start:

service mysql start

Trên centos 7:

Restart:

systemctl restart mariadb.service

Stop:

systemctl stop mariadb.service

Start:

systemctl start mariadb.service

Done!

 

Phân tích Log của VPS từ cơ bản đến nâng cao

Chú ý: Demo được thực hiện trên CentMinMod những VPS khác thì thay được dẫn File log nhé

Tham khảo thêm: Các dòng lệnh bỏ túi trong Linux

Lệnh tail để liệt kê các dòng cuối cùng trong file, ở đây ví dụ là 10 bạn có thể thay đổi thành 100, 1000… tùy theo muốn xem nhiều hay ít.

log

I. Đơn giản

Check log chung của Server

tail -10 /usr/local/nginx/logs/access.log
tail -10 /usr/local/nginx/logs/error.log

Check log từng Domain:

tail -10 /home/nginx/domains/domainname.com/log/access.log
tail -10 /home/nginx/domains/domainname.com/log/error.log

Kiểm tra trong /var/log

ls -lhrt /var/log

Check PHP-FPM

tail -10 /var/log/php-fpm/www-error.log
/var/log/php-fpm/www-php.error.log

Kiểm tra log trong cơ sơ dữ liệu MySQL / MariaDB

tail -10 /var/log/mysqld.log

Kiểm tra log trong CSF firewall

tail -10 /var/log/lfd.log

Kiểm tra log trong Mail

tail -10 /var/log/maillog

For Cron job

tail -10 /var/log/cron

II. Nâng cao

Lấy tất cả các log trong 1 ngày

Ví dụ mình lấy các log trong ngày 5/12/2015

grep -w '05/Dec/2015' /home/nginx/domains/domain.com/log/access.log

Lấy log trong nhiều ngày bất kỳ

Lấy tất cả các log trong ngày 5/12/2015 ngày 4/12/2015

grep -w '05/Dec/2015\|04/Dec/2015' /home/nginx/domains/domain.com/log/access.log

Lấy tất cả IP trong file log

grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' /home/nginx/domains/domain.com/log/access.log

Lấy log trong ngày được và chuyển hướng google

Chỉ lấy các dòng có chuổi là “05/Dec/2015”  “google” (Được hiểu là Log của ngày 5/12/2015 và được chuyển hướng từ google)

grep -w '05/Dec/2015.*google' /home/nginx/domains/domain.com/log/access.log

Xuất ra log trong ngày và điều kiện “hoặc”

Chỉ lấy các dòng có chuổi là “05/Dec/2015” và “google”  HOẶC có chuổi là “04/Dec/2015” và “google”

grep -w '05/Dec/2015.*google\|04/Dec/2015.*google' /home/nginx/domains/domain.com/log/access.log

Xuất ra tất cả IP với điều kiện

Xuất tất cả các IP được chuyển hướng từ Google được ghi nhận từ ngày 4 và 5/12/2015

grep -w '05/Dec/2015.*google\|04/Dec/2015.*google' /home/nginx/domains/domain.com/log/access.log | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'

Xuất số kết nối của IP đến server trong ngày

Đếm xem số lần kết nối của một IP được chuyển hướng từ Google trong ngày 5/12/2015

grep -w '05/Dec/2015.*google' /home/nginx/domains/domain.com/log/access.log | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | soft | uniq -cd | sort -nr

Xuất ra tất cả các IP có >10 kết nối trong ngày

Kiểm tra tất cả các IP có > 10 kết nối trong ngày 5/12/2015

grep -w '05/Dec/2015' /home/nginx/domains/domain.com/log/access.log | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort | uniq -cd | sort -nr | grep -v '^ *[1-9] '

Xem toàn bộ chuyển hướng từ google trong 1 tháng

Xuất ra màn hình toàn bộ log được chuyển hướng từ google tháng 12/2015 nhưng không chứa bot.html

grep -w 'Dec/2015.*google.com' /home/nginx/domains/domain.com/log/access.log | grep -v 'bot.html'

Xem link có nhiều lượt truy cập nhất trong tháng

Link có nhiều lượt truy cập nhất từ google trong tháng 12/2015, không tính bot

grep -w 'Dec/2015.*google.com' /home/nginx/domains/domain.com/log/access.log | grep -v 'bot.html' | grep -oP '(?<=GET ).*/ ' | sort | uniq -cd | sort -nr | grep -v '^ *1 '