Trang chủ » làm thế nào để » Tinh chỉnh một máy chủ web ảo chuyên dụng

    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]

    • 1. Sơ lượt
    • Cấu hình 2 Linux
      • 2.1 Vô hiệu hóa DNS
      • 2.2 Vô hiệu hóa SpamAssassain
      • 2.3 Vô hiệu hóa xinetd
      • 2.4 Giới hạn sử dụng bộ nhớ Plesk
      • 2.5 Vô hiệu hóa hoặc Tắt Plesk (tùy chọn)
    • 3 Cấu hình MySQL
      • 3.1 Kích hoạt Cache truy vấn
      • 3.2 Vô hiệu hóa TCP / IP
    • 4 Cấu hình Apache
    • Cấu hình 5 PHP
      • 5.1 Loại bỏ các mô-đun PHP không cần thiết
      • 5.2 Bộ đệm ẩn mã hóa PHP
    • 6 bản sao lưu
      • 6.1 Tạo tập lệnh sao lưu tự động
      • 6.2 Đồng bộ hóa sao lưu ngoài trang web với Rsync
    • 7 Bảo mật
      • 7.1 Vô hiệu hóa Đăng nhập gốc qua SSH
      • 7.2 Vô hiệu hóa SSH Phiên bản 1
      • 7.3 Khởi động lại máy chủ SSH
      • 7.4 Kiểm tra cổng mở
      • 7.5 Thiết lập tường lửa
    • 8 Xem thêm
    • 9 Tài liệu tham khảo

    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