Giới hạn CPU Load tránh Overload trên Hostgator

Hostgator có quy định các host có mức CPU Load cao hơn 2% sẽ tự động bị suppend. Việc giới hạn serrver load trước tình trạng có quá nhiều người truy cập vào website hay tình trạng bị DDOS là rất cần thiết để tránh suppend.
Chú ý đoạn code chỉ chạy trên hosting linux
Đặt đoạn code sau dưới <? của index.php hoặc file config.php của bạn.

$reguptime = trim(exec(“uptime”));
if ($reguptime) {
if (preg_match(“/, *(\d) (users?), .*: (.*), (.*), (.*)/”, $reguptime, $uptime)) {
$loadnow = $uptime[3];
}
}
if($loadnow > 75)
{
echo “Đang quá tải”;
exit();
}

Thay 75 = con số mà bạn cho là hợp lý

75 là CPU chạy quá 75% thì trang website tự động
echo “Đang quá tải”;

Kết quả khi cpu load quá 75% sẽ chỉ trả về “Đang quá tải” trên trình duyệt.

VN:F [1.9.22_1171]
Rating: 0.0/7 (0 votes cast)

Tự động tối ưu hóa hình ảnh JPEG, PNG trên Centos 6.x

Trước đây mình thường tối ưu hóa hình ảnh bằng các công cụ trên máy tính trước khi upload lên, nhưng có vẻ hơi mất thời gian và công sức. Vì thế mình đã cố gắng tìm các công cụ để làm công việc này một cách tự động trên server, nhằm tiết kiệm một chút thời gian dành cho việc khác (quay tay chẳng hạn ).

Hiện nay có khá nhiều công cụ để tối ưu hóa hình ảnh trên CentOS, về chức năng và độ nén của chúng không có quá nhiều khác biệt. Nên trong bài viết này mình chỉ giới thiệu với các bạn 2 công cụ được nhiều người sử dụng nhất, đó là:

  • JpegOptim dùng để tối ưu hóa các hình ảnh JPEG (.jpg, .jpeg, .jpe .jif, .jfif, .jfi).
  • OptiPNG dùng để tối ưu hóa ảnh PNG.

1. Cài đặt

Vì JpegOptim và OptiPNG không có sẵn trong repo mặc định của CentOS, nên trước tiên bạn cần phải cài đặt thêm 2 repo: EPEL và RPMForge. Trong bài Cài đặt nginx, PHP 5.3, MySQL (LEMP) trên CentOS 6.x mình đã nói về 2 repo này rồi nên xin phép copy luôn từ bài đó:

Dùng lệnh

wget

để tải về, và cài đặt bằng lệnh

rpm -ivh

:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -ivh epel-release-6-8.noarch.rpm rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

Sau khi cài xong repo, bây giờ bạn mới có thể cài jpegoptimoptipng:

yum install jpegoptim optipng

2. Cách sử dụng

Bây giờ chúng ta hãy cùng tìm hiểu về cách sử dụng của 2 công cụ tối ưu hóa hình ảnh này.

Tối ưu hóa JPEG bằng JpegOptim

Đây là lệnh cơ bản của JpegOptim, nó chỉ có tác dụng trên thư mục đang thực thi lệnh này mà thôi:

jpegoptim *.jpg --max=80 --strip-all -p

Trong đó

--max

là chất lượng hình ảnh (từ

1-100

) xuất ra,

--strip-all

là xóa bỏ các thông tin kèm theo như địa điểm chụp, tên camera, khẩu độ, tiêu cự của lens…

-p

là giữ thời gian sửa đổi cuối (modification time) giống như ảnh gốc. Xem thêm cách dùng bằng lệnh

<em>jpegoptim</em> <em>-h</em>

.

Lệnh sau sẽ tìm tất cả những file .jpg có trong thư mục được chỉ định (bao gồm cả thư mục con) và thực hiện tối ưu lần lượt cho đến hết:

find /thu/muc/anh/ -iname *.jpg -exec jpegoptim --max=80 --strip-all -p {} \;

Thử nghiệm thực tế: ảnh gốc xuất ra từ Photoshop với chất lượng = 100, mình thử nghiệm với 3 mức sau để các bạn tham khảo (mình khuyên chọn mức 80 là OK nhất):

  • --max=50

    : hình ảnh trông rất tệ, dung lượng giảm khoảng 80%.

  • --max=80

    : hình ảnh trông khá ổn, dung lượng giảm khoảng 70%.

  • --max=90

    : hình ảnh đẹp không khác ảnh gốc là mấy, dung lượng giảm khoảng 60%.

jpg results tại Việt Nam Tutor

Xem hình demo tại đây (hình lớn):

Tối ưu hóa PNG bằng OptiPNG

Tương tự, lệnh cơ bản của OptiPNG:

optipng *.png -o7 -preserve

Trong đó

-o7

là mức độ nén được chọn (từ

-o1

đến

-o7

),

-preserve

là giữ thời gian sửa đổi (modification time) giống như ảnh gốc.

Lệnh sau sẽ tìm tất cả những file .png có trong thư mục được chỉ định (bao gồm cả thư mục con) và thực hiện tối ưu lần lượt cho đến hết:

find /thu/muc/anh/ -iname *.png -exec optipng -o7 -preserve {} \;

Đối với ảnh PNG thì mình luôn chọn mức độ nén cao nhất đó là

-o7

, bởi vì do đặc tính của ảnh PNG nên chất lượng ảnh sau nén gần như không thay đổi. Cũng vì lý do này nên ảnh PNG không thể nén mạnh như ảnhJPEG, và thời gian nén thì lâu hơn nhiều.

Ngoài ra OptiPNG cũng có thể tối ưu những hình ảnh không thuộc dạng PNG, và xuất ra file .png.

3. Tự động hóa bằng Cron job

Cron job (hay crontab) là một dịch vụ hỗ trợ chạy những lệnh trên CentOS một cách tự động tại một thời điểm đã chọn, ví dụ như 5 phút 1 lần, mỗi giờ… Vì thế đưa những lệnh trên vào cron job sẽ giúp việc tối ưu hóa hình ảnh của bạn trở nên đơn giản hơn bao giờ hết, gần như bạn không cần quan tâm đến nó nữa. Dùng lệnh sau để sửa crontab:

crontab -e

Copy các lệnh sau và dán vào:

@weekly find /thu/muc/anh/ -mtime -7 -iname *.jpg -exec jpegoptim --max=80 --strip-all -p {} \; > /dev/null
@weekly find /thu/muc/anh/ -mtime -7 -iname *.png -exec optipng -o7 -preserve {} \; > /dev/null

Ấn phím ESC, và gõ vào

:wq

rồi ấn phím Enter để thoát khỏi trình sửa cron job.

Cron job trên sẽ tự động chạy jpegoptim, optipng một lần/tuần vào ngày Chủ nhật

@weekly

, và chỉ tối ưu những hình ảnh mới upload trong 7 ngày gần nhất

-mtime -7

. Mình đưa vào tùy chọn này để tránh trường hợp tối ưu lại những hình ảnh đã được tối ưu trước đó rồi, nó không cần thiết và cũng làm mất đi một lượng tài nguyên (CPU, RAM) của server.

From: Sáu Ngón

VN:F [1.9.22_1171]
Rating: 0.0/7 (0 votes cast)

Hướng dẫn đồng bộ dữ liệu bằng Rsync trên Centos

Mô hình:

Server chính: 192.168.1.50
Server phụ: 192.168.1.51

Yêu cầu đặt ra
:
Đồng bộ hóa dữ liệu một cách tự động thư mục /var/www/html/abc.com/images từ server chính sang server phụ

Các bước thực hiện như sau:

1. Cài đặt rsync
: Thực hiện trên cả server chính lẫn server phụ

yum install rsync

2. Tạo tài khoản thực hiện rsync: Thực hiện trên server chính bằng quyền root. Ví dụ ở đây mình tạo tài khoản tên là syntest

useradd -d /home/syntest -m -s /bin/bash syntest

Lệnh trên sẽ tạo tài khoản syntest với thư mục gốc là /home/syntest và login ở chế độ /bin/bash. Sau đó, ta tiến hành đặt mật khẩu cho tài khoản syntest bằng lệnh:

passwd syntest

3. Thử rsync: Thực hiện trên server phụ bằng quyền root

rsync -avz -e ssh [email protected]:/var/www/html/abc.com/images /var/www/html/abc.com/

Lệnh trên yêu cầu bạn nhập mật khẩu của tài khoản syntest. Sau khi thực hiện thành công, bạn vào thư mục /var/www/html/abc.com thuộc server phụ thì sẽ thấy thư mục images đã được copy sang.

4. Tạo key xác thực để không cần nhập mật khẩu khi thực hiện rsync: Thực hiện trên server phụ bằng quyền root

mkdir /root/rsync
ssh-keygen -t dsa -b 1024 -f /root/rsync/mirror-rsync-key

Bạn sẽ thấy các kết quả như sau. Lưu ý khi yêu cầu nhập passphrase, bạn không cần điền gì cả chỉ cần nhấn Enter

Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): [press enter here]
Enter same passphrase again: [press enter here]
Your identification has been saved in /root/cron/mirror-rsync-key.
Your public key has been saved in /root/cron/mirror-rsync-key.pub.
The key fingerprint is:
68:95:35:44:91:f1:45:a4:af:3f:69:2a:ea:c5:4e:d7 [email protected]

Tiếp theo ta chép public key sang server chính

scp /root/rsync/mirror-rsync-key.pub [email protected]:/home/syntest/


5. Cấu hình để dịch vụ SSH chấp nhận kiểu chứng thực bằng key
: Thực hiện trên server chính bằng quyền root

vi /etc/ssh/sshd_config

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

6. Cấu hình server chính: Thực hiện trên server chính bằng quyền syntest

mkdir ~/.ssh
chmod 700 ~/.ssh
mv ~/mirror-rsync-key.pub ~/.ssh/
cd ~/.ssh
touch authorized_keys
chmod 600 authorized_keys
cat mirror-rsync-key.pub >> authorized_keys

Các lệnh trên dùng để chèn nội dung của mirror-rsync-key.pub vào tập tin /home/syntest/.ssh/authorized_keys. Nội dung của tập tin authorized_keys sẽ tương tự như bên dưới:

ssh-dss AAAAB3NzaC1kc3MAAA[…]lSUom [email protected]
mirror

7. Thử nghiệm rsync bằng key: Thực hiện trên server phụ bằng quyền root

rsync -avz –delete -e “ssh -i /root/rsync/mirror-rsync-key” [email protected]:/var/www/html/abc.com/images /var/www/html/abc.com

Nếu thành công thì tiến trình đồng bộ dữ liệu sẽ được thực thi mà không yêu cần bạn nhập mật khẩu

8. Lập lịch để chạy đồng bộ tự động: Thực hiện trên server phụ bằng quyền root

crontab -e

Và nhập vào nội dung như sau:

*/5 * * * * /usr/bin/rsync -avz –delete -e “ssh -i /root/rsync/mirror-rsync-key” [email protected]:/var/www/html/abc.com/images /var/www/html/abc.com/

Done

VN:F [1.9.22_1171]
Rating: 0.0/7 (0 votes cast)

Hướng dẫn chi tiết cách cài giao diện WordPress

Chào mừng các bạn trở lại với Việt Nam Tutor. Chúng ta đã cùng nhau đi được 2 bài trong serial WordPress căn bản. Các bạn cũng đã biết cách cài đặt WordPress, các cách cài Plugin cho WordPress. Hôm nay chúng ta sẽ tiếp tục tìm hiểu cách cài Theme cho WordPress như thế nào nhé.
huong dan cai theme wordpress tại Việt Nam Tutor
Đọc tiếp “Hướng dẫn chi tiết cách cài giao diện WordPress” »

VN:F [1.9.22_1171]
Rating: 0.0/7 (0 votes cast)

Hướng dẫn cài Plugins WordPress

Ở bài trước, chúng ta đã tìm hiểu cách cài đặt wordpress trên host sử dụng cpanel. Mình cũng đã giới thiệu rằng wordpress có thể làm gần như bất cứ một dạng website nào nhờ vào thư viện các plugin rất đồ sộ được đóng góp bởi cộng đồng người sử dụng wordpress. Vậy cài plugin wordpress như thế nào?  Hôm nay mình xin hướng dẫn cách cài plugin wordpress.

huong dan cai plugin wordpress tại Việt Nam Tutor

Đọc tiếp “Hướng dẫn cài Plugins WordPress” »

VN:F [1.9.22_1171]
Rating: 7.0/7 (1 vote cast)

Hướng dẫn chi tiết cách cài đặt WordPress

WordPress là một mã nguồn miễn phí dễ dàng sử dụng với thư viện đồ sộ lên tới 1730 WordPress Themes, 24081 WordPress Plugins (dữ liệu này tính đến thời điểm bài viết được đăng); quá đủ để tạo ra một website theo ý của bạn. Để có một blog hiện nay không khó khi bạn dễ dàng tạo một tài khoản trên blogger, wordpress.com… và bắt đầu viết blog cho mình. Tuy nhiên việc tùy biến và cài đặt giao diện, plugins của các dịch vụ miễn phí này vô cùng hạn chế. Bạn không thể cài các Framework Themes mạnh mẽ như Thesis, Genesis và nhiều Framework khác cũng như cài thêm các Plugins không có trong thư viện ( thường là các plugins trả phí rất đáng “đồng tiền bát gạo” ).

huong dan cai dat blog chuyen nghiep tại Việt Nam Tutor
Đọc tiếp “Hướng dẫn chi tiết cách cài đặt WordPress” »

VN:F [1.9.22_1171]
Rating: 7.0/7 (1 vote cast)

Bài viết đầu tiên

Xin chào các bạn, đây là bài viết đầu tiên của mình và cũng là bài viết đầu tiên trên Việt Nam Tutor. Rất mong nhận được sự ủng hộ của toàn thể bạn đọc!

Tại sao lại là Việt Nam Tutor?

Tutor nghĩa là gia sư, dạy riêng, dạy kèm. Tuy nhiên tiêu chí của blog sẽ là chia sẻ, hướng dẫn và thực hành; người biết sẽ hướng dẫn cho người chưa biết; người biết nhiều hơn sẽ hướng dẫn, giúp đỡ người biết ít. Vì vậy rất mong nhận được sự giúp đỡ của toàn thể các bạn.

Việt Nam Tutor có gì?

vietnamtutor huong dan lam blog dien dan tại Việt Nam TutorTại Việt Nam Tutor các bạn sẽ cùng mình tìm hiểu về các thủ thuật WordPress, WordPress Plugins, WordPress Themes và các dịch vụ hosting domain. Đặc biệt Việt Nam Tutor sẽ cố gắng viết hướng dẫn chi tiết, đầy đủ code mẫu, link ví dụ trực quan giúp các bạn có thể hình dung + thực hành nhanh chóng, dễ hiểu nhất. Mình không giỏi, cũng không pro nhưng sẽ trả lời và giải đáp mọi thắc mắc của các bạn trong khả năng của mình. Vậy nên đừng ngại liên hệ với Việt Nam Tutor qua email [email protected] hoặc skype: vietnamtutor.

Văn phong mình còn lủng củng, nhiều sai sót, mong các bạn cho “gạch” để xây nhà dần dần:p

Cảm ơn các bạn đã theo dõi:D

VN:F [1.9.22_1171]
Rating: 7.0/7 (2 votes cast)