Auto Restart Apache Mysql Trên VPS
‘- VPS Unmanaged được rất nhiều các Webmaster sử dụng để tiết kiệm chi phí cho Hosting. Một số nhà cung cấp VPS Unmanaged uy tín đó là : Digital Ocean(DO), Vultr…
– Việc sử dụng VPS Unamaged đảm bảo được tốc độ truy xuất web, tiết kiệm tối đa chi phí, không bị phụ thuộc vào nhà cung cấp Hosting, ít bị trễ…Tuy nhiên nhược điểm lớn nhất của VPS đó là rất dễ died, mất kết nối tới database: Error establishing a database connection
– Điều này xảy ra thường xuyên nếu chúng ta không tối ưu VPS: Apache, Mysql, Cache, source code: kết nối tới Database nhiều…làm cho VPS không thể xử lý được và gây ra lỗi Error establishing a database connection, nhiều trường hợp còn treo VPS do CPU quá tải.
– Giải pháp khắc phục tình trạng này đó là kiểm soát Apache, Mysql, CPU nếu không có trong process list thì khởi động lại dịch vụ hoặc khởi động lại VPS.
– Để làm được việc này chúng ta cần phải sử dụng đến tính năng Cronjob trong Linux để thực thi các Shell Script:
Script Auto Restart Apache
– Để tự động tìm kiếm service Apache và khởi động lại Apache nếu không thấy trong Process List thì chúng ta tạo file autorestartapache.sh với nội dung:
#!/bin/sh ps auxw , grep apache2 , grep -v grep > /dev/null if [ $? != 0 ] then /etc/init.d/apache2 start > /dev/null fi
Script Auto Restart Mysql
– Để tự động tìm kiếm service Mysql và khởi động lại Mysql nếu không thấy trong Process List thì chúng ta tạo file autorestartmysql.sh với nội dung:
#!/bin/bash /usr/bin/mysqladmin ping, grep 'mysqld is alive' > /dev/null 2>&1 if [ $? != 0 ] then sudo service mysql restart fi
Sử Dụng CronTab Để Thực Thi Shell Script
Sau khi tạo được 2 file trên, chúng ta bắt đầu sử dụng Cronjob để lập lịch cho 2 file này chạy với câu lệnh:
crontab -e
Chmod 0755 cho các file Và điền nội dung thực thi 2 file autorestartapache.sh, autorestartmysql.sh :
* * * * * sh -x /home/autorestartmysql.sh * * * * * sh -x /home/autorestartapache.sh
Như vậy chỉ với vài thao tác nhỏ chúng ta đã có thể khắc phục được lỗi không kết nối tới database trên VPS. Ngoài ra với tính các tính năng của Cronjob trên Linux chúng ta có thể tạo lệnh tự động khởi động lại VPS nếu CPU quá tải hoặc tự động khởi động lại VPS theo thời gian đặt trước.