Tinh chỉnh một máy chủ web ảo chuyên dụng
Khi bạn có một máy chủ ảo chuyên dụng để chạy trang web của mình, rất có thể nó được cấu hình cho mọi người và không được tùy chỉnh để tối đa hóa hiệu suất để chạy một trang web.
Nội dung[ẩn giấu]
|
Tổng quan
Có một số lĩnh vực vấn đề mà chúng tôi muốn tối đa hóa hiệu suất:
- Cấu hình Linux
Thường có những dịch vụ đang chạy mà không cần, lãng phí bộ nhớ có thể được sử dụng cho nhiều kết nối hơn. - Cấu hình MySQL
Thông thường các cài đặt mặc định dựa trên một máy chủ nhỏ, chúng tôi có thể thêm một vài thay đổi chính để tăng hiệu suất rất nhiều. - Cấu hình Apache
Theo mặc định, hầu hết các nhà cung cấp dịch vụ lưu trữ đều cài đặt apache với gần như mọi mô-đun được cài đặt. Không có lý do để tải các mô-đun nếu bạn chưa từng sử dụng chúng. - Cấu hình PHP
Cấu hình PHP mặc định tương tự nhau, thường có rất nhiều mô-đun bổ sung không cần thiết được cài đặt. - Bộ đệm ẩn mã hóa PHP
Thay vì cho phép PHP biên dịch lại các tập lệnh mỗi lần, bộ đệm opcode sẽ lưu trữ các tập lệnh đã biên dịch trong bộ nhớ để tăng hiệu năng rất lớn. - Sao lưu
Có lẽ nên thiết lập một số bản sao lưu tự động, vì nhà cung cấp dịch vụ lưu trữ của bạn sẽ không làm điều đó cho bạn. - Bảo vệ
Chắc chắn, Linux là đủ an toàn theo mặc định, nhưng thường có một số vấn đề bảo mật rõ ràng mà bạn có thể khắc phục với một vài cài đặt nhanh.
Cấu hình Linux
Có khá nhiều điều chỉnh bạn có thể thực hiện, nó sẽ thay đổi đôi chút dựa trên máy chủ bạn đang sử dụng. Những chỉnh sửa này dành cho một máy chủ chạy CentOS, nhưng chúng nên hoạt động cho phần lớn các máy chủ DV.
Vô hiệu hóa DNS
Nếu nhà cung cấp dịch vụ lưu trữ của bạn xử lý DNS cho tên miền của bạn (có thể), thì bạn có thể vô hiệu hóa dịch vụ DNS chạy.
vô hiệu hóa dns /etc/init.d/named stop chmod 644 /etc/init.d/named
Lệnh chmod loại bỏ quyền thực thi khỏi tập lệnh, ngăn không cho nó chạy khi khởi động.
Vô hiệu hóa SpamAssassain
Nếu bạn không sử dụng tài khoản email trên chính máy chủ của mình, bạn không nên chạy các công cụ chống thư rác. (Ngoài ra, bạn nên xem Google Apps, giải pháp email tốt hơn nhiều)
/etc/init.d/psa-spamassassin dừng chmod 644 /etc/init.d/psa-spamassassin
Vô hiệu hóa xinetd
Quá trình xinetd chứa một số quy trình khác, không có quy trình nào hữu ích cho máy chủ web thông thường.
/etc/init.d/xinetd dừng chmod 644 /etc/init.d/xinetd
Hạn chế sử dụng bộ nhớ Plesk
Nếu bạn sử dụng bảng điều khiển plesk, bạn có thể buộc nó sử dụng ít bộ nhớ hơn bằng cách thêm tệp tùy chọn.
vi /usr/local/psa/admin/conf/htt nhặt.custom.include
Thêm các dòng sau vào tập tin:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxCl Client 5
Lưu ý rằng tùy chọn này được biết là hoạt động trên các máy chủ MediaTemple DV, nhưng chưa được kiểm tra trên bất kỳ máy chủ nào khác. (Xem tài liệu tham khảo)
Vô hiệu hóa hoặc Tắt Plesk (tùy chọn)
Nếu bạn chỉ sử dụng Plesk mỗi năm một lần, có rất ít lý do để cho nó chạy. Lưu ý rằng bước này là hoàn toàn tùy chọn và nâng cao hơn một chút.
Chạy lệnh sau để tắt plesk:
/etc/init.d/psa dừng lại
Bạn có thể vô hiệu hóa nó khi chạy khi khởi động bằng cách chạy lệnh sau:
chmod 644 /etc/init.d/psa
Lưu ý rằng nếu bạn tắt nó, thì bạn không thể khởi động thủ công mà không thay đổi quyền truy cập tệp trở lại (chmod u + x).
Cấu hình MySQL
Bật Cache truy vấn
Mở tệp /etc/my.cnf của bạn và thêm các dòng sau vào phần [mysqld] của bạn như thế này:
[mysqld] query-cache-type = 1 query-cache-size = 8M
Bạn có thể thêm nhiều bộ nhớ vào bộ đệm truy vấn nếu bạn muốn, nhưng đừng sử dụng quá nhiều.
Vô hiệu hóa TCP / IP
Một số lượng đáng ngạc nhiên các máy chủ cho phép truy cập vào MySQL trên TCP / IP theo mặc định, điều này không có ý nghĩa đối với một trang web. Bạn có thể biết liệu mysql có đang nghe trên TCP / IP hay không bằng cách chạy lệnh sau:
netstat -an | grep 3306
Để vô hiệu hóa, hãy thêm dòng sau vào tệp /etc/my.cnf của bạn:
bỏ qua mạng
Cấu hình Apache
Mở tệp httpd.conf của bạn, thường được tìm thấy trong /etc/httpd/conf/httpd.conf
Tìm dòng giống như thế này:
Hết thời gian 120
Và thay đổi nó thành này:
Hết giờ 20
Bây giờ hãy tìm phần bao gồm các dòng này và điều chỉnh tương tự:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxCl Client 100 MaxRequestsPerChild 4000
Cấu hình PHP
Một trong những điều cần lưu ý khi điều chỉnh máy chủ trên nền tảng PHP là mỗi luồng apache duy nhất sẽ tải lên PHP ở một vị trí riêng biệt trong bộ nhớ. Điều này có nghĩa là nếu một mô-đun không được sử dụng thêm 256k bộ nhớ vào PHP, trên 40 luồng apache bạn đang lãng phí 10 MB bộ nhớ.
Loại bỏ các mô-đun PHP không cần thiết
Bạn sẽ cần xác định vị trí tệp php.ini, thường được tìm thấy tại /etc/php.ini (Lưu ý rằng trên một số bản phân phối, sẽ có một thư mục /etc/php.d/ với một số tệp .ini, một cho mỗi mô-đun.
Nhận xét bất kỳ dòng loadmodule nào với các mô-đun này:
- tỷ lệ
- snmp
- pdo
- pdo odbc
- mysqli
- máy nạp ion
- json
- imap
- ldap
- lời khuyên
Todo: Thêm thông tin ở đây.
Bộ đệm ẩn mã hóa PHP
Có một số bộ đệm opcode mà bạn có thể sử dụng, bao gồm APC, eAccelerator và Xcache, cái cuối cùng là sở thích cá nhân của tôi do tính ổn định.
Tải xuống xcache và giải nén nó vào một thư mục, rồi chạy các lệnh sau từ thư mục nguồn xcache:
phpize ./cool --enable-xcache thực hiện cài đặt
Mở tệp php.ini của bạn và thêm một phần mới cho xcache. Bạn sẽ cần điều chỉnh đường dẫn nếu các mô-đun php của bạn được tải từ nơi khác.
vi /etc/php.ini
Thêm phần sau vào tệp:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere" Thay đổi xcache.size để điều chỉnh kích thước của opcode cache xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Thay đổi xcache.var_size để điều chỉnh kích thước của bộ đệm biến xcache.var_size = 1M xcache.var_count = 1 xcache.var_slots = 8K xcache.var_ttl = 0 xcache.var_maxttl = 0 xcache.var_g Trên xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Trên xcache.stat = Trên xcache.optimizer = Tắt
Todo: Cần mở rộng điều này một chút và liên kết đến xcache trong tài liệu tham khảo.
Sao lưu
Có rất ít quan trọng hơn việc sao lưu tự động trang web của bạn. Bạn có thể nhận được các bản sao lưu chụp nhanh từ nhà cung cấp dịch vụ lưu trữ của mình, điều này cũng rất hữu ích, nhưng tôi cũng thích có các bản sao lưu tự động..
Tạo tập lệnh sao lưu tự động
Tôi thường bắt đầu bằng cách tạo thư mục / backups, với thư mục / backups / files bên dưới nó. Bạn có thể điều chỉnh các đường dẫn này nếu bạn muốn.
mkdir -p / sao lưu / tập tin
Bây giờ tạo một tập lệnh backup.sh bên trong thư mục sao lưu:
vi /backups/backup.sh
Thêm phần sau vào tệp, điều chỉnh đường dẫn và mật khẩu mysqldump nếu cần:
#! / bin / sh THEDATE = "ngày +% d% m% y% H% M" mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak tar -cf / sao lưu / tệp dự phòng .tar / var / www / vhosts / my-website-path / httpdocs gzip /backups/files/sitBackup$THEDATE.tar find / backups / files / site * -mtime +5 -exec rm \; tìm / sao lưu / tập tin / db * -mtime +5 -exec rm \;
Tập lệnh trước tiên sẽ tạo một biến ngày để tất cả các tệp sẽ được đặt tên giống nhau cho một bản sao lưu, sau đó kết xuất cơ sở dữ liệu, chỉnh sửa các tệp web và gzips chúng. Các lệnh find được sử dụng để xóa bất kỳ tệp nào cũ hơn 5 ngày, vì bạn không muốn ổ đĩa của mình hết dung lượng.
Làm cho tập lệnh thực thi bằng cách chạy lệnh sau:
chmod u + x /backups/backup.sh
Tiếp theo bạn sẽ cần chỉ định nó chạy tự động bằng cron. Đảm bảo rằng bạn sử dụng tài khoản có quyền truy cập vào thư mục sao lưu.
crontab -e
Thêm dòng sau vào crontab:
1 1 * * * /backups/backup.sh
Bạn có thể kiểm tra tập lệnh trước thời hạn bằng cách chạy tập lệnh trong khi đăng nhập vào tài khoản người dùng. (Tôi thường chạy các bản sao lưu dưới dạng root)
Đồng bộ hóa sao lưu ngoài trang web với Rsync
Bây giờ bạn đã sao lưu tự động máy chủ của mình đang chạy, bạn có thể đồng bộ hóa chúng ở một nơi khác bằng cách sử dụng tiện ích rsync. Bạn sẽ muốn đọc bài viết này về cách thiết lập các khóa ssh để đăng nhập tự động: Thêm khóa SSH công khai vào máy chủ từ xa trong một lệnh
Bạn có thể kiểm tra điều này bằng cách chạy lệnh này trên máy linux hoặc Mac ở một vị trí khác (tôi có máy chủ linux ở nhà, nơi tôi chạy lệnh này)
rsync -a [email protected]: / sao lưu / tập tin / * / offsitBackups /
Việc này sẽ mất khá nhiều thời gian để chạy lần đầu tiên, nhưng cuối cùng, máy tính cục bộ của bạn sẽ có một bản sao của thư mục tệp trong thư mục / offsitBackups /. (Đảm bảo tạo thư mục đó trước khi chạy tập lệnh)
Bạn có thể lên lịch cho việc này bằng cách thêm nó vào dòng crontab:
crontab -e
Thêm dòng sau, dòng này sẽ chạy rsync mỗi giờ ở mốc 45 phút. Bạn sẽ nhận thấy rằng chúng tôi sử dụng đường dẫn đầy đủ để rsync tại đây.
45 * * * * / usr / bin / rsync -a [email protected]: / sao lưu / tập tin / * / offsitBackups /
Bạn có thể lên lịch để chạy vào một thời điểm khác nhau, hoặc chỉ một lần mỗi ngày. Điều đó thực sự tùy thuộc vào bạn.
Lưu ý rằng có rất nhiều tiện ích sẽ cho phép bạn đồng bộ hóa thông qua ssh hoặc ftp. Bạn không phải sử dụng rsync.
Bảo vệ
Điều đầu tiên bạn muốn làm là đảm bảo rằng bạn có tài khoản người dùng thông thường để sử dụng thông qua ssh và đảm bảo rằng bạn có thể sử dụng su để chuyển sang root. Đó là một ý tưởng rất tệ khi cho phép đăng nhập trực tiếp vào root qua ssh.
Vô hiệu hóa đăng nhập gốc qua SSH
Chỉnh sửa tệp / etc / ssh / sshd_config và tìm dòng sau:
#PermitRootLogin có
Thay đổi dòng đó để trông như thế này:
PermitRootLogin không
Hãy chắc chắn rằng bạn có tài khoản người dùng thông thường và có thể su để root trước khi bạn thực hiện thay đổi này, nếu không bạn có thể tự khóa.
Vô hiệu hóa SSH Phiên bản 1
Thực sự không có lý do để sử dụng bất cứ thứ gì ngoài SSH phiên bản 2, vì nó an toàn hơn các phiên bản trước. Chỉnh sửa tệp / etc / ssh / sshd_config và tìm phần sau:
#Protocol 2.1 Giao thức 2
Đảm bảo rằng bạn chỉ sử dụng Giao thức 2 như được hiển thị.
Khởi động lại máy chủ SSH
Bây giờ bạn sẽ cần khởi động lại máy chủ SSH để thực hiện việc này.
/etc/init.d/sshd khởi động lại
Kiểm tra cổng mở
Bạn có thể sử dụng lệnh sau để xem cổng nào mà máy chủ đang nghe:
netstat -an | grep LISTEN
Bạn thực sự không nên nghe bất cứ điều gì ngoài các cổng 22, 80 và có thể là 8443 cho plesk.
Thiết lập tường lửa
Bài chi tiết: Sử dụng Iptables trên Linux
Bạn có thể tùy chọn thiết lập tường lửa iptables để chặn nhiều kết nối hơn. Chẳng hạn, tôi thường chặn truy cập vào bất kỳ cổng nào khác ngoài mạng làm việc của tôi. Nếu bạn có một địa chỉ IP động, bạn sẽ muốn tránh tùy chọn đó.
Nếu bạn đã làm theo tất cả các bước trong hướng dẫn này cho đến nay, có lẽ không cần thiết phải thêm tường lửa vào hỗn hợp, nhưng thật tốt để hiểu các tùy chọn của bạn.
Xem thêm
- Sử dụng Iptables trên Linux
Tài liệu tham khảo
- Tối ưu hóa máy chủ DV của bạn (mediHRple.net)
- XCache