Домашняя » как » Настройка выделенного виртуального веб-сервера

    Настройка выделенного виртуального веб-сервера

    Когда вы получаете выделенный виртуальный сервер для запуска вашего сайта, велика вероятность того, что он настроен для всех и не настроен для максимизации производительности для запуска сайта.

    содержание

    [скрывать]

    • 1 Обзор
    • 2 Конфигурация Linux
      • 2.1 Отключить DNS
      • 2.2 Отключить SpamAssassain
      • 2.3 Отключить xinetd
      • 2.4 Ограничение использования памяти Plesk
      • 2.5 Отключить или отключить Plesk (опция)
    • 3 Конфигурация MySQL
      • 3.1 Включить Query Cache
      • 3.2 Отключить TCP / IP
    • 4 Конфигурация Apache
    • 5 Конфигурация PHP
      • 5.1 Удалить ненужные модули PHP
      • 5.2 PHP кэш кода операции
    • 6 Резервные
      • 6.1 Создание сценария автоматического резервного копирования
      • 6.2 Синхронизация резервных копий вне сайта с помощью Rsync
    • 7 Безопасность
      • 7.1 Отключить root-вход через SSH
      • 7.2 Отключить SSH версии 1
      • 7.3 Перезагрузите SSH-сервер
      • 7.4 Проверка открытых портов
      • 7.5 Настройка брандмауэра
    • 8 Смотрите также
    • 9 Ссылки

    обзор

    Есть ряд проблемных областей, где мы хотим максимизировать производительность:

    • Конфигурация Linux
      Обычно работают запущенные сервисы, которые не нужны, тратя память, которую можно использовать для большего количества соединений.
    • Конфигурация MySQL
      Часто настройки по умолчанию основаны на небольшом сервере, мы можем добавить несколько ключевых изменений, чтобы значительно повысить производительность.
    • Конфигурация Apache
      По умолчанию большинство хостинг-провайдеров устанавливают apache практически с каждым установленным модулем. Нет причин загружать модули, если вы никогда не собираетесь их использовать.
    • Конфигурация PHP
      Конфигурация PHP по умолчанию аналогично раздутая, обычно устанавливается множество ненужных дополнительных модулей.
    • Кэш опкода PHP
      Вместо того, чтобы разрешать PHP перекомпилировать скрипты каждый раз, кэш кода операции будет кэшировать скомпилированные скрипты в памяти для огромного повышения производительности..
    • Резервные копии
      Вероятно, следует настроить автоматическое резервное копирование, так как ваш хостинг-провайдер не собирается делать это за вас.
    • Безопасность
      Конечно, по умолчанию Linux достаточно безопасен, но обычно есть некоторые явные проблемы с безопасностью, которые можно исправить с помощью нескольких быстрых настроек..

    Конфигурация Linux

    Вы можете сделать множество настроек, которые будут немного отличаться в зависимости от сервера, который вы используете. Эти настройки предназначены для сервера под управлением CentOS, но они должны работать для большинства серверов DV..

    Отключить DNS

    Если ваш хостинг-провайдер обрабатывает DNS для вашего домена (скорее всего), то вы можете отключить запуск службы DNS.

    отключить dns /etc/init.d/named stop chmod 644 /etc/init.d/named

    Команда chmod удаляет разрешение на выполнение из скрипта, останавливая его запуск при запуске.

    Отключить SpamAssassain

    Если вы не используете учетные записи электронной почты на самом сервере, вам не следует беспокоиться о запуске средств защиты от спама. (Также вы должны проверить Google Apps, гораздо лучшее решение для электронной почты)

    /etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin

    Отключить xinetd

    Процесс xinetd содержит ряд других процессов, ни один из которых не подходит для типичного веб-сервера..

    /etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd

    Ограничить использование памяти Plesk

    Если вы используете панель plesk, вы можете заставить ее использовать меньше памяти, добавив файл опций.

    vi /usr/local/psa/admin/conf/httpsd.custom.include

    Добавьте следующие строки в файл:

    MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5

    Обратите внимание, что эта опция работает на серверах MediaTemple DV, но не проверялась ни на каких других. (Ссылки)

    Отключить или отключить Plesk (необязательно)

    Если вы используете Plesk только один раз в год, у вас будет очень мало причин вообще его запускать. Обратите внимание, что этот шаг не является обязательным, и немного более продвинутым.

    Выполните следующую команду, чтобы отключить plesk:

    /etc/init.d/psa stop

    Вы можете отключить его запуск при запуске, выполнив следующую команду:

    chmod 644 /etc/init.d/psa

    Обратите внимание, что если вы отключите его, то вы не сможете запустить его вручную, не вернув обратно права доступа к файлу (chmod u + x).

    Конфигурация MySQL

    Включить Query Cache

    Откройте ваш файл /etc/my.cnf и добавьте следующие строки в раздел [mysqld] следующим образом:

    [mysqld] query-cache-type = 1 query-cache-size = 8M

    Вы можете добавить больше памяти в кеш запросов, если хотите, но не используйте слишком много.

    Отключить TCP / IP

    Удивительное количество хостов по умолчанию обеспечивает доступ к MySQL по TCP / IP, что не имеет смысла для веб-сайта. Вы можете выяснить, прослушивает ли mysql TCP / IP, выполнив следующую команду:

    netstat -an | grep 3306

    Чтобы отключить, добавьте следующую строку в ваш файл /etc/my.cnf:

    скип-сетей

    Конфигурация Apache

    Откройте файл httpd.conf, который часто находится в /etc/httpd/conf/httpd.conf

    Найдите строку, которая выглядит следующим образом:

    Тайм-аут 120

    И изменить это на это:

    Тайм-аут 20

    Теперь найдите раздел, который включает эти строки, и настройте что-то подобное:

    StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000

    Конфигурация PHP

    При настройке сервера на платформе PHP нужно помнить, что каждый отдельный поток Apache будет загружать PHP в отдельном месте в памяти. Это означает, что если неиспользуемый модуль добавляет 256 КБ памяти в PHP, в 40 потоках Apache вы тратите 10 МБ памяти..

    Удалить ненужные модули PHP

    Вам нужно найти файл php.ini, который обычно находится в /etc/php.ini (обратите внимание, что в некоторых дистрибутивах будет каталог /etc/php.d/ с несколькими файлами .ini, по одному на каждый модуль.

    Закомментируйте любые строки loadmodule с этими модулями:

    • ODBC
    • SNMP
    • п.д.о.
    • odbc pdo
    • MySQLi
    • IonCube-погрузчик
    • JSON
    • IMAP
    • LDAP
    • Ncurses

    Todo: Добавить больше информации здесь.

    Кэш опкода PHP

    Вы можете использовать несколько кэшей кода операции, включая APC, eAccelerator и Xcache, последний из которых является моим личным предпочтением из-за стабильности.

    Загрузите xcache и распакуйте его в каталог, а затем выполните следующие команды из исходного каталога xcache:

    phpize ./configure --enable-xcache make make install

    Откройте файл php.ini и добавьте новый раздел для xcache. Вам нужно будет отрегулировать пути, если ваши модули php загружены откуда-то еще.

    vi /etc/php.ini

    Добавьте следующий раздел в файл:

    [xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere" [xcache]; Измените xcache.size, чтобы настроить размер кэша кода операции. Xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Измените xcache.var_size, чтобы отрегулировать размер кэша переменных. Xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = вкл. Xcache.stat = вкл. Xcache.optimizer = выкл.

    Todo: нужно немного расширить это и дать ссылку на xcache в ссылках.

    Резервные копии

    Это очень мало важнее, чем автоматическое резервное копирование вашего сайта. Вы можете получить резервные копии снимков от своего хостинг-провайдера, что также очень полезно, но я предпочитаю также иметь автоматические резервные копии.

    Создать сценарий автоматического резервного копирования

    Я обычно начинаю с создания каталога / backups с каталогом / backups / files под ним. Вы можете настроить эти пути, если хотите.

    mkdir -p / backups / files

    Теперь создайте скрипт backup.sh внутри каталога резервных копий:

    vi /backups/backup.sh

    Добавьте следующее в файл, корректируя пути и пароль mysqldump по мере необходимости:

    #! / bin / sh THEDATE = "дата +% d% m% y% H% M" mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak tar -cf / backups / files / sitebackup $ THEDATE .tar / var / www / vhosts / my-website-path / httpdocs gzip /backups/files/sitebackup$THEDATE.tar find / backups / files / site * -mtime +5 -exec rm  \; find / backups / files / db * -mtime +5 -exec rm  \;

    Сначала сценарий создаст переменную даты, поэтому все файлы будут названы одинаково для одной резервной копии, затем выгрузит базу данных, разберет веб-файлы и скопирует их. Команды поиска используются для удаления любых файлов старше 5 дней, так как вы не хотите, чтобы на диске не хватало места..

    Сделайте скрипт исполняемым, выполнив следующую команду:

    chmod u + x /backups/backup.sh

    Далее вам нужно назначить его для автоматического запуска cron. Убедитесь, что вы используете учетную запись, которая имеет доступ к каталогу резервных копий.

    crontab -e

    Добавьте следующую строку в crontab:

    1 1 * * * /backups/backup.sh

    Вы можете проверить скрипт заранее, запустив его во время входа в учетную запись пользователя. (Я обычно запускаю резервные копии как root)

    Синхронизация резервных копий вне сайта с Rsync

    Теперь, когда у вас есть автоматическое резервное копирование вашего сервера, вы можете синхронизировать их где-то еще с помощью утилиты rsync. Вы захотите прочитать эту статью о том, как настроить ssh-ключи для автоматического входа в систему: добавьте открытый SSH-ключ к удаленному серверу одной командой

    Вы можете проверить это, выполнив эту команду на компьютере с Linux или Mac в другом месте (у меня дома есть сервер Linux, где я и запускаю это)

    rsync -a [email protected]: / backups / files / * / offsitebackups /

    Это займет много времени для запуска в первый раз, но в конце ваш локальный компьютер должен иметь копию каталога файлов в каталоге / offsitebackups /. (Убедитесь, что создали этот каталог перед запуском скрипта)

    Вы можете запланировать это, добавив его в строку crontab:

    crontab -e

    Добавьте следующую строку, которая будет запускать rsync каждый час с отметкой 45 минут. Вы заметите, что мы используем полный путь к rsync здесь.

    45 * * * * / usr / bin / rsync -a [email protected]: / backups / files / * / offsitebackups /

    Вы можете запланировать его запуск в другое время или только один раз в день. Это действительно зависит от вас.

    Обратите внимание, что существует множество утилит, которые позволят вам синхронизироваться через ssh или ftp. Вам не нужно использовать rsync.

    Безопасность

    Первое, что вы хотите сделать, это убедиться, что у вас есть обычная учетная запись пользователя для использования через ssh, и убедитесь, что вы можете использовать su для переключения в root. Это очень плохая идея разрешить прямой вход в систему для root через ssh.

    Отключить рут-логин через SSH

    Отредактируйте файл / etc / ssh / sshd_config и найдите следующую строку:

    #PermitRootLogin да

    Измените эту строку, чтобы она выглядела так:

    PermitRootLogin нет

    Убедитесь, что у вас есть обычная учетная запись пользователя и вы можете войти в систему, прежде чем вносить эти изменения, в противном случае вы можете заблокировать себя.

    Отключить SSH версии 1

    На самом деле нет никакой причины использовать что-либо кроме SSH версии 2, так как это более безопасно, чем предыдущие версии. Отредактируйте файл / etc / ssh / sshd_config и найдите следующий раздел:

    # Протокол 2,1 Протокол 2

    Убедитесь, что вы используете только протокол 2, как показано.

    Перезагрузите SSH сервер

    Теперь вам нужно перезапустить сервер SSH, чтобы это вступило в силу.

    /etc/init.d/sshd restart

    Проверить наличие открытых портов

    Вы можете использовать следующую команду, чтобы увидеть, какие порты прослушивает сервер:

    netstat -an | grep LISTEN

    Вы действительно не должны слушать ничего кроме портов 22, 80 и, возможно, 8443 для plesk.

    Настройте брандмауэр

    Основная статья: Использование Iptables в Linux

    При желании вы можете настроить брандмауэр iptables для блокировки большего количества соединений. Например, я обычно блокирую доступ к любым другим портам, кроме как из моей рабочей сети. Если у вас есть динамический IP-адрес, вы хотите, чтобы избежать этой опции.

    Если вы уже выполнили все шаги, описанные в этом руководстве, возможно, нет необходимости добавлять брандмауэр в микшер, но хорошо понимать ваши варианты.

    Смотрите также

    • Использование Iptables в Linux

    Рекомендации

    • Оптимизация вашего DV сервера (mediatemple.net)
    • XCache