Tất cả về VPS: cài VPS, chuyển web về, backup, tối ưu, tường lửa…

Vì mỗi lần cài lại VPS là mỗi lần mình lại đi search các câu lệnh, rất mất thời gian mà đôi khi lại bị sai xót nên mình tổng hợp lại thành một bài duy nhất, trước giờ vẫn ém làm của riêng, giờ thì mình share ai có dùng thì dùng, không dùng cũng không sao :) Tất cả các bước dưới đây mình đều làm trên VPS digitalocean.

vps

Đầu tiên

I.Cài VPS Lamp trên Centos 6.5

1. Cài đặt APACHE
——————

sudo yum install httpd
sudo service httpd start

2. Cài đặt MYSQL
——————

sudo yum install mysql-server
sudo service mysqld start
sudo /usr/bin/mysql_secure_installation

cứ Enter + và chọn Y

3. Cài đặt PHP
——————

sudo yum install php php-mysql

4. Tự động chạy khi khởi động
——————

sudo chkconfig httpd on
sudo chkconfig mysqld on

Khởi động lại Apache

sudo service httpd restart

II. Add tên miền vào VPS

1. Tạo thư mục chưa Source
——————-

sudo mkdir -p /var/www/example.com/public_html

2.Chmod cho thư mục
——————-

sudo chown -R apache:apache /var/www/example.com/public_html
sudo chmod 755 /var/www

3. Chỉnh sửa httpd.conf
——————-
sudo nano /etc/httpd/conf/httpd.conf tất nhiên bạn có thể dùng các chường trình edit khác. ( Mình thì dùng FileZilla chỉnh sửa cho nhanh)

thêm dòng sau đây

<VirtualHost *:80>
 ServerAdmin [email protected]
 DocumentRoot /var/www/example.com/public_html
 ServerName www.example.com
 ServerAlias example.com
 ErrorLog /var/www/example.com/error.log
 CustomLog /var/www/example.com/requests.log common
 </VirtualHost>

4.Khởi động lại Apache
——————-

sudo apachectl -k stop
sudo /etc/init.d/httpd start

5.Virtual Hosts
—————–
Trong trường hợp thêm nhiều website bạn vẫn add tương tự như trên nhưng thêm dòng sau vào httpd.conf

NameVirtualHost *:80

III. Tạo Database + User

1.Đăng nhập vào MySQL
—————–

mysql -u root -p

2.Tạo database
—————–

create database dbname;

3.Tạo user
———–

create user 'username'@'localhost' identified by 'password';

4.Connect Database + User

——————

grant all on dbname.* to username@localhost;
FLUSH PRIVILEGES;
 exit

IV. Upload source + Import databse

Đầu tiên bạn vào website bạn đang dùng nén source lại và đặt tên là source.zip, export database và đặt tên là database.sql.tar cả 2 file đặt ở thư mục gốc của website.

1.Chuyển Source từ host cũ lên VPS mới
—————–

chuyển đến thư mục gốc website.

cd /var/www/example.com/public_html

Download source về VPS.

wget https://domain.com/source.zip

giải nén.

unzip source.zip

Trong trường hợp chưa cài wget và unzip thì bạn gõ các lệnh sau:

yum install wget
yum install unzip
yum install tar
yum install gzip

2.Import Database
——————-

cd /var/www/example.com/public_html
wget https://domain.com/database.sql.tar
gunzip *.sql.gz
mysql -u username -p'password' dbname < *.sql

3.Chỉnh wp-config.php và edit user + database giống như lúc tạo

 

V. Trong trường hợp bị lỗi không update và cái đặt Plugin được thì các bạn gõ lên sau:

cd /var/www/example.com/public_html
chown -R apache:apache *

VI. Kích hoạt MOD_REWRITE

Chỉnh sửa file httpd.conf

nano /etc/httpd/conf/httpd.conf

Tìm dòng

<Directory “/var/www/html”>

đổi dòng AllowOverride None thành AllowOverride All

Khởi động

service httpd restart

VII. Cài đặt CSF làm tường lửa và chống DDoS

1.Cài đặt CSF

rm -fv csf.tgz
 wget https://www.configserver.com/free/csf.tgz
 tar -xzf csf.tgz
 cd csf
 sh install.sh

2.Cấu hình CSF

chỉnh sửa file /etc/csf/csf.conf

Cho phép CSF

mặc định TESTING = “1” chỉnh lại thành

TESTING = "0"

Giới hạn số connect từ 1 IP

CT_LIMIT = "500"

Đổi thành Email của bạn để nhận thông báo bảo mật từ VPS

LF_ALERT_TO = "your_email@your_domain.com"

Mỗi IP được 20 kết nối từ cổng 80

CONNLIMIT = "80;20"

Nếu nhiều hơn 20 kết nối tcp đến port 80 trong vòng 5s thì block IP đó tối thiểu 5s tính từ packet cuối cùng của IP đó. Sau 5s IP đó sẽ tự động được unlock và truy cập bình thường.

PORTFLOOD = "80;tcp;20;5"

Sau đó gõ lệnh

csf -x

để tắt CSF

và lệnh

csf -e

để chạy CSF

3. Kiểm tra Website có bị DDoS hay không bằng lệnh

a.Chỉ kiểm tra kết nối cổng 80

netstat -ntu | grep ':80' | awk '{print $5}' | sed 's/::ffff://' | cut -f1 -d ':' | sort | uniq -c | sort -n

b.Kiểm tra tất cả các kết nối

netstat -ntu | grep ':' | awk '{print $5}' | sed 's/::ffff://' | cut -f1 -d ':' | sort | uniq -c | sort -n

c.Mấy cái IP nào có nhiều kết nối thì Block lại mình thì cứ trên 300 là block bằng lệnh

csf -d ip (trong đó ip là địa chỉ IP cần block)

d.Mở IP đã block trước đó bằng lệnh

csf -dr ip (trong đó ip là địa chỉ IP đã block trước đó)

Hoặc bạn không cần làm 2 bước c + d nhưng có thể update vào file csf.deny tất nhiên khi update xong bạn cần phải khởi động lại csf để tuyd chỉnh có hiệu lực.

csf -r

4. Các IP nên thêm vào White list để tránh bị Ban oan

Google bot

216.239.32.0/19
64.233.160.0/19
72.14.192.0/18
209.85.128.0/17
66.102.0.0/20
74.125.0.0/16
66.249.64.0/19

Cloudflare

199.27.128.0/21
173.245.48.0/20
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
197.234.240.0/22
198.41.128.0/17
162.158.0.0/15
104.16.0.0/12
2400:cb00::/32
2606:4700::/32
2803:f800::/32
2405:b500::/32
2405:8100::/32

VIII. Chỉnh lại múi giờ

Để kiểm tra múi giờ bạn gõ lệnh

date

trong trường hợp không đúng múi giờ bạn update lại như sau:

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime

sau đó kiểm tra lại

date

IX. Giải phóng RAM cho VPS

Tạo 1 tập tin /root/cacheclear.sh với nội dung sau:

#!/bin/sh
sudo sh -c "sync; echo 3 > /proc/sys/vm/drop_caches"

Quy định 1 giờ sẽ giải phóng RAM 1 lần

sudo crontab -e
0 * * * * /root/cacheclear.sh

Lưu lại và thoát ra. Từ giờ VPS của bạn sẽ được giải phóng RAM mỗi giờ 1 lần :)

X. Tạo File Backup Tự Động Cho VPS

Tạo tập tin /root/backup.sh với nội dung:

#!/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")/yourdomain.com/
 
 echo "Starting backup database for yourdomain.com..."
 mysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u TaiKhoanUser -h 127.0.0.1 -p'MatKhau' DataBase | gzip -9 > /var/backups/$(date +"%Y-%m-%d")/yourdomain.com/db_$(date +"%Y-%m-%d").sql.gz
 echo "Starting backup files for yourdomain.com..."
 zip -r /var/backups/$(date +"%Y-%m-%d")/yourdomain.com/file_$(date +"%Y-%m-%d").zip /var/www/yourdomain.com/public_html/
} | /usr/sbin/sendmail "[email protected]"

Chú ý: nhớ thay đôi Domain + User + Database cho phù hợp

Quy định 1 ngày backup một lần:

crontab -e

Nhận o để thêm dòng mới với nội dung:

0 0 * * * /root/backup.sh >/dev/null 2>&1

Để lưu lại và thoát bạn nhấn ESC, rồi gõ vào :wq nhấn Enter.

Chú ý: Set quyền thực thi cho tập tin backup.sh, trong trường hợp bị lỗi /bin/sh^M: bad interpreter: No such file or directory thì làm như sau:

sửa file backup bằng lệnh vi

vi /root/backup.sh

Chuyển sang định dạng unix

:set ff=unix

Lưu và thoát khỏi vi bằng lệnh

:x

Làm tương tự với file cacheclear.sh

2 thoughts on “Tất cả về VPS: cài VPS, chuyển web về, backup, tối ưu, tường lửa…”

  1. X. Cache cho MySQL
    ———————————————————-
    mysql -u root -p
    show variables like ‘%query_cache%’;
    show status like ‘%qcache%’;
    Qcache_free_memory: Lượng RAM giành riêng cho việc cache. (26300528 ~ 30MB)
    Qcache_hits: Số lượng Query lấy từ cache ra sử dụng.
    Qcache_lowmem_prunes: Lượng RAM tối thiểu được thêm vào khi lượng Qcache_free_memory bị sử dụng hết. Nếu số lượng này quá lớn, nghĩa là Qcache_lowmem_prunes sẽ phải tự thông thêm RAM vào cache và lúc này bạn cần tăng Qcache_free_memory lên. Nếu gặp giá trị bằng 0
    Qcache_queries_in_cache: Số query đang được cache.

    SET GLOBAL query_cache_type = ON;
    SET GLOBAL query_cache_size = 268435456;

Leave a Reply

Your email address will not be published. Required fields are marked *